X-Git-Url: http://git.kaliko.me/?a=blobdiff_plain;f=sima%2Flib%2Fsimafm.py;h=08fdbc3fe65e1655273a12cfe6d9d9874dbe7574;hb=caff603bfa12a698d3063ea3489f333d9cafdbf0;hp=95a4fee42439381d0398b65c1870f5565e6361f4;hpb=67bcabe7439d4830cb3ae8c61fa269eb9232ac59;p=mpd-sima.git diff --git a/sima/lib/simafm.py b/sima/lib/simafm.py index 95a4fee..08fdbc3 100644 --- a/sima/lib/simafm.py +++ b/sima/lib/simafm.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2014 Jack Kaliko +# Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014 Jack Kaliko # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -21,7 +21,7 @@ Consume EchoNest web service """ -__version__ = '0.0.1' +__version__ = '0.5.0' __author__ = 'Jack Kaliko' @@ -31,27 +31,14 @@ from requests import get, Request, Timeout, ConnectionError from sima import LFM from sima.lib.meta import Artist +from sima.utils.utils import WSError, WSNotFound, WSTimeout, WSHTTPError from sima.utils.utils import getws, Throttle, Cache, purge_cache if len(LFM.get('apikey')) == 43: # simple hack allowing imp.reload getws(LFM) # Some definitions WAIT_BETWEEN_REQUESTS = timedelta(0, 1) -SOCKET_TIMEOUT = 4 - - -class WSError(Exception): - pass - -class WSNotFound(WSError): - pass - -class WSTimeout(WSError): - pass - -class WSHTTPError(WSError): - pass - +SOCKET_TIMEOUT = 6 class SimaFM(): @@ -60,7 +47,8 @@ class SimaFM(): root_url = 'http://{host}/{version}/'.format(**LFM) cache = {} timestamp = datetime.utcnow() - #ratelimit = None + name = 'Last.fm' + ratelimit = None def __init__(self, cache=True): self.artist = None @@ -74,10 +62,9 @@ class SimaFM(): url = Request('GET', self._url, params=payload,).prepare().url if url in SimaFM.cache: self.current_element = SimaFM.cache.get(url).elem - print('is cached') return try: - self._fetch_ech(payload) + self._fetch_ws(payload) except Timeout: raise WSTimeout('Failed to reach server within {0}s'.format( SOCKET_TIMEOUT)) @@ -85,7 +72,7 @@ class SimaFM(): raise WSError(err) @Throttle(WAIT_BETWEEN_REQUESTS) - def _fetch_ech(self, payload): + def _fetch_ws(self, payload): """fetch from web service""" req = get(self._url, params=payload, timeout=SOCKET_TIMEOUT) @@ -138,9 +125,7 @@ class SimaFM(): # Construct URL self._fetch(payload) for art in self.current_element.get('similarartists').get('artist'): - match = 100 * float(art.get('match')) - yield Artist(mbid=art.get('mbid', None), - name=art.get('name')), match + yield Artist(name=art.get('name'), mbid=art.get('mbid', None)) # VIM MODLINE