Top

spotify.v1.browse.categories module

from spotify import values
from spotify.object.image import Image
from spotify.page import Page
from spotify.resource import Instance, Resource
from spotify.v1.browse.categories.playlist import PlaylistList


class CategoryInstance(Instance):

    def __init__(self, version, properties):
        super(CategoryInstance, self).__init__(version, properties)
        self._context = CategoryContext(self.version, self.id)

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

    @property
    def icons(self):
        return [Image.from_json(icon) for icon in self.property('icons')]

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

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

    @property
    def playlists(self):
        return self._context.playlists


class CategoryContext(Resource):

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

        self._playlists = None

    @property
    def playlists(self):
        if not self._playlists:
            self._playlists = PlaylistList(self.version, self.id)

        return self._playlists

    def fetch(self):
        response = self.version.request('GET', '/browse/categories/{}'.format(self.id))
        return CategoryInstance(self.version, response.json())


class CategoryList(Resource):

    def __init__(self, version):
        super(CategoryList, self).__init__(version)

    def list(self, country=values.UNSET, locale=values.UNSET, limit=values.UNSET, offset=values.UNSET):
        params = values.of({
            'country': country,
            'locale': locale,
            'limit': limit,
            'offset': offset
        })
        response = self.version.request('GET', '/browse/categories', params=params)
        return CategoryPage(self.version, response.json()['categories'], 'items')


class CategoryPage(Page):

    @property
    def instance_class(self):
        return CategoryInstance

Classes

class CategoryContext

class CategoryContext(Resource):

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

        self._playlists = None

    @property
    def playlists(self):
        if not self._playlists:
            self._playlists = PlaylistList(self.version, self.id)

        return self._playlists

    def fetch(self):
        response = self.version.request('GET', '/browse/categories/{}'.format(self.id))
        return CategoryInstance(self.version, response.json())

Ancestors (in MRO)

Instance variables

var id

var playlists

Methods

def __init__(

self, version, id)

def __init__(self, version, id):
    super(CategoryContext, self).__init__(version)
    self.id = id
    self._playlists = None

def fetch(

self)

def fetch(self):
    response = self.version.request('GET', '/browse/categories/{}'.format(self.id))
    return CategoryInstance(self.version, response.json())

class CategoryInstance

class CategoryInstance(Instance):

    def __init__(self, version, properties):
        super(CategoryInstance, self).__init__(version, properties)
        self._context = CategoryContext(self.version, self.id)

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

    @property
    def icons(self):
        return [Image.from_json(icon) for icon in self.property('icons')]

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

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

    @property
    def playlists(self):
        return self._context.playlists

Ancestors (in MRO)

  • CategoryInstance
  • spotify.resource.Instance
  • spotify.resource.Resource
  • __builtin__.object

Instance variables

var href

var icons

var id

var name

var playlists

Methods

def __init__(

self, version, properties)

def __init__(self, version, properties):
    super(CategoryInstance, self).__init__(version, properties)
    self._context = CategoryContext(self.version, self.id)

def property(

self, name, default=None)

def property(self, name, default=None):
    return self.properties.get(name, default)

class CategoryList

class CategoryList(Resource):

    def __init__(self, version):
        super(CategoryList, self).__init__(version)

    def list(self, country=values.UNSET, locale=values.UNSET, limit=values.UNSET, offset=values.UNSET):
        params = values.of({
            'country': country,
            'locale': locale,
            'limit': limit,
            'offset': offset
        })
        response = self.version.request('GET', '/browse/categories', params=params)
        return CategoryPage(self.version, response.json()['categories'], 'items')

Ancestors (in MRO)

Methods

def __init__(

self, version)

def __init__(self, version):
    super(CategoryList, self).__init__(version)

def list(

self, country='UNSET', locale='UNSET', limit='UNSET', offset='UNSET')

def list(self, country=values.UNSET, locale=values.UNSET, limit=values.UNSET, offset=values.UNSET):
    params = values.of({
        'country': country,
        'locale': locale,
        'limit': limit,
        'offset': offset
    })
    response = self.version.request('GET', '/browse/categories', params=params)
    return CategoryPage(self.version, response.json()['categories'], 'items')

class CategoryPage

class CategoryPage(Page):

    @property
    def instance_class(self):
        return CategoryInstance

Ancestors (in MRO)

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

Sub-modules