Top

spotify.v1.track module

from spotify import values
from spotify.page import Page
from spotify.resource import Resource, UpgradableInstance


class TrackContext(Resource):

    def __init__(self, version, id):
        super(TrackContext, self).__init__(version)
        self.id = id

    def fetch(self, market=values.UNSET):
        params = values.of({
            'market': market
        })
        response = self.version.request('GET', '/tracks/{}'.format(self.id), params=params)
        return TrackInstance(self.version, response.json())


class TrackInstance(UpgradableInstance):

    @property
    def artists(self):
        from spotify.v1.artist import ArtistInstance
        return [ArtistInstance(self.version, artist) for artist in self.property('artists')]

    @property
    def available_markets(self):
        return self.property('available_markets')

    @property
    def disc_number(self):
        return self.property('disc_number')

    @property
    def duration_ms(self):
        return self.property('duration_ms')

    @property
    def explicit(self):
        return self.property('explicit')

    @property
    def external_urls(self):
        return self.property('external_urls')

    @property
    def id(self):
        return self.property('id')

    @property
    def name(self):
        return self.property('name')

    @property
    def preview_url(self):
        return self.property('preview_url')

    @property
    def track_number(self):
        return self.property('track_number')

    @property
    def type(self):
        return self.property('type')

    @property
    def uri(self):
        return self.property('uri')


class TrackList(Resource):

    def get(self, id):
        return TrackContext(self.version, id)

    def list(self, ids, market=values.UNSET):
        params = values.of({
            'ids': ','.join(ids),
            'market': market
        })

        response = self.version.request('GET', '/tracks', params=params)
        return TrackPage(self.version, response.json(), 'tracks')


class TrackPage(Page):

    @property
    def instance_class(self):
        return TrackInstance

Classes

class TrackContext

class TrackContext(Resource):

    def __init__(self, version, id):
        super(TrackContext, self).__init__(version)
        self.id = id

    def fetch(self, market=values.UNSET):
        params = values.of({
            'market': market
        })
        response = self.version.request('GET', '/tracks/{}'.format(self.id), params=params)
        return TrackInstance(self.version, response.json())

Ancestors (in MRO)

Instance variables

var id

Methods

def __init__(

self, version, id)

def __init__(self, version, id):
    super(TrackContext, self).__init__(version)
    self.id = id

def fetch(

self, market='UNSET')

def fetch(self, market=values.UNSET):
    params = values.of({
        'market': market
    })
    response = self.version.request('GET', '/tracks/{}'.format(self.id), params=params)
    return TrackInstance(self.version, response.json())

class TrackInstance

class TrackInstance(UpgradableInstance):

    @property
    def artists(self):
        from spotify.v1.artist import ArtistInstance
        return [ArtistInstance(self.version, artist) for artist in self.property('artists')]

    @property
    def available_markets(self):
        return self.property('available_markets')

    @property
    def disc_number(self):
        return self.property('disc_number')

    @property
    def duration_ms(self):
        return self.property('duration_ms')

    @property
    def explicit(self):
        return self.property('explicit')

    @property
    def external_urls(self):
        return self.property('external_urls')

    @property
    def id(self):
        return self.property('id')

    @property
    def name(self):
        return self.property('name')

    @property
    def preview_url(self):
        return self.property('preview_url')

    @property
    def track_number(self):
        return self.property('track_number')

    @property
    def type(self):
        return self.property('type')

    @property
    def uri(self):
        return self.property('uri')

Ancestors (in MRO)

  • TrackInstance
  • spotify.resource.UpgradableInstance
  • spotify.resource.Instance
  • spotify.resource.Resource
  • __builtin__.object

Instance variables

var artists

var available_markets

var disc_number

var duration_ms

var explicit

var external_urls

var href

var id

var name

var preview_url

var track_number

var type

var uri

Methods

def __init__(

self, version, properties)

def __init__(self, version, properties):
    super(UpgradableInstance, self).__init__(version, properties)

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 TrackList

class TrackList(Resource):

    def get(self, id):
        return TrackContext(self.version, id)

    def list(self, ids, market=values.UNSET):
        params = values.of({
            'ids': ','.join(ids),
            'market': market
        })

        response = self.version.request('GET', '/tracks', params=params)
        return TrackPage(self.version, response.json(), 'tracks')

Ancestors (in MRO)

  • TrackList
  • 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 TrackContext(self.version, id)

def list(

self, ids, market='UNSET')

def list(self, ids, market=values.UNSET):
    params = values.of({
        'ids': ','.join(ids),
        'market': market
    })
    response = self.version.request('GET', '/tracks', params=params)
    return TrackPage(self.version, response.json(), 'tracks')

class TrackPage

class TrackPage(Page):

    @property
    def instance_class(self):
        return TrackInstance

Ancestors (in MRO)

  • TrackPage
  • 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
    )