# -*- coding: utf-8 -*-
-# Copyright (c) 2014 Jack Kaliko <kaliko@azylum.org>
+# Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014 Jack Kaliko <kaliko@azylum.org>
#
# 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
Consume EchoNest web service
"""
-__version__ = '0.0.1'
+__version__ = '0.5.0'
__author__ = 'Jack Kaliko'
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():
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
self.current_element = SimaFM.cache.get(url).elem
return
try:
- self._fetch_ech(payload)
+ self._fetch_ws(payload)
except Timeout:
raise WSTimeout('Failed to reach server within {0}s'.format(
SOCKET_TIMEOUT))
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)
# 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