Merge pull request #262 from zinootje/master
Save image URLs to Album on Album.get_cover_image and AlbumSearch.get_next_page
This commit is contained in:
commit
cef02d0700
|
@ -732,6 +732,7 @@ class _Request(object):
|
||||||
"""Representing an abstract web service operation."""
|
"""Representing an abstract web service operation."""
|
||||||
|
|
||||||
def __init__(self, network, method_name, params=None):
|
def __init__(self, network, method_name, params=None):
|
||||||
|
print(method_name)
|
||||||
|
|
||||||
if params is None:
|
if params is None:
|
||||||
params = {}
|
params = {}
|
||||||
|
@ -1369,7 +1370,8 @@ class _Opus(_BaseObject, _Taggable):
|
||||||
|
|
||||||
__hash__ = _BaseObject.__hash__
|
__hash__ = _BaseObject.__hash__
|
||||||
|
|
||||||
def __init__(self, artist, title, network, ws_prefix, username=None):
|
def __init__(self, artist, title, network, ws_prefix, username=None,
|
||||||
|
images=None):
|
||||||
"""
|
"""
|
||||||
Create an opus instance.
|
Create an opus instance.
|
||||||
# Parameters:
|
# Parameters:
|
||||||
|
@ -1388,6 +1390,7 @@ class _Opus(_BaseObject, _Taggable):
|
||||||
|
|
||||||
self.title = title
|
self.title = title
|
||||||
self.username = username
|
self.username = username
|
||||||
|
self.images = images
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "pylast.%s(%s, %s, %s)" % (
|
return "pylast.%s(%s, %s, %s)" % (
|
||||||
|
@ -1485,8 +1488,9 @@ class Album(_Opus):
|
||||||
|
|
||||||
__hash__ = _Opus.__hash__
|
__hash__ = _Opus.__hash__
|
||||||
|
|
||||||
def __init__(self, artist, title, network, username=None):
|
def __init__(self, artist, title, network, username=None, images=None):
|
||||||
super(Album, self).__init__(artist, title, network, "album", username)
|
super(Album, self).__init__(artist, title, network, "album", username,
|
||||||
|
images)
|
||||||
|
|
||||||
def get_cover_image(self, size=SIZE_EXTRA_LARGE):
|
def get_cover_image(self, size=SIZE_EXTRA_LARGE):
|
||||||
"""
|
"""
|
||||||
|
@ -1497,10 +1501,11 @@ class Album(_Opus):
|
||||||
SIZE_MEDIUM
|
SIZE_MEDIUM
|
||||||
SIZE_SMALL
|
SIZE_SMALL
|
||||||
"""
|
"""
|
||||||
|
if not self.images:
|
||||||
return _extract_all(
|
self.images = _extract_all(
|
||||||
self._request(
|
self._request(self.ws_prefix + ".getInfo", cacheable=True),
|
||||||
self.ws_prefix + ".getInfo", cacheable=True), 'image')[size]
|
'image')
|
||||||
|
return self.images[size]
|
||||||
|
|
||||||
def get_tracks(self):
|
def get_tracks(self):
|
||||||
"""Returns the list of Tracks on this album."""
|
"""Returns the list of Tracks on this album."""
|
||||||
|
@ -2544,7 +2549,8 @@ class AlbumSearch(_Search):
|
||||||
seq.append(Album(
|
seq.append(Album(
|
||||||
_extract(node, "artist"),
|
_extract(node, "artist"),
|
||||||
_extract(node, "name"),
|
_extract(node, "name"),
|
||||||
self.network))
|
self.network,
|
||||||
|
images=_extract_all(node, 'image')))
|
||||||
|
|
||||||
return seq
|
return seq
|
||||||
|
|
||||||
|
|
|
@ -315,6 +315,26 @@ class TestPyLastNetwork(PyLastTestCase):
|
||||||
self.assertIsInstance(results, list)
|
self.assertIsInstance(results, list)
|
||||||
self.assertIsInstance(results[0], pylast.Album)
|
self.assertIsInstance(results[0], pylast.Album)
|
||||||
|
|
||||||
|
def test_album_search_images(self):
|
||||||
|
# Arrange
|
||||||
|
album = "Nevermind"
|
||||||
|
search = self.network.search_for_album(album)
|
||||||
|
|
||||||
|
# Act
|
||||||
|
results = search.get_next_page()
|
||||||
|
images = results[0].images
|
||||||
|
|
||||||
|
# Assert
|
||||||
|
self.assertEqual(len(images), 4)
|
||||||
|
|
||||||
|
self.assertTrue(images[pylast.SIZE_SMALL].startswith("https://"))
|
||||||
|
self.assertTrue(images[pylast.SIZE_SMALL].endswith(".png"))
|
||||||
|
self.assertIn("/34s/", images[pylast.SIZE_SMALL])
|
||||||
|
|
||||||
|
self.assertTrue(images[pylast.SIZE_EXTRA_LARGE].startswith("https://"))
|
||||||
|
self.assertTrue(images[pylast.SIZE_EXTRA_LARGE].endswith(".png"))
|
||||||
|
self.assertIn("/300x300/", images[pylast.SIZE_EXTRA_LARGE])
|
||||||
|
|
||||||
def test_artist_search(self):
|
def test_artist_search(self):
|
||||||
# Arrange
|
# Arrange
|
||||||
artist = "Nirvana"
|
artist = "Nirvana"
|
||||||
|
|
Loading…
Reference in a new issue