refactored the code and created Stats class. Geo class complete now.

master
Abhinav Sarkar 2008-07-17 16:47:32 +00:00
parent 7498646d55
commit 1d81a1a4fb
10 changed files with 288 additions and 125 deletions

View File

@ -17,8 +17,7 @@ class Album(LastfmBase):
url = None, url = None,
releaseDate = None, releaseDate = None,
image = None, image = None,
listeners = None, stats = None,
playcount = None,
topTags = None): topTags = None):
if not isinstance(api, Api): if not isinstance(api, Api):
raise LastfmError("api reference must be supplied as an argument") raise LastfmError("api reference must be supplied as an argument")
@ -30,8 +29,13 @@ class Album(LastfmBase):
self.__url = url self.__url = url
self.__releaseDate = releaseDate self.__releaseDate = releaseDate
self.__image = image self.__image = image
self.__listeners = listeners self.__stats = stats and Stats(
self.__playcount = playcount subject = self,
listeners = stats.listeners,
playcount = stats.playcount,
match = stats.match,
rank = stats.rank
)
self.__topTags = topTags self.__topTags = topTags
def getName(self): def getName(self):
@ -55,11 +59,8 @@ class Album(LastfmBase):
def getImage(self): def getImage(self):
return self.__image return self.__image
def getListeners(self): def getStats(self):
return self.__listeners return self.__stats
def getPlaycount(self):
return self.__playcount
def getTopTags(self): def getTopTags(self):
if self.__topTags is None: if self.__topTags is None:
@ -93,9 +94,7 @@ class Album(LastfmBase):
image = property(getImage, None, None, "Image's Docstring") image = property(getImage, None, None, "Image's Docstring")
listeners = property(getListeners, None, None, "Listeners's Docstring") stats = property(getStats, None, None, "Stats's Docstring")
playcount = property(getPlaycount, None, None, "Playcount's Docstring")
topTags = property(getTopTags, None, None, "TopTags's Docstring") topTags = property(getTopTags, None, None, "TopTags's Docstring")
topTag = property(lambda self: self.topTags and len(self.topTags) and self.topTags[0], topTag = property(lambda self: self.topTags and len(self.topTags) and self.topTags[0],
@ -128,8 +127,11 @@ class Album(LastfmBase):
releaseDate = data.findtext('releasedate') and data.findtext('releasedate').strip() and releaseDate = data.findtext('releasedate') and data.findtext('releasedate').strip() and
datetime(*(time.strptime(data.findtext('releasedate').strip(), '%d %b %Y, 00:00')[0:6])), datetime(*(time.strptime(data.findtext('releasedate').strip(), '%d %b %Y, 00:00')[0:6])),
image = dict([(i.get('size'), i.text) for i in data.findall('image')]), image = dict([(i.get('size'), i.text) for i in data.findall('image')]),
listeners = int(data.findtext('listeners')), stats = Stats(
playcount = int(data.findtext('playcount')), subject = data.findtext('name'),
listeners = int(data.findtext('listeners')),
playcount = int(data.findtext('playcount')),
),
topTags = [ topTags = [
Tag( Tag(
api, api,
@ -173,4 +175,5 @@ import time
from api import Api from api import Api
from error import LastfmError from error import LastfmError
from tag import Tag from tag import Tag
from artist import Artist from artist import Artist
from stats import Stats

View File

@ -152,8 +152,8 @@ class Api(object):
def getGroup(self, name): def getGroup(self, name):
return Group(self, name = name) return Group(self, name = name)
def fetchPlaylist(self, playlistUrl): def fetchPlaylist(self, url):
return Playlist(self, playlistUrl = playlistUrl) return Playlist.fetch(self, url)
def getTag(self, name): def getTag(self, name):
return Tag(self, name = name) return Tag(self, name = name)

View File

@ -13,7 +13,6 @@ class Artist(LastfmBase):
name = None, name = None,
mbid = None, mbid = None,
url = None, url = None,
match = None,
image = None, image = None,
streamable = None, streamable = None,
stats = None, stats = None,
@ -26,13 +25,14 @@ class Artist(LastfmBase):
self.__name = name self.__name = name
self.__mbid = mbid self.__mbid = mbid
self.__url = url self.__url = url
self.__match = match
self.__image = image self.__image = image
self.__streamable = streamable self.__streamable = streamable
self.__stats = stats and Stats( self.__stats = stats and Stats(
artist = self, subject = self,
listeners = stats.listeners, listeners = stats.listeners,
plays = stats.plays playcount = stats.playcount,
match = stats.match,
rank = stats.rank
) )
self.__similar = similar self.__similar = similar
self.__topTags = topTags self.__topTags = topTags
@ -52,9 +52,6 @@ class Artist(LastfmBase):
def getUrl(self): def getUrl(self):
return self.__url return self.__url
def getMatch(self):
return self.__match
def getImage(self): def getImage(self):
return self.__image return self.__image
@ -77,7 +74,10 @@ class Artist(LastfmBase):
self.__api, self.__api,
name = a.findtext('name'), name = a.findtext('name'),
mbid = a.findtext('mbid'), mbid = a.findtext('mbid'),
match = float(a.findtext('match')), stats = Stats(
artist = a.findtext('name'),
match = float(a.findtext('match')),
),
url = 'http://' + a.findtext('url'), url = 'http://' + a.findtext('url'),
image = {'large': a.findtext('image')} image = {'large': a.findtext('image')}
) )
@ -111,8 +111,6 @@ class Artist(LastfmBase):
url = property(getUrl, None, None, "Url's Docstring") url = property(getUrl, None, None, "Url's Docstring")
match = property(getMatch, None, None, "Match's Docstring")
image = property(getImage, None, None, "Image's Docstring") image = property(getImage, None, None, "Image's Docstring")
streamable = property(getStreamable, None, None, "Streamable's Docstring") streamable = property(getStreamable, None, None, "Streamable's Docstring")
@ -139,7 +137,7 @@ class Artist(LastfmBase):
id = int(e.findtext('id')), id = int(e.findtext('id')),
title = e.findtext('title'), title = e.findtext('title'),
artists = [Artist(self.__api, name = a.text) for a in e.findall('artists/artist')], artists = [Artist(self.__api, name = a.text) for a in e.findall('artists/artist')],
headliner = e.findtext('artists/headliner'), headliner = Artist(self.__api, name = e.findtext('artists/headliner')),
venue = Venue( venue = Venue(
name = e.findtext('venue/name'), name = e.findtext('venue/name'),
location = Location( location = Location(
@ -188,7 +186,11 @@ class Artist(LastfmBase):
mbid = a.findtext('mbid'), mbid = a.findtext('mbid'),
url = a.findtext('url'), url = a.findtext('url'),
image = dict([(i.get('size'), i.text) for i in a.findall('image')]), image = dict([(i.get('size'), i.text) for i in a.findall('image')]),
playcount = int(a.findtext('playcount')), stats = Stats(
subject = a.findtext('name'),
playcount = int(a.findtext('playcount')),
rank = int(a.attrib['rank'])
)
) )
for a in data.findall('album') for a in data.findall('album')
] ]
@ -206,7 +208,10 @@ class Artist(LastfmBase):
name = u.findtext('name'), name = u.findtext('name'),
url = u.findtext('url'), url = u.findtext('url'),
image = dict([(i.get('size'), i.text) for i in u.findall('image')]), image = dict([(i.get('size'), i.text) for i in u.findall('image')]),
weight = int(u.findtext('weight')) stats = Stats(
subject = u.findtext('name'),
weight = int(u.findtext('weight'))
)
) )
for u in data.findall('user') for u in data.findall('user')
] ]
@ -224,7 +229,11 @@ class Artist(LastfmBase):
name = t.findtext('name'), name = t.findtext('name'),
artist = self, artist = self,
mbid = t.findtext('mbid'), mbid = t.findtext('mbid'),
playcount = int(t.findtext('playcount')), stats = Stats(
subject = t.findtext('name'),
playcount = int(t.findtext('playcount')),
rank = int(t.attrib['rank'])
),
streamable = (t.findtext('streamable') == '1'), streamable = (t.findtext('streamable') == '1'),
fullTrack = (t.find('streamable').attrib['fulltrack'] == '1'), fullTrack = (t.find('streamable').attrib['fulltrack'] == '1'),
image = dict([(i.get('size'), i.text) for i in t.findall('image')]), image = dict([(i.get('size'), i.text) for i in t.findall('image')]),
@ -263,7 +272,7 @@ class Artist(LastfmBase):
image = dict([(i.get('size'), i.text) for i in a.findall('image')]), image = dict([(i.get('size'), i.text) for i in a.findall('image')]),
streamable = (a.findtext('streamable') == '1'), streamable = (a.findtext('streamable') == '1'),
stats = Stats( stats = Stats(
artist = a.findtext('name'), subject = a.findtext('name'),
listeners = int(a.findtext('listeners')), listeners = int(a.findtext('listeners')),
), ),
) )
@ -293,9 +302,9 @@ class Artist(LastfmBase):
image = dict([(i.get('size'), i.text) for i in data.findall('image')]), image = dict([(i.get('size'), i.text) for i in data.findall('image')]),
streamable = (data.findtext('streamable') == 1), streamable = (data.findtext('streamable') == 1),
stats = Stats( stats = Stats(
artist, subject = artist,
listeners = int(data.findtext('stats/listeners')), listeners = int(data.findtext('stats/listeners')),
plays = int(data.findtext('stats/plays')) playcount = int(data.findtext('stats/plays'))
), ),
similar = [ similar = [
Artist( Artist(
@ -352,34 +361,6 @@ class Artist(LastfmBase):
def __repr__(self): def __repr__(self):
return "<lastfm.Artist: %s>" % self.__name return "<lastfm.Artist: %s>" % self.__name
class Stats(object):
"""A class representing the stats of an artist."""
def __init__(self,
artist,
listeners = None,
plays = None):
self.__artist = artist
self.__listeners = listeners
self.__plays = plays
def getArtist(self):
return self.__artist
def getListeners(self):
return self.__listeners
def getPlays(self):
return self.__plays
listeners = property(getListeners, None, None, "Listeners's Docstring")
plays = property(getPlays, None, None, "Plays's Docstring")
artist = property(getArtist, None, None, "Artist's Docstring")
def __repr__(self):
return "<lastfm.artist.Stats: for artist '%s'>" % self.__artist.name
class Bio(object): class Bio(object):
"""A class representing the biography of an artist.""" """A class representing the biography of an artist."""
def __init__(self, def __init__(self,
@ -426,4 +407,5 @@ from geo import Country, Location, Venue
from tag import Tag from tag import Tag
from track import Track from track import Track
from user import User from user import User
from search import SearchResult from search import SearchResult
from stats import Stats

View File

@ -20,8 +20,7 @@ class Event(LastfmBase):
description = None, description = None,
image = None, image = None,
url = None, url = None,
attendance = None, stats = None,
reviews = None,
tag = None): tag = None):
if not isinstance(api, Api): if not isinstance(api, Api):
raise LastfmError("api reference must be supplied as an argument") raise LastfmError("api reference must be supplied as an argument")
@ -36,8 +35,11 @@ class Event(LastfmBase):
self.__description = description self.__description = description
self.__image = image self.__image = image
self.__url = url self.__url = url
self.__attendance = attendance self.__stats = stats and Stats(
self.__reviews = reviews subject = self,
attendance = self.attendance,
reviews = self.reviews
)
self.__tag = tag self.__tag = tag
def getId(self): def getId(self):
@ -70,11 +72,8 @@ class Event(LastfmBase):
def getUrl(self): def getUrl(self):
return self.__url return self.__url
def getAttendance(self): def getStats(self):
return self.__attendance return self.__stats
def getReviews(self):
return self.__reviews
def getTag(self): def getTag(self):
return self.__tag return self.__tag
@ -99,10 +98,8 @@ class Event(LastfmBase):
url = property(getUrl, None, None, "Url's Docstring") url = property(getUrl, None, None, "Url's Docstring")
attendance = property(getAttendance, None, None, "Attendance's Docstring") stats = property(getStats, None, None, "Match's Docstring")
reviews = property(getReviews, None, None, "Reviews's Docstring")
tag = property(getTag, None, None, "Tag's Docstring") tag = property(getTag, None, None, "Tag's Docstring")
@staticmethod @staticmethod
@ -115,7 +112,7 @@ class Event(LastfmBase):
id = int(data.findtext('id')), id = int(data.findtext('id')),
title = data.findtext('title'), title = data.findtext('title'),
artists = [Artist(api, name = a.text) for a in data.findall('artists/artist')], artists = [Artist(api, name = a.text) for a in data.findall('artists/artist')],
headliner = data.findtext('artists/headliner'), headliner = Artist(api, name = data.findtext('artists/headliner')),
venue = Venue( venue = Venue(
name = data.findtext('venue/name'), name = data.findtext('venue/name'),
location = Location( location = Location(
@ -146,8 +143,11 @@ class Event(LastfmBase):
description = data.findtext('description'), description = data.findtext('description'),
image = dict([(i.get('size'), i.text) for i in data.findall('image')]), image = dict([(i.get('size'), i.text) for i in data.findall('image')]),
url = data.findtext('url'), url = data.findtext('url'),
attendance = int(data.findtext('attendance')), stats = Stats(
reviews = int(data.findtext('reviews')), subject = int(data.findtext('id')),
attendance = int(data.findtext('attendance')),
reviews = int(data.findtext('reviews')),
),
tag = data.findtext('tag') tag = data.findtext('tag')
) )
@ -176,4 +176,5 @@ import time
from api import Api from api import Api
from error import LastfmError from error import LastfmError
from artist import Artist from artist import Artist
from geo import Venue, Location, Country from geo import Venue, Location, Country
from stats import Stats

View File

@ -9,16 +9,108 @@ from base import LastfmBase
class Geo(object): class Geo(object):
"""A class representing an geographic location.""" """A class representing an geographic location."""
@staticmethod @staticmethod
def getEvents(api, location, distance, page): def getEvents(api,
pass location,
distance = None,
page = None):
params = {'method': 'geo.getevents', 'location': location}
data = api.fetchData(params).find('events')
return SearchResult(
type = 'event',
searchTerms = data.attrib['location'],
startPage = int(data.attrib['page']),
totalResults = int(data.attrib['total']),
itemsPerPage = int(math.ceil(float(data.attrib['total']))/float(data.attrib['totalpages'])),
matches = [
Event(
api,
id = int(e.findtext('id')),
title = e.findtext('title'),
artists = [Artist(api, name = a.text) for a in e.findall('artists/artist')],
headliner = Artist(api, name = e.findtext('artists/headliner')),
venue = Venue(
name = e.findtext('venue/name'),
location = Location(
api,
city = e.findtext('venue/location/city'),
country = Country(
api,
name = e.findtext('venue/location/country')
),
street = e.findtext('venue/location/street'),
postalCode = e.findtext('venue/location/postalcode'),
latitude = float(e.findtext(
'venue/location/{%s}point/{%s}lat' % ((Location.xmlns,)*2)
)),
longitude = float(e.findtext(
'venue/location/{%s}point/{%s}long' % ((Location.xmlns,)*2)
)),
timezone = e.findtext('venue/location/timezone')
),
url = e.findtext('venue/url')
),
startDate = e.findtext('startDate') and
datetime(*(time.strptime(e.findtext('startDate').strip(), '%a, %d %b %Y')[0:6])) or
None,
startTime = e.findtext('startTime') and
datetime(*(time.strptime(e.findtext('startTime').strip(), '%H:%M')[0:6])) or
None,
description = e.findtext('description'),
image = dict([(i.get('size'), i.text) for i in e.findall('image')]),
url = e.findtext('url')
)
for e in data.findall('event')
]
)
@staticmethod @staticmethod
def getTopArtists(api, country): def getTopArtists(api, country):
pass params = {'method': 'geo.gettopartists', 'country': country}
data = api.fetchData(params).find('topartists')
return [
Artist(
api,
name = a.findtext('name'),
mbid = a.findtext('mbid'),
stats = Stats(
subject = a.findtext('name'),
rank = int(a.attrib['rank']),
playcount = int(a.findtext('playcount'))
),
url = 'http://' + a.findtext('url'),
image = {'large': a.findtext('image')}
)
for a in data.findall('artist')
]
@staticmethod @staticmethod
def getTopTracks(api, country): def getTopTracks(api, country):
pass params = {'method': 'geo.gettoptracks', 'country': country}
data = api.fetchData(params).find('toptracks')
return [
Track(
api,
name = t.findtext('name'),
mbid = t.findtext('mbid'),
artist = Artist(
api,
name = t.findtext('artist/name'),
mbid = t.findtext('artist/mbid'),
url = t.findtext('artist/url')
),
stats = Stats(
subject = t.findtext('name'),
rank = int(t.attrib['rank']),
playcount = int(t.findtext('playcount'))
),
streamable = (t.findtext('streamable') == '1'),
fullTrack = (t.find('streamable').attrib['fulltrack'] == '1'),
url = 'http://' + t.findtext('url'),
image = {'large': t.findtext('image')}
)
for t in data.findall('track')
]
class Venue(LastfmBase): class Venue(LastfmBase):
"""A class representing a venue of an event""" """A class representing a venue of an event"""
@ -133,7 +225,7 @@ class Location(LastfmBase):
def getEvents(self, def getEvents(self,
distance = None, distance = None,
page = None): page = None):
return Geo.getEvents(self.__api, self.name, distance, page) return Geo.getEvents(self.__api, self.name, distance, page).matches
events = property(getEvents, None, None, "Event's Docstring") events = property(getEvents, None, None, "Event's Docstring")
@ -218,9 +310,16 @@ class Country(LastfmBase):
return self.name < other.name return self.name < other.name
def __repr__(self): def __repr__(self):
return "<lastfm.geo.Country: %s" % self.name return "<lastfm.geo.Country: %s>" % self.name
import math
from datetime import datetime
import time
from api import Api from api import Api
from error import LastfmError from error import LastfmError
from artist import Artist from artist import Artist
from track import Track from track import Track
from event import Event
from search import SearchResult
from stats import Stats

View File

@ -6,39 +6,44 @@ __license__ = "GNU Lesser General Public License"
from base import LastfmBase from base import LastfmBase
class Playlist(LastfmBase, str): class Playlist(LastfmBase):
"""A class representing an XPSF playlist.""" """A class representing an XPSF playlist."""
def init(self, xpsfData, playlistUrl): def init(self, xpsfData, url):
self = xpsfData self.__data = xpsfData
self.__playlistUrl = playlistUrl self.__url = url
def getPlaylistUrl(self): def getData(self):
return self.__playlistUrl return self.__data
def getUrl(self):
return self.__url
data = property(getData, None, None, "docstring")
playlistUrl = property(getPlaylistUrl, None, None, "PlaylistUrl's Docstring") url = property(getUrl, None, None, "url's Docstring")
@staticmethod @staticmethod
def fetch(api, playlistUrl): def fetch(api, url):
params = {'method': 'playlist.fetch'} params = {'method': 'playlist.fetch', 'playlistURL': url}
return Playlist(api.fetchData(params, parse = False), playlistUrl) return Playlist(api.fetchData(params, parse = False), url = url)
@staticmethod @staticmethod
def hashFunc(*args, **kwds): def hashFunc(*args, **kwds):
try: try:
return hash(kwds['playlistUrl']) return hash(kwds['url'])
except KeyError: except KeyError:
raise LastfmError("playlistUrl has to be provided for hashing") raise LastfmError("url has to be provided for hashing")
def __hash__(self): def __hash__(self):
return self.__class__.hashFunc(playlistUrl = self.playlistUrl) return self.__class__.hashFunc(url = self.url)
def __eq__(self, other): def __eq__(self, other):
return self.playlistUrl == other.playlistUrl return self.url == other.url
def __lt__(self, other): def __lt__(self, other):
return self.playlistUrl < other.playlistUrl return self.url < other.url
def __repr__(self): def __repr__(self):
return "<lastfm.Playlist: %s>" % self.playlistUrl return "<lastfm.Playlist: %s>" % self.url
from error import LastfmError from error import LastfmError

View File

@ -65,15 +65,15 @@ class SearchResult(LastfmBase):
@staticmethod @staticmethod
def hashFunc(*args, **kwds): def hashFunc(*args, **kwds):
try: try:
return hash("%s%s%s" % (kwds['searchTerms'], kwds['type'], kwds['startIndex'])) return hash("%s%s%s" % (kwds['searchTerms'], kwds['type'], kwds['startPage']))
except KeyError: except KeyError:
raise LastfmError("name and artist have to be provided for hashing") raise LastfmError("searchTerms, type and startPage have to be provided for hashing")
def __hash__(self): def __hash__(self):
return self.__class__.hashFunc( return self.__class__.hashFunc(
searchTerms = self.searchTerms, searchTerms = self.searchTerms,
type = self.type, type = self.type,
startIndex = self.startIndex startPage = self.startPage
) )
def __eq__(self, other): def __eq__(self, other):

69
src/stats.py Normal file
View File

@ -0,0 +1,69 @@
#!/usr/bin/env python
__author__ = "Abhinav Sarkar"
__version__ = "0.1"
__license__ = "GNU Lesser General Public License"
class Stats(object):
"""A class representing the stats of an artist."""
def __init__(self,
subject,
listeners = None,
playcount = None,
match = None,
rank = None,
weight = None,
attendance = None,
reviews = None,):
self.__subject = subject
self.__listeners = listeners
self.__playcount = playcount
self.__match = match
self.__rank = rank
self.__weight = weight
self.__attendance = attendance
self.__reviews = reviews
def getSubject(self):
return self.__subject
def getRank(self):
return self.__rank
def getListeners(self):
return self.__listeners
def getPlaycount(self):
return self.__playcount
def getMatch(self):
return self.__match
def getWeight(self):
return self.__weight
def getAttendance(self):
return self.__attendance
def getReviews(self):
return self.__reviews
listeners = property(getListeners, None, None, "Listeners's Docstring")
playcount = property(getPlaycount, None, None, "Plays's Docstring")
match = property(getMatch, None, None, "Match's Docstring")
rank = property(getRank, None, None, "Artist's Docstring")
subject = property(getSubject, None, None, "subject's Docstring")
weight = property(getWeight, None, None, "Weight's Docstring")
attendance = property(getAttendance, None, None, "Attendance's Docstring")
reviews = property(getReviews, None, None, "Reviews's Docstring")
def __repr__(self):
return "<lastfm.Stats: for '%s'>" % self.__subject.name

View File

@ -16,8 +16,7 @@ class Track(LastfmBase):
streamable = None, streamable = None,
artist = None, artist = None,
image = None, image = None,
match = None, stats = None,
playcount = None,
fullTrack = None): fullTrack = None):
if not isinstance(api, Api): if not isinstance(api, Api):
raise LastfmError("api reference must be supplied as an argument") raise LastfmError("api reference must be supplied as an argument")
@ -28,8 +27,12 @@ class Track(LastfmBase):
self.__streamable = streamable self.__streamable = streamable
self.__artist = artist self.__artist = artist
self.__image = image self.__image = image
self.__match = match self.__stats = stats and Stats(
self.__playcount = playcount subject = self,
match = stats.match,
playcount = stats.playcount,
rank = stats.rank
)
self.__fullTrack = fullTrack self.__fullTrack = fullTrack
def getName(self): def getName(self):
@ -50,11 +53,8 @@ class Track(LastfmBase):
def getImage(self): def getImage(self):
return self.__image return self.__image
def getMatch(self): def getStats(self):
return self.__match return self.__stats
def getPlaycount(self):
return self.__playcount
def getFullTrack(self): def getFullTrack(self):
return self.__fullTrack return self.__fullTrack
@ -71,9 +71,7 @@ class Track(LastfmBase):
image = property(getImage, None, None, "Image's Docstring") image = property(getImage, None, None, "Image's Docstring")
match = property(getMatch, None, None, "Match's Docstring") stats = property(getStats, None, None, "Match's Docstring")
playcount = property(getPlaycount, None, None, "Match's Docstring")
fullTrack = property(getFullTrack, None, None, "Match's Docstring") fullTrack = property(getFullTrack, None, None, "Match's Docstring")
@ -159,4 +157,5 @@ class Track(LastfmBase):
from api import Api from api import Api
from error import LastfmError from error import LastfmError
from user import User from user import User
from tag import Tag from tag import Tag
from stats import Stats

View File

@ -13,14 +13,18 @@ class User(LastfmBase):
name = None, name = None,
url = None, url = None,
image = None, image = None,
weight = None): stats = None):
if not isinstance(api, Api): if not isinstance(api, Api):
raise LastfmError("api reference must be supplied as an argument") raise LastfmError("api reference must be supplied as an argument")
self.__api = api self.__api = api
self.__name = name self.__name = name
self.__url = url self.__url = url
self.__image = image self.__image = image
self.__weight = weight self.__stats = stats and Stats(
subject = self,
match = stats.match,
weight = stats.weight
)
def getName(self): def getName(self):
return self.__name return self.__name
@ -31,8 +35,8 @@ class User(LastfmBase):
def getImage(self): def getImage(self):
return self.__image return self.__image
def getWeight(self): def getStats(self):
return self.__weight return self.__stats
name = property(getName, None, None, "Name's Docstring") name = property(getName, None, None, "Name's Docstring")
@ -40,7 +44,7 @@ class User(LastfmBase):
image = property(getImage, None, None, "Image's Docstring") image = property(getImage, None, None, "Image's Docstring")
weight = property(getWeight, None, None, "Weight's Docstring") stats = property(getStats, None, None, "Weight's Docstring")
def getEvents(self): def getEvents(self):
pass pass
@ -141,4 +145,5 @@ class User(LastfmBase):
return "<lastfm.User: %s>" % self.name return "<lastfm.User: %s>" % self.name
from api import Api from api import Api
from error import LastfmError from error import LastfmError
from stats import Stats