From 06f6cf627d8dc6b9be62056c52d10d142eb72f29 Mon Sep 17 00:00:00 2001 From: Hugo Date: Thu, 5 Apr 2018 18:02:16 +0300 Subject: [PATCH 1/2] Failing test for user.get_weekly_artist_charts --- tests/test_user.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/tests/test_user.py b/tests/test_user.py index 6e42530..c742bd3 100755 --- a/tests/test_user.py +++ b/tests/test_user.py @@ -388,9 +388,10 @@ class TestPyLastUser(PyLastTestCase): # Arrange user = self.network.get_user("RJ") - # Act / Assert + # Act image = user.get_image() + # Assert self.assertTrue(image.startswith("https://")) self.assertTrue(image.endswith(".png")) @@ -398,11 +399,36 @@ class TestPyLastUser(PyLastTestCase): # Arrange user = self.network.get_user("RJ") - # Act / Assert + # Act url = user.get_url() + # Assert self.assertEqual(url, "https://www.last.fm/user/rj") + def test_get_weekly_artist_charts(self): + # Arrange + user = self.network.get_user("bbc6music") + + # Act + charts = user.get_weekly_artist_charts() + artist, weight = charts[0] + + # Assert + self.assertIsNotNone(artist) + self.assertIsInstance(artist.network, pylast.LastFMNetwork) + + def test_get_weekly_track_charts(self): + # Arrange + user = self.network.get_user("bbc6music") + + # Act + charts = user.get_weekly_track_charts() + track, weight = charts[0] + + # Assert + self.assertIsNotNone(track) + self.assertIsInstance(track.network, pylast.LastFMNetwork) + if __name__ == '__main__': unittest.main(failfast=True) From 892acd6df9b30f8fbd7167e838249d0ff41044da Mon Sep 17 00:00:00 2001 From: Hugo Date: Thu, 5 Apr 2018 18:08:21 +0300 Subject: [PATCH 2/2] Artist charts have the artist name in the 'name' field. There is no 'artist' field. --- pylast/__init__.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/pylast/__init__.py b/pylast/__init__.py index 13a8681..848c0df 100644 --- a/pylast/__init__.py +++ b/pylast/__init__.py @@ -1169,8 +1169,15 @@ class _Chartable(object): seq = [] for node in doc.getElementsByTagName(chart_kind.lower()): - item = chart_type( - _extract(node, "artist"), _extract(node, "name"), self.network) + if chart_kind == "artist": + item = chart_type( + _extract(node, "name"), + self.network) + else: + item = chart_type( + _extract(node, "artist"), + _extract(node, "name"), + self.network) weight = _number(_extract(node, "playcount")) seq.append(TopItem(item, weight))