Source code for spotify.offline

from __future__ import unicode_literals

import spotify
from spotify import ffi, lib


__all__ = [
    'OfflineSyncStatus',
]


[docs]class Offline(object): """Offline sync controller. You'll never need to create an instance of this class yourself. You'll find it ready to use as the :attr:`~Session.offline` attribute on the :class:`Session` instance. """ def __init__(self, session): self._session = session @property def tracks_to_sync(self): """Total number of tracks that needs download before everything from all playlists that are marked for offline is fully synchronized. """ return lib.sp_offline_tracks_to_sync(self._session._sp_session) @property def num_playlists(self): """Number of playlists that are marked for offline synchronization.""" return lib.sp_offline_num_playlists(self._session._sp_session) @property def sync_status(self): """The :class:`OfflineSyncStatus` or :class:`None` if not syncing. The :attr:`~SessionEvent.OFFLINE_STATUS_UPDATED` event is emitted on the session object when this is updated. """ sp_offline_sync_status = ffi.new('sp_offline_sync_status *') syncing = lib.sp_offline_sync_get_status( self._session._sp_session, sp_offline_sync_status) if syncing: return spotify.OfflineSyncStatus(sp_offline_sync_status) @property def time_left(self): """The number of seconds until the user has to get online and relogin.""" return lib.sp_offline_time_left(self._session._sp_session)
[docs]class OfflineSyncStatus(object): """A Spotify offline sync status object. You'll never need to create an instance of this class yourself. You'll find it ready for use as the :attr:`~spotify.Offline.sync_status` attribute on the :attr:`~spotify.Session.offline` attribute on the :class:`~spotify.Session` instance. """ def __init__(self, sp_offline_sync_status): self._sp_offline_sync_status = sp_offline_sync_status @property def queued_tracks(self): """Number of tracks left to sync in current sync operation.""" return self._sp_offline_sync_status.queued_tracks @property def done_tracks(self): """Number of tracks marked for sync that existed on the device before the current sync operation.""" return self._sp_offline_sync_status.done_tracks @property def copied_tracks(self): """Number of tracks copied during the current sync operation.""" return self._sp_offline_sync_status.copied_tracks @property def willnotcopy_tracks(self): """Number of tracks marked for sync that will not be copied.""" return self._sp_offline_sync_status.willnotcopy_tracks @property def error_tracks(self): """Number of tracks that failed syncing during the current sync operation.""" return self._sp_offline_sync_status.error_tracks @property def syncing(self): """If sync operation is in progress.""" return bool(self._sp_offline_sync_status.syncing)