Add support for user nowplaying to several classes.
This commit is contained in:
parent
5ba17ed61e
commit
49765e83b1
52
pylast.py
52
pylast.py
|
@ -721,7 +721,7 @@ class _Request(object):
|
||||||
if self.session_key:
|
if self.session_key:
|
||||||
self.params["sk"] = self.session_key
|
self.params["sk"] = self.session_key
|
||||||
self.sign_it()
|
self.sign_it()
|
||||||
|
|
||||||
def sign_it(self):
|
def sign_it(self):
|
||||||
"""Sign this request."""
|
"""Sign this request."""
|
||||||
|
|
||||||
|
@ -1150,8 +1150,9 @@ class Album(_BaseObject, _Taggable):
|
||||||
|
|
||||||
title = None
|
title = None
|
||||||
artist = None
|
artist = None
|
||||||
|
username = None
|
||||||
def __init__(self, artist, title, network):
|
|
||||||
|
def __init__(self, artist, title, network, username=None):
|
||||||
"""
|
"""
|
||||||
Create an album instance.
|
Create an album instance.
|
||||||
# Parameters:
|
# Parameters:
|
||||||
|
@ -1168,6 +1169,7 @@ class Album(_BaseObject, _Taggable):
|
||||||
self.artist = Artist(artist, self.network)
|
self.artist = Artist(artist, self.network)
|
||||||
|
|
||||||
self.title = title
|
self.title = title
|
||||||
|
self.username = username
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "pylast.Album(%s, %s, %s)" %(repr(self.artist.name), repr(self.title), repr(self.network))
|
return "pylast.Album(%s, %s, %s)" %(repr(self.artist.name), repr(self.title), repr(self.network))
|
||||||
|
@ -1227,6 +1229,16 @@ class Album(_BaseObject, _Taggable):
|
||||||
|
|
||||||
return _number(_extract(self._request("album.getInfo", cacheable = True), "playcount"))
|
return _number(_extract(self._request("album.getInfo", cacheable = True), "playcount"))
|
||||||
|
|
||||||
|
def get_userplaycount(self):
|
||||||
|
"""Returns the number of plays by a given username"""
|
||||||
|
|
||||||
|
if not self.username: return
|
||||||
|
|
||||||
|
params = self._get_params()
|
||||||
|
params['username'] = self.username
|
||||||
|
|
||||||
|
return _number(_extract(self._request("album.getInfo", True, params), "userplaycount"))
|
||||||
|
|
||||||
def get_listener_count(self):
|
def get_listener_count(self):
|
||||||
"""Returns the number of liteners on the network"""
|
"""Returns the number of liteners on the network"""
|
||||||
|
|
||||||
|
@ -1322,8 +1334,9 @@ class Artist(_BaseObject, _Taggable):
|
||||||
"""An artist."""
|
"""An artist."""
|
||||||
|
|
||||||
name = None
|
name = None
|
||||||
|
username = None
|
||||||
|
|
||||||
def __init__(self, name, network):
|
def __init__(self, name, network, username=None):
|
||||||
"""Create an artist object.
|
"""Create an artist object.
|
||||||
# Parameters:
|
# Parameters:
|
||||||
* name str: The artist's name.
|
* name str: The artist's name.
|
||||||
|
@ -1333,6 +1346,7 @@ class Artist(_BaseObject, _Taggable):
|
||||||
_Taggable.__init__(self, 'artist')
|
_Taggable.__init__(self, 'artist')
|
||||||
|
|
||||||
self.name = name
|
self.name = name
|
||||||
|
self.username = username
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "pylast.Artist(%s, %s)" %(repr(self.get_name()), repr(self.network))
|
return "pylast.Artist(%s, %s)" %(repr(self.get_name()), repr(self.network))
|
||||||
|
@ -1378,6 +1392,16 @@ class Artist(_BaseObject, _Taggable):
|
||||||
|
|
||||||
return _number(_extract(self._request("artist.getInfo", True), "playcount"))
|
return _number(_extract(self._request("artist.getInfo", True), "playcount"))
|
||||||
|
|
||||||
|
def get_userplaycount(self):
|
||||||
|
"""Returns the number of plays by a given username"""
|
||||||
|
|
||||||
|
if not self.username: return
|
||||||
|
|
||||||
|
params = self._get_params()
|
||||||
|
params['username'] = self.username
|
||||||
|
|
||||||
|
return _number(_extract(self._request("artist.getInfo", True, params), "userplaycount"))
|
||||||
|
|
||||||
def get_mbid(self):
|
def get_mbid(self):
|
||||||
"""Returns the MusicBrainz ID of this artist."""
|
"""Returns the MusicBrainz ID of this artist."""
|
||||||
|
|
||||||
|
@ -2320,8 +2344,9 @@ class Track(_BaseObject, _Taggable):
|
||||||
|
|
||||||
artist = None
|
artist = None
|
||||||
title = None
|
title = None
|
||||||
|
username = None
|
||||||
def __init__(self, artist, title, network):
|
|
||||||
|
def __init__(self, artist, title, network, username=None):
|
||||||
_BaseObject.__init__(self, network)
|
_BaseObject.__init__(self, network)
|
||||||
_Taggable.__init__(self, 'track')
|
_Taggable.__init__(self, 'track')
|
||||||
|
|
||||||
|
@ -2331,6 +2356,8 @@ class Track(_BaseObject, _Taggable):
|
||||||
self.artist = Artist(artist, self.network)
|
self.artist = Artist(artist, self.network)
|
||||||
|
|
||||||
self.title = title
|
self.title = title
|
||||||
|
|
||||||
|
self.username = username
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "pylast.Track(%s, %s, %s)" %(repr(self.artist.name), repr(self.title), repr(self.network))
|
return "pylast.Track(%s, %s, %s)" %(repr(self.artist.name), repr(self.title), repr(self.network))
|
||||||
|
@ -2402,6 +2429,17 @@ class Track(_BaseObject, _Taggable):
|
||||||
|
|
||||||
doc = self._request("track.getInfo", True)
|
doc = self._request("track.getInfo", True)
|
||||||
return _number(_extract(doc, "playcount"))
|
return _number(_extract(doc, "playcount"))
|
||||||
|
|
||||||
|
def get_userplaycount(self):
|
||||||
|
"""Returns the number of plays by a given username"""
|
||||||
|
|
||||||
|
if not self.username: return
|
||||||
|
|
||||||
|
params = self._get_params()
|
||||||
|
params['username'] = self.username
|
||||||
|
|
||||||
|
doc = self._request("track.getInfo", True, params)
|
||||||
|
return _number(_extract(doc, "userplaycount"))
|
||||||
|
|
||||||
def is_streamable(self):
|
def is_streamable(self):
|
||||||
"""Returns True if the track is available at Last.fm."""
|
"""Returns True if the track is available at Last.fm."""
|
||||||
|
@ -2890,7 +2928,7 @@ class User(_BaseObject):
|
||||||
artist = _extract(e, 'artist')
|
artist = _extract(e, 'artist')
|
||||||
title = _extract(e, 'name')
|
title = _extract(e, 'name')
|
||||||
|
|
||||||
return Track(artist, title, self.network)
|
return Track(artist, title, self.network, self.name)
|
||||||
|
|
||||||
|
|
||||||
def get_recent_tracks(self, limit = 10):
|
def get_recent_tracks(self, limit = 10):
|
||||||
|
|
Loading…
Reference in a new issue