X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Flib%2Fsimafm.py;h=8d82d52ccc90798b4a933d53a7f3737fc4945423;hb=85f15b7261386985e8bb7f9b357e55b5f21c21a7;hp=04e736f63b1bd4478d35f6f74107720e19d93022;hpb=63563d000f2646724c1ff91eb6fcca01f5201d23;p=mpd-sima.git diff --git a/sima/lib/simafm.py b/sima/lib/simafm.py index 04e736f..8d82d52 100644 --- a/sima/lib/simafm.py +++ b/sima/lib/simafm.py @@ -30,6 +30,7 @@ from requests import Session, Request, Timeout, ConnectionError from sima import LFM, SOCKET_TIMEOUT, WAIT_BETWEEN_REQUESTS from sima.lib.meta import Artist +from sima.lib.track import Track from sima.lib.http import CacheController from sima.utils.utils import WSError, WSNotFound, WSTimeout, WSHTTPError @@ -144,6 +145,26 @@ class SimaFM: for art in ans.get('similarartists').get('artist'): yield Artist(name=art.get('name'), mbid=art.get('mbid', None)) + def get_toptrack(self, artist=None): + """Fetch artist top tracks + """ + payload = self._forge_payload(artist, method='top') + ans = self._fetch(payload) + tops = ans.get('toptracks').get('track') + art = { + 'artist': artist.name, + 'musicbrainz_artistid': artist.mbid, + } + for song in tops: + for key in ['artist', 'streamable', 'listeners', + 'url', 'image', '@attr']: + if key in song: + song.pop(key) + song.update(art) + song.update(title=song.pop('name')) + song.update(time=song.pop('duration')) + yield Track(**song) + #return tops # VIM MODLINE # vim: ai ts=4 sw=4 sts=4 expandtab