implemented methods in user and event modules. All methods from last.fm API are implemented now.
parent
302f943805
commit
37fce56b41
|
@ -165,6 +165,11 @@ class Api(object):
|
|||
except LastfmError, e:
|
||||
raise e
|
||||
return user
|
||||
|
||||
def getAuthenticatedUser(self):
|
||||
if self.sessionKey is not None:
|
||||
return User.getAuthenticatedUser(self)
|
||||
return None
|
||||
|
||||
def _BuildUrl(self, url, path_elements=None, extra_params=None):
|
||||
# Break url into consituent parts
|
||||
|
@ -340,7 +345,7 @@ class Api(object):
|
|||
keys.sort()
|
||||
sig = unicode()
|
||||
for name in keys:
|
||||
sig += (name + params[name])
|
||||
sig += ("%s%s" % (name, params[name]))
|
||||
sig += self.secret
|
||||
hashed_sig = md5.new(sig).hexdigest()
|
||||
return hashed_sig
|
||||
|
|
10
src/event.py
10
src/event.py
|
@ -9,6 +9,10 @@ from sharable import Sharable
|
|||
|
||||
class Event(LastfmBase, Sharable):
|
||||
"""A class representing an event."""
|
||||
STATUS_ATTENDING = 0
|
||||
STATUS_MAYBE = 1
|
||||
STATUS_NOT = 2
|
||||
|
||||
def init(self,
|
||||
api,
|
||||
id = None,
|
||||
|
@ -98,6 +102,12 @@ class Event(LastfmBase, Sharable):
|
|||
"""tags for the event"""
|
||||
return self.__tag
|
||||
|
||||
def attend(self, status = STATUS_ATTENDING):
|
||||
if status not in [Event.STATUS_ATTENDING, Event.STATUS_MAYBE, Event.STATUS_NOT]:
|
||||
LastfmInvalidParametersError("status has to be 0, 1 or 2")
|
||||
params = self._defaultParams({'method': 'event.attend', 'status': status})
|
||||
self.__api._postData(params)
|
||||
|
||||
def _defaultParams(self, extraParams = None):
|
||||
if not self.id:
|
||||
raise LastfmInvalidParametersError("id has to be provided.")
|
||||
|
|
72
src/user.py
72
src/user.py
|
@ -15,7 +15,12 @@ class User(LastfmBase):
|
|||
name = None,
|
||||
url = None,
|
||||
image = None,
|
||||
stats = None):
|
||||
stats = None,
|
||||
language = None,
|
||||
country = None,
|
||||
age = None,
|
||||
gender = None,
|
||||
subscriber = None):
|
||||
if not isinstance(api, Api):
|
||||
raise LastfmInvalidParametersError("api reference must be supplied as an argument")
|
||||
self.__api = api
|
||||
|
@ -25,9 +30,15 @@ class User(LastfmBase):
|
|||
self.__stats = stats and Stats(
|
||||
subject = self,
|
||||
match = stats.match,
|
||||
weight = stats.weight
|
||||
weight = stats.weight,
|
||||
playcount = stats.playcount
|
||||
)
|
||||
self.__lirary = User.Library(api, self)
|
||||
self.__library = User.Library(api, self)
|
||||
self.__language = language
|
||||
self.__country = country
|
||||
self.__age = age
|
||||
self.__gender = gender
|
||||
self.__subscriber = subscriber
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
|
@ -48,6 +59,31 @@ class User(LastfmBase):
|
|||
def stats(self):
|
||||
"""stats for the user"""
|
||||
return self.__stats
|
||||
|
||||
@property
|
||||
def language(self):
|
||||
"""lang for the user"""
|
||||
return self.__language
|
||||
|
||||
@property
|
||||
def country(self):
|
||||
"""country for the user"""
|
||||
return self.__country
|
||||
|
||||
@property
|
||||
def age(self):
|
||||
"""age for the user"""
|
||||
return self.__age
|
||||
|
||||
@property
|
||||
def gender(self):
|
||||
"""stats for the user"""
|
||||
return self.__gender
|
||||
|
||||
@property
|
||||
def subscriber(self):
|
||||
"""is the user a subscriber"""
|
||||
return self.__subscriber
|
||||
|
||||
@LastfmBase.cachedProperty
|
||||
def events(self):
|
||||
|
@ -476,7 +512,25 @@ class User(LastfmBase):
|
|||
limit)
|
||||
@property
|
||||
def library(self):
|
||||
return self.__lirary
|
||||
return self.__library
|
||||
|
||||
@staticmethod
|
||||
def getAuthenticatedUser(api):
|
||||
data = api._fetchData({'method': 'user.getInfo'}, sign = True, session = True).find('user')
|
||||
return User(
|
||||
api,
|
||||
name = data.findtext('name'),
|
||||
url = data.findtext('url'),
|
||||
language = data.findtext('lang'),
|
||||
country = Country(api, name = data.findtext('country')),
|
||||
age = int(data.findtext('age')),
|
||||
gender = data.findtext('gender'),
|
||||
subscriber = (data.findtext('subscriber') == '1'),
|
||||
stats = Stats(
|
||||
subject = data.findtext('name'),
|
||||
playcount = data.findtext('playcount')
|
||||
)
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def hashFunc(*args, **kwds):
|
||||
|
@ -527,6 +581,15 @@ class User(LastfmBase):
|
|||
def creator(self):
|
||||
return self.__creator
|
||||
|
||||
def addTrack(self, track):
|
||||
params = {'method': 'playlist.addTrack', 'playlistID': self.id}
|
||||
if not isinstance(track, Track):
|
||||
track = self.__api.searchTrack(track)[0]
|
||||
|
||||
params['artist'] = track.artist.name
|
||||
params['track'] = track.name
|
||||
self.__api._postData(params)
|
||||
|
||||
@staticmethod
|
||||
def hashFunc(*args, **kwds):
|
||||
try:
|
||||
|
@ -723,6 +786,7 @@ from artist import Artist
|
|||
from album import Album
|
||||
from error import LastfmError, LastfmInvalidParametersError
|
||||
from event import Event
|
||||
from geo import Country
|
||||
from stats import Stats
|
||||
from tag import Tag
|
||||
from tasteometer import Tasteometer
|
||||
|
|
Loading…
Reference in New Issue