Source code for spotify.player

from __future__ import unicode_literals

import spotify
from spotify import lib


__all__ = [
    'PlayerState',
]


[docs]class PlayerState(object): UNLOADED = 'unloaded' LOADED = 'loaded' PLAYING = 'playing' PAUSED = 'paused'
[docs]class Player(object): """Playback controller. You'll never need to create an instance of this class yourself. You'll find it ready to use as the :attr:`~Session.player` attribute on the :class:`Session` instance. """ state = PlayerState.UNLOADED """The player state. - The state is initially :attr:`PlayerState.UNLOADED`. - When a track is loaded, the state changes to :attr:`PlayerState.LOADED`. - When playback is started the state changes to :attr:`PlayerState.PLAYING`. - When playback is paused the state changes to :attr:`PlayerState.PAUSED`. - When the track is unloaded the state changes to :attr:`PlayerState.UNLOADED` again. """ def __init__(self, session): self._session = session
[docs] def load(self, track): """Load :class:`Track` for playback.""" spotify.Error.maybe_raise(lib.sp_session_player_load( self._session._sp_session, track._sp_track)) self.state = PlayerState.LOADED
[docs] def seek(self, offset): """Seek to the offset in ms in the currently loaded track.""" spotify.Error.maybe_raise( lib.sp_session_player_seek(self._session._sp_session, offset))
[docs] def play(self, play=True): """Play the currently loaded track. This will cause audio data to be passed to the :attr:`~SessionCallbacks.music_delivery` callback. If ``play`` is set to :class:`False`, playback will be paused. """ spotify.Error.maybe_raise(lib.sp_session_player_play( self._session._sp_session, play)) if play: self.state = PlayerState.PLAYING else: self.state = PlayerState.PAUSED
[docs] def pause(self): """Pause the currently loaded track. This is the same as calling :meth:`play` with :class:`False`. """ self.play(False)
[docs] def unload(self): """Stops the currently playing track.""" spotify.Error.maybe_raise( lib.sp_session_player_unload(self._session._sp_session)) self.state = PlayerState.UNLOADED
[docs] def prefetch(self, track): """Prefetch a :class:`Track` for playback. This can be used to make libspotify download and cache a track before playing it. """ spotify.Error.maybe_raise(lib.sp_session_player_prefetch( self._session._sp_session, track._sp_track))