From bb589a4d2193400eb84adf14578f696228abbe08 Mon Sep 17 00:00:00 2001 From: Chris Newton Date: Wed, 28 Feb 2018 17:04:46 -0700 Subject: [PATCH 1/2] Add missing limit parameter for track.getSimilar --- pylast/__init__.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pylast/__init__.py b/pylast/__init__.py index a1ee98f..f644f3c 100644 --- a/pylast/__init__.py +++ b/pylast/__init__.py @@ -2016,13 +2016,17 @@ class Track(_Opus): self._request(self.ws_prefix + '.unlove') - def get_similar(self): + def get_similar(self, limit=None): """ Returns similar tracks for this track on the network, based on listening data. """ - doc = self._request(self.ws_prefix + '.getSimilar', True) + params = self._get_params() + if limit: + params['limit'] = limit + + doc = self._request(self.ws_prefix + '.getSimilar', True, params) seq = [] for node in doc.getElementsByTagName(self.ws_prefix): From 9cb6f6e181becb93e110b98d0faa1a5de8f72046 Mon Sep 17 00:00:00 2001 From: Chris Newton Date: Wed, 28 Feb 2018 20:28:56 -0700 Subject: [PATCH 2/2] Added a test case for limits on track.getSimilar --- tests/test_pylast_track.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/test_pylast_track.py b/tests/test_pylast_track.py index 7b0c99a..6add41e 100755 --- a/tests/test_pylast_track.py +++ b/tests/test_pylast_track.py @@ -160,6 +160,16 @@ class TestPyLastTrack(PyLastTestCase): break self.assertTrue(found) + def test_track_get_similar_limits(self): + # Arrange + track = pylast.Track("Cher", "Believe", self.network) + + # Act/Assert + self.assertEqual(len(track.get_similar(limit=20)), 20) + self.assertLessEqual(len(track.get_similar(limit=10)), 10) + self.assertGreaterEqual(len(track.get_similar(limit=None)), 23) + self.assertGreaterEqual(len(track.get_similar(limit=0)), 23) + if __name__ == '__main__': unittest.main(failfast=True)