2008-07-10 22:25:05 +05:30
|
|
|
#!/usr/bin/env python
|
|
|
|
|
2008-08-25 17:14:48 +05:30
|
|
|
__author__ = "Abhinav Sarkar <abhinav@abhinavsarkar.net>"
|
2008-09-02 22:06:16 +05:30
|
|
|
__version__ = "0.2"
|
2008-07-10 22:25:05 +05:30
|
|
|
__license__ = "GNU Lesser General Public License"
|
|
|
|
|
|
|
|
class Tasteometer(object):
|
|
|
|
"""A class representing a tasteometer."""
|
|
|
|
def __init__(self,
|
|
|
|
score = None,
|
|
|
|
matches = None,
|
|
|
|
artists = None):
|
|
|
|
self.__score = score
|
|
|
|
self.__matches = matches
|
2008-08-18 18:49:41 +05:30
|
|
|
self.__artists = artists
|
2008-07-10 22:25:05 +05:30
|
|
|
|
2008-07-31 16:04:46 +05:30
|
|
|
@property
|
|
|
|
def score(self):
|
|
|
|
"""score of the comparison"""
|
2008-07-10 22:25:05 +05:30
|
|
|
return self.__score
|
|
|
|
|
2008-07-31 16:04:46 +05:30
|
|
|
@property
|
|
|
|
def matches(self):
|
|
|
|
"""matches for the comparison"""
|
2008-07-10 22:25:05 +05:30
|
|
|
return self.__matches
|
|
|
|
|
2008-07-31 16:04:46 +05:30
|
|
|
@property
|
|
|
|
def artists(self):
|
|
|
|
"""artists for the comparison"""
|
2008-07-10 22:25:05 +05:30
|
|
|
return self.__artists
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def compare(api,
|
|
|
|
type1, type2,
|
|
|
|
value1, value2,
|
|
|
|
limit = None):
|
2008-08-18 00:12:32 +05:30
|
|
|
params = {
|
|
|
|
'method': 'tasteometer.compare',
|
|
|
|
'type1': type1,
|
|
|
|
'type2': type2,
|
|
|
|
'value1': value1,
|
|
|
|
'value2': value2
|
|
|
|
}
|
|
|
|
if limit is not None:
|
|
|
|
params.update({'limit': limit})
|
|
|
|
data = api._fetchData(params).find('comparison/result')
|
|
|
|
return Tasteometer(
|
|
|
|
score = float(data.findtext('score')),
|
|
|
|
matches = int(data.find('artists').attrib['matches']),
|
|
|
|
artists = [
|
|
|
|
Artist(
|
|
|
|
api,
|
|
|
|
name = a.findtext('name'),
|
|
|
|
url = a.findtext('url'),
|
|
|
|
image = dict([(i.get('size'), i.text) for i in a.findall('image')]),
|
|
|
|
)
|
|
|
|
for a in data.findall('artists/artist')
|
|
|
|
]
|
|
|
|
)
|
|
|
|
|
|
|
|
|
2008-07-15 00:38:39 +05:30
|
|
|
|
|
|
|
def __repr__(self):
|
2008-09-02 19:49:03 +05:30
|
|
|
return "<lastfm.Tasteometer: %s%% match>" % (self.score*100)
|
2008-07-10 22:25:05 +05:30
|
|
|
|
2008-08-18 18:49:41 +05:30
|
|
|
from artist import Artist
|