annotate musixmatch-master/musixmatch/album.py @ 13:844d341cf643 tip

Back up before ISMIR
author Yading Song <yading.song@eecs.qmul.ac.uk>
date Thu, 31 Oct 2013 13:17:06 +0000
parents 8c29444cb5fd
children
rev   line source
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