X-Git-Url: http://git.kaliko.me/?a=blobdiff_plain;f=sima%2Flib%2Fsimaecho.py;h=1ee17fd6e2dbdd60decbf1c4a95c36dc8eaa952d;hb=e9ed5c171c9251ef6ae7765b1406e2f5b2cb1c0d;hp=3f649a6575faf13849006403dd7e1493eb997641;hpb=7d24f8a6f0bb74de07c3e6d333a2948d9186be1b;p=mpd-sima.git diff --git a/sima/lib/simaecho.py b/sima/lib/simaecho.py index 3f649a6..1ee17fd 100644 --- a/sima/lib/simaecho.py +++ b/sima/lib/simaecho.py @@ -21,7 +21,7 @@ Consume EchoNest web service """ -__version__ = '0.0.3' +__version__ = '0.0.5' __author__ = 'Jack Kaliko' @@ -36,6 +36,14 @@ if len(ECH.get('apikey')) == 23: # simple hack allowing imp.reload getws(ECH) +def get_mbid(obj, foreign='foreign_ids'): + if foreign in obj: + for frgnid in obj.get(foreign): + if frgnid.get('catalog') == 'musicbrainz': + mbid = frgnid.get('foreign_id').split(':')[2] + return None + + class SimaEch: """EchoNest http client """ @@ -97,12 +105,7 @@ class SimaEch: ans = self.http(ressource, payload) self._controls_answer(ans.json()) for art in ans.json().get('response').get('artists'): - mbid = None - if 'foreign_ids' in art: - for frgnid in art.get('foreign_ids'): - if frgnid.get('catalog') == 'musicbrainz': - mbid = frgnid.get('foreign_id' - ).lstrip('musicbrainz:artist:') + mbid = get_mbid(art) yield Artist(mbid=mbid, name=art.get('name')) def get_toptrack(self, artist=None): @@ -120,6 +123,8 @@ class SimaEch: } for song in ans.json().get('response').get('songs'): title = song.get('title') + if not art.get('musicbrainz_artistid'): + art['musicbrainz_artistid'] = get_mbid(song, 'artist_foreign_ids') if title not in titles: titles.append(title) yield Track(title=title, **art)