Add support for new user.getTrackScrobbles
This commit is contained in:
parent
dc464788f2
commit
da473448f4
|
@ -2533,6 +2533,32 @@ class User(_BaseObject, _Chartable):
|
||||||
|
|
||||||
return self._get_things("getTopTracks", "track", Track, params, cacheable)
|
return self._get_things("getTopTracks", "track", Track, params, cacheable)
|
||||||
|
|
||||||
|
def get_track_scrobbles(self, artist, track, cacheable=False):
|
||||||
|
"""
|
||||||
|
Get a list of scrobbles of this tracks by this artist scrobbled by this user,
|
||||||
|
including scrobble time.
|
||||||
|
"""
|
||||||
|
|
||||||
|
params = self._get_params()
|
||||||
|
params["artist"] = artist
|
||||||
|
params["track"] = track
|
||||||
|
|
||||||
|
seq = []
|
||||||
|
for track in _collect_nodes(
|
||||||
|
None, self, self.ws_prefix + ".getTrackScrobbles", cacheable, params
|
||||||
|
):
|
||||||
|
title = _extract(track, "name")
|
||||||
|
artist = _extract(track, "artist")
|
||||||
|
date = _extract(track, "date")
|
||||||
|
album = _extract(track, "album")
|
||||||
|
timestamp = track.getElementsByTagName("date")[0].getAttribute("uts")
|
||||||
|
|
||||||
|
seq.append(
|
||||||
|
PlayedTrack(Track(artist, title, self.network), album, date, timestamp)
|
||||||
|
)
|
||||||
|
|
||||||
|
return seq
|
||||||
|
|
||||||
def get_image(self, size=SIZE_EXTRA_LARGE):
|
def get_image(self, size=SIZE_EXTRA_LARGE):
|
||||||
"""
|
"""
|
||||||
Returns the user's avatar
|
Returns the user's avatar
|
||||||
|
|
|
@ -433,6 +433,34 @@ class TestPyLastUser(TestPyLastWithLastFm):
|
||||||
self.assertIsNotNone(track)
|
self.assertIsNotNone(track)
|
||||||
self.assertIsInstance(track.network, pylast.LastFMNetwork)
|
self.assertIsInstance(track.network, pylast.LastFMNetwork)
|
||||||
|
|
||||||
|
def test_user_get_track_scrobbles(self):
|
||||||
|
# Arrange
|
||||||
|
artist = "France Gall"
|
||||||
|
title = "Laisse Tomber Les Filles"
|
||||||
|
user = self.network.get_user("bbc6music")
|
||||||
|
|
||||||
|
# Act
|
||||||
|
scrobbles = user.get_track_scrobbles(artist, title)
|
||||||
|
|
||||||
|
# Assert
|
||||||
|
self.assertGreater(len(scrobbles), 0)
|
||||||
|
self.assertEqual(str(scrobbles[0].track.artist), "France Gall")
|
||||||
|
self.assertEqual(scrobbles[0].track.title, "Laisse Tomber Les Filles")
|
||||||
|
|
||||||
|
def test_cacheable_user_get_track_scrobbles(self):
|
||||||
|
# Arrange
|
||||||
|
artist = "France Gall"
|
||||||
|
title = "Laisse Tomber Les Filles"
|
||||||
|
user = self.network.get_user("bbc6music")
|
||||||
|
|
||||||
|
# Act
|
||||||
|
result1 = user.get_track_scrobbles(artist, title, cacheable=False)
|
||||||
|
result2 = user.get_track_scrobbles(artist, title, cacheable=True)
|
||||||
|
result3 = user.get_track_scrobbles(artist, title)
|
||||||
|
|
||||||
|
# Assert
|
||||||
|
self.helper_validate_results(result1, result2, result3)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main(failfast=True)
|
unittest.main(failfast=True)
|
||||||
|
|
Loading…
Reference in a new issue