Skip to content

Commit 3e78006

Browse files
committed
improve missing cover handling
1 parent 8fc69e4 commit 3e78006

2 files changed

Lines changed: 24 additions & 6 deletions

File tree

pythonbits/bb.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,15 +1061,22 @@ def _render_summary(self):
10611061
'tags': [t['name'] for t in
10621062
sorted(rg.get('tag-list', []),
10631063
key=lambda t: int(t['count']))][-5:],
1064-
'media': [m.get('format', 'CD') for m in release['medium-list']],
1065-
'cover': mb.get_artwork(rg['id']),
1064+
'media': ([m.get('format', 'CD') for m in release['medium-list']]
1065+
if release else None),
10661066
}
10671067

10681068
@finalize
10691069
@form_field('image')
10701070
def _render_cover(self):
1071-
cover = self['summary']['cover']
1072-
assert cover is not None
1071+
release, rg = self['release']
1072+
cover = None
1073+
if release:
1074+
cover = mb.get_release_cover(release['id'])
1075+
cover = cover or mb.get_release_group_cover(rg['id'])
1076+
1077+
if cover is None:
1078+
cover = input('No cover art found, please manually type cover '
1079+
'location: ')
10731080
return cover
10741081

10751082
def _finalize_cover(self):

pythonbits/musicbrainz.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
musicbrainzngs.set_useragent(appname, version, github)
99

1010

11-
def get_artwork(release_group_id):
11+
def get_release_group_cover(release_group_id):
1212
try:
1313
data = musicbrainzngs.get_release_group_image_list(release_group_id)
1414
except musicbrainzngs.musicbrainz.ResponseError:
@@ -19,6 +19,17 @@ def get_artwork(release_group_id):
1919
return image["thumbnails"]["large"]
2020

2121

22+
def get_release_cover(release_id):
23+
try:
24+
data = musicbrainzngs.get_image_list(release_id)
25+
except musicbrainzngs.musicbrainz.ResponseError:
26+
return None
27+
28+
for image in data["images"]:
29+
if "Front" in image["types"] and image["approved"]:
30+
return image["thumbnails"]["large"]
31+
32+
2233
def find_release_group(release_title, artist=None):
2334
results = musicbrainzngs.search_release_groups(
2435
release_title, artist=artist, limit=10)['release-group-list']
@@ -74,7 +85,7 @@ def find_release(release_title, artist=None):
7485
print(terminaltables.SingleTable(table_data).table)
7586
while True:
7687
choice = input(
77-
"Select the exact release, if known: ")
88+
"Select the exact release, if known (Enter to skip): ")
7889
try:
7990
choice = results[int(choice)]
8091
except (IndexError, ValueError):

0 commit comments

Comments
 (0)