yading@7
|
1 """
|
yading@7
|
2 This module contains higher level classes to query Musixmatch API and build
|
yading@7
|
3 simple dictionary-like objects representing an Album or an AlbumsCollection.
|
yading@7
|
4
|
yading@7
|
5 >>> from musixmatch.album import Album, AlbumsCollection
|
yading@7
|
6 >>> import musixmatch.api
|
yading@7
|
7 >>>
|
yading@7
|
8 >>> try:
|
yading@7
|
9 ... album = Album(album_id=292)
|
yading@7
|
10 ... collection = AlbumsCollection.fromArtist(country='it', page=1)
|
yading@7
|
11 ... except musixmatch.api.Error, e:
|
yading@7
|
12 ... pass
|
yading@7
|
13 """
|
yading@7
|
14 import musixmatch
|
yading@7
|
15 __license__ = musixmatch.__license__
|
yading@7
|
16 __author__ = musixmatch.__author__
|
yading@7
|
17
|
yading@7
|
18 from musixmatch.base import Item, ItemsCollection
|
yading@7
|
19 from musixmatch.ws import album, artist
|
yading@7
|
20
|
yading@7
|
21 class Album(Item):
|
yading@7
|
22 """
|
yading@7
|
23 This class build a :py:class:`dict` like object representing an album. It
|
yading@7
|
24 can get album information through the :py:class:`musixmatch.api.Method`
|
yading@7
|
25 **album.get** or from an already well-formed :py:class:`dict`. Create an
|
yading@7
|
26 Album object based on a given keyword argument:
|
yading@7
|
27
|
yading@7
|
28 :param album_id: musiXmatch album ID
|
yading@7
|
29 :param album_data: an already well-formed :py:class:`dict` of album data.
|
yading@7
|
30
|
yading@7
|
31 Once information are collected, the following keys are available:
|
yading@7
|
32
|
yading@7
|
33 :keyword album_id: musiXmatch album ID
|
yading@7
|
34 :keyword album_name: album name
|
yading@7
|
35 :keyword album_release_date: album release date
|
yading@7
|
36 :keyword album_release_type: type of the album
|
yading@7
|
37 :keyword album_coverart_100x100: coverart URL
|
yading@7
|
38 :keyword artist_id: album artist musiXmatch ID
|
yading@7
|
39 :keyword artist_name: album artist name
|
yading@7
|
40 """
|
yading@7
|
41 __api_method__ = album.get
|
yading@7
|
42
|
yading@7
|
43 class AlbumsCollection(ItemsCollection):
|
yading@7
|
44 """
|
yading@7
|
45 This class build a :py:class:`list` like object representing an albums
|
yading@7
|
46 collection. It accepts :py:class:`dict` or :py:class:`Album` objects.
|
yading@7
|
47 """
|
yading@7
|
48 __allowedin__ = Album
|
yading@7
|
49
|
yading@7
|
50 @classmethod
|
yading@7
|
51 def fromArtist(cls, **keywords):
|
yading@7
|
52 """
|
yading@7
|
53 This classmethod builds an :py:class:`AlbumsCollection` from a
|
yading@7
|
54 **artist.albums.get** :py:class:`musixmatch.api.Method` call.
|
yading@7
|
55
|
yading@7
|
56 :param artist_id: album artist musiXmatch ID
|
yading@7
|
57 :param g_album_name: group albums by name
|
yading@7
|
58 :param s_release_date: sort albums by release date
|
yading@7
|
59 :rtype: :py:class:`AlbumsCollection`
|
yading@7
|
60 """
|
yading@7
|
61 return cls.fromResponseMessage(artist.albums.get(**keywords))
|
yading@7
|
62
|