Add Track.get_userloved() with test, closes #70
This commit is contained in:
parent
3a0e69f218
commit
785139dce6
18
pylast.py
18
pylast.py
|
@ -903,7 +903,7 @@ class SessionKeyGenerator(object):
|
|||
c. password_hash = pylast.md5(raw_input("Please enter your password: ")
|
||||
d. session_key = SessionKeyGenerator(network).get_session_key(username, password_hash)
|
||||
|
||||
A session key's lifetime is infinie, unless the user provokes the rights of the given API Key.
|
||||
A session key's lifetime is infinite, unless the user provokes the rights of the given API Key.
|
||||
|
||||
If you create a Network object with just a API_KEY and API_SECRET and a username and a password_hash, a
|
||||
SESSION_KEY will be automatically generated for that network and stored in it so you don't have to do this
|
||||
|
@ -1291,7 +1291,7 @@ class Album(_BaseObject, _Taggable):
|
|||
return _number(_extract(self._request("album.getInfo", True, params), "userplaycount"))
|
||||
|
||||
def get_listener_count(self):
|
||||
"""Returns the number of liteners on the network"""
|
||||
"""Returns the number of listeners on the network"""
|
||||
|
||||
return _number(_extract(self._request("album.getInfo", cacheable = True), "listeners"))
|
||||
|
||||
|
@ -1448,7 +1448,7 @@ class Artist(_BaseObject, _Taggable):
|
|||
return _extract(doc, "mbid")
|
||||
|
||||
def get_listener_count(self):
|
||||
"""Returns the number of liteners on the network."""
|
||||
"""Returns the number of listeners on the network."""
|
||||
|
||||
if hasattr(self, "listener_count"):
|
||||
return self.listener_count
|
||||
|
@ -2529,6 +2529,18 @@ class Track(_BaseObject, _Taggable):
|
|||
doc = self._request("track.getInfo", True, params)
|
||||
return _number(_extract(doc, "userplaycount"))
|
||||
|
||||
def get_userloved(self):
|
||||
"""Whether the user loved this track"""
|
||||
|
||||
if not self.username: return
|
||||
|
||||
params = self._get_params()
|
||||
params['username'] = self.username
|
||||
|
||||
doc = self._request("track.getInfo", True, params)
|
||||
loved = _number(_extract(doc, "userloved"))
|
||||
return bool(loved)
|
||||
|
||||
def is_streamable(self):
|
||||
"""Returns True if the track is available at Last.fm."""
|
||||
|
||||
|
|
|
@ -498,6 +498,21 @@ class TestPyLast(unittest.TestCase):
|
|||
self.assertGreaterEqual(count, 0)
|
||||
|
||||
|
||||
def test_user_loved_in_track_info(self):
|
||||
# Arrange
|
||||
artist = "Test Artist"
|
||||
title = "Test Title"
|
||||
track = pylast.Track(artist = artist, title = title, network = self.network, username = self.username)
|
||||
|
||||
# Act
|
||||
loved = track.get_userloved()
|
||||
|
||||
# Assert
|
||||
self.assertIsNotNone(loved)
|
||||
self.assertIsInstance(loved, bool)
|
||||
self.assertNotIsInstance(loved, str)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
# For quick testing of a single case (eg. test = "test_scrobble")
|
||||
|
|
Loading…
Reference in a new issue