spotify.v1.artist module
from spotify.object.followers import Followers
from spotify.object.image import Image
from spotify.page import Page
from spotify.resource import Resource, UpgradableInstance
from spotify.v1.artist.album import AlbumList
from spotify.v1.artist.related_artist import RelatedArtistList
from spotify.v1.artist.top_track import TopTrackList
class ArtistContext(Resource):
def __init__(self, version, id):
super(ArtistContext, self).__init__(version)
self.id = id
self._albums = None
self._top_tracks = None
self._related_artists = None
@property
def albums(self):
if not self._albums:
self._albums = AlbumList(self.version, self.id)
return self._albums
@property
def top_tracks(self):
if not self._top_tracks:
self._top_tracks = TopTrackList(self.version, self.id)
return self.top_tracks
@property
def related_artists(self):
if not self._related_artists:
self._related_artists = RelatedArtistList(self.version, self.id)
return self._related_artists
def fetch(self):
response = self.version.request('GET', '/artists/{}'.format(self.id))
return ArtistInstance(self.version, response.json())
class ArtistInstance(UpgradableInstance):
def __init__(self, version, properties):
super(ArtistInstance, self).__init__(version, properties)
self._context = ArtistContext(self.version, self.id)
@property
def external_urls(self):
return self.property('external_urls')
@property
def followers(self):
return Followers.from_json(self.property('followers'))
@property
def genres(self):
return self.property('genres')
@property
def id(self):
return self.property('id')
@property
def images(self):
return [Image.from_json(image) for image in self.property('images')]
@property
def name(self):
return self.property('name')
@property
def popularity(self):
return self.property('popularity')
@property
def type(self):
return self.property('type')
@property
def uri(self):
return self.property('uri')
@property
def albums(self):
return self._context.albums
@property
def top_tracks(self):
return self._context.top_tracks
@property
def related_artists(self):
return self._context.related_artists
class ArtistList(Resource):
def get(self, id):
return ArtistContext(self.version, id)
def list(self, ids):
response = self.version.request('GET', '/artists', params={
'ids': ','.join(ids)
})
return ArtistPage(self.version, response.json(), 'artists')
class ArtistPage(Page):
@property
def instance_class(self):
return ArtistInstance
Classes
class ArtistContext
class ArtistContext(Resource):
def __init__(self, version, id):
super(ArtistContext, self).__init__(version)
self.id = id
self._albums = None
self._top_tracks = None
self._related_artists = None
@property
def albums(self):
if not self._albums:
self._albums = AlbumList(self.version, self.id)
return self._albums
@property
def top_tracks(self):
if not self._top_tracks:
self._top_tracks = TopTrackList(self.version, self.id)
return self.top_tracks
@property
def related_artists(self):
if not self._related_artists:
self._related_artists = RelatedArtistList(self.version, self.id)
return self._related_artists
def fetch(self):
response = self.version.request('GET', '/artists/{}'.format(self.id))
return ArtistInstance(self.version, response.json())
Ancestors (in MRO)
- ArtistContext
- spotify.resource.Resource
- __builtin__.object
Instance variables
var albums
var id
var top_tracks
Methods
def __init__(
self, version, id)
def __init__(self, version, id):
super(ArtistContext, self).__init__(version)
self.id = id
self._albums = None
self._top_tracks = None
self._related_artists = None
def fetch(
self)
def fetch(self):
response = self.version.request('GET', '/artists/{}'.format(self.id))
return ArtistInstance(self.version, response.json())
class ArtistInstance
class ArtistInstance(UpgradableInstance):
def __init__(self, version, properties):
super(ArtistInstance, self).__init__(version, properties)
self._context = ArtistContext(self.version, self.id)
@property
def external_urls(self):
return self.property('external_urls')
@property
def followers(self):
return Followers.from_json(self.property('followers'))
@property
def genres(self):
return self.property('genres')
@property
def id(self):
return self.property('id')
@property
def images(self):
return [Image.from_json(image) for image in self.property('images')]
@property
def name(self):
return self.property('name')
@property
def popularity(self):
return self.property('popularity')
@property
def type(self):
return self.property('type')
@property
def uri(self):
return self.property('uri')
@property
def albums(self):
return self._context.albums
@property
def top_tracks(self):
return self._context.top_tracks
@property
def related_artists(self):
return self._context.related_artists
Ancestors (in MRO)
- ArtistInstance
- spotify.resource.UpgradableInstance
- spotify.resource.Instance
- spotify.resource.Resource
- __builtin__.object
Instance variables
var albums
var external_urls
var followers
var genres
var href
var id
var images
var name
var popularity
var top_tracks
var type
var uri
Methods
def __init__(
self, version, properties)
def __init__(self, version, properties):
super(ArtistInstance, self).__init__(version, properties)
self._context = ArtistContext(self.version, self.id)
def property(
self, name, default=None)
def property(self, name, default=None):
prop = super(UpgradableInstance, self).property(name)
if prop:
return prop
self.upgrade()
return super(UpgradableInstance, self).property(name)
def upgrade(
self)
def upgrade(self):
response = self.version.client.request('GET', self.href)
self.properties = response.json()
class ArtistList
class ArtistList(Resource):
def get(self, id):
return ArtistContext(self.version, id)
def list(self, ids):
response = self.version.request('GET', '/artists', params={
'ids': ','.join(ids)
})
return ArtistPage(self.version, response.json(), 'artists')
Ancestors (in MRO)
- ArtistList
- spotify.resource.Resource
- __builtin__.object
Methods
def __init__(
self, version)
def __init__(self, version):
self.version = version
def get(
self, id)
def get(self, id):
return ArtistContext(self.version, id)
def list(
self, ids)
def list(self, ids):
response = self.version.request('GET', '/artists', params={
'ids': ','.join(ids)
})
return ArtistPage(self.version, response.json(), 'artists')
class ArtistPage
class ArtistPage(Page):
@property
def instance_class(self):
return ArtistInstance
Ancestors (in MRO)
- ArtistPage
- spotify.page.Page
- spotify.resource.Resource
- __builtin__.object
Instance variables
var instance_class
Methods
def __init__(
self, version, data, key)
def __init__(self, version, data, key):
super(Page, self).__init__(version)
self._key = key
self._items = iter([self.instance_class(self.version, item) for item in data.get(key, [])])
del data[key]
self._meta = data
def has_next_page(
self)
def has_next_page(self):
return 'next' in self._meta and self._meta['next'] is not None
def next_page(
self)
def next_page(self):
response = self.version.request(self._meta['next'])
return self.__class__(
self.version,
response.json(),
self._key
)