Consume EchoNest web service
"""
-__version__ = '0.0.3'
+__version__ = '0.0.5'
__author__ = 'Jack Kaliko'
getws(ECH)
+def get_mbid(obj, foreign='foreign_ids'):
+ if foreign in obj:
+ for frgnid in obj.get(foreign):
+ if frgnid.get('catalog') == 'musicbrainz':
+ return frgnid.get('foreign_id').split(':')[2]
+ return None
+
+
class SimaEch:
"""EchoNest http client
"""
root_url = 'http://{host}/api/{version}'.format(**ECH)
- ratelimit = None
name = 'EchoNest'
cache = False
stats = {'etag':0,
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):
}
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)