def is_scrobbling(self, provider): state = None handle_sp_error( self.__session_interface.is_scrobbling(self.__session_struct, provider, state)) return state
def __init__(self, callbacks, cache_location="", settings_location="", app_key=None, user_agent=None, compress_playlists=False, dont_save_metadata_for_playlists=False, initially_unload_playlists=False, device_id=None, proxy=None, proxy_username=None, proxy_password=None, ca_certs_filename=None, tracefile=None): #Low level interface self.__session_interface = _session.SessionInterface() #Callback managers self._user_callbacks = spotify.CallbackQueueManager() self._metadata_callbacks = spotify.CallbackQueueManager() #prepare callbacks self.__callback_manager = spotify.CallbackManager() self.__callbacks = ProxySessionCallbacks(self, callbacks, self.__callback_manager) #app key conversion appkey_c = (ctypes.c_byte * len(app_key))(*app_key) args = [ self.api_version, cache_location, settings_location, appkey_c, ctypes.sizeof(appkey_c), user_agent, ctypes.pointer(self.__callbacks.get_callback_struct()), ctypes.c_void_p(), compress_playlists, dont_save_metadata_for_playlists, initially_unload_playlists, device_id, proxy, proxy_username, proxy_password, tracefile, ] #Linux builds have an extra member just before tracefile if is_linux(): args.insert(-1, ca_certs_filename) #initialize app config config = _session.config(*args) self.__session_struct = ctypes.c_void_p() err = self.__session_interface.create( ctypes.byref(config), ctypes.byref(self.__session_struct)) spotify.handle_sp_error(err)
def is_scrobbling_possible(self, provider): out = None handle_sp_error( self.__session_interface.is_scrobbling_possible( self.__session_struc, provider, out)) return out
def __init__( self, callbacks, cache_location="", settings_location="", app_key=None, user_agent=None, compress_playlists=False, dont_save_metadata_for_playlists=False, initially_unload_playlists=False, device_id=None, proxy=None, proxy_username=None, proxy_password=None, ca_certs_filename=None, tracefile=None, ): # Low level interface self.__session_interface = _session.SessionInterface() # Callback managers self._user_callbacks = spotify.CallbackQueueManager() self._metadata_callbacks = spotify.CallbackQueueManager() # prepare callbacks self.__callback_manager = spotify.CallbackManager() self.__callbacks = ProxySessionCallbacks(self, callbacks, self.__callback_manager) # app key conversion appkey_c = (ctypes.c_byte * len(app_key))(*app_key) args = [ self.api_version, cache_location, settings_location, appkey_c, ctypes.sizeof(appkey_c), user_agent, ctypes.pointer(self.__callbacks.get_callback_struct()), ctypes.c_void_p(), compress_playlists, dont_save_metadata_for_playlists, initially_unload_playlists, device_id, proxy, proxy_username, proxy_password, tracefile, ] # Linux builds have an extra member just before tracefile if is_linux(): args.insert(-1, ca_certs_filename) # initialize app config config = _session.config(*args) self.__session_struct = ctypes.c_void_p() err = self.__session_interface.create(ctypes.byref(config), ctypes.byref(self.__session_struct)) spotify.handle_sp_error(err)
def remove_playlist(self, index): #FIXME: Should refresh index in _playlist_objects handle_sp_error( self.__container_interface.remove_playlist( self.__container_struct, index ) )
def playlist_folder_name(self, container, index): buf = ctypes.create_string_buffer(255) handle_sp_error( container._PlaylistContainer__container_interface.playlist_folder_name( container._PlaylistContainer__container_struct, index, buf, 255 ) ) return buf.value
def playlist_folder_name(self, container, index): buf = ctypes.create_string_buffer(255) handle_sp_error( container._PlaylistContainer__container_interface. playlist_folder_name( container._PlaylistContainer__container_struct, index, buf, 255)) return buf.value
def playlist_folder_name(self, index): buf = (ctypes.c_char() * 255)() handle_sp_error( self.__container_interface.playlist_folder_name( self.__container_struct, index, ctypes.byref(buf), 255 ) ) return buf.value
def is_scrobbling(self, provider): state = None handle_sp_error( self.__session_interface.is_scrobbling( self.__session_struct, provider, state ) ) return state
def is_scrobbling_possible(self, provider): out = None handle_sp_error( self.__session_interface.is_scrobbling_possible( self.__session_struc, provider, out ) ) return out
def remove_tracks(self, tracks): arr = (ctypes.c_int * len(tracks))() for index, item in enumerate(tracks): arr[index] = item handle_sp_error( self.__playlist_interface.remove_tracks(self.__playlist_struct, ctypes.byref(arr), len(tracks)))
def add_tracks(self, tracks, position, session): arr = (ctypes.c_void_p * len(tracks))() for index, item in enumerate(tracks): arr[index] = item.get_struct() handle_sp_error( self.__playlist_interface.add_tracks(self.__playlist_struct, ctypes.byref(arr), len(tracks), position, session.get_struct()))
def remove_tracks(self, tracks): arr = (ctypes.c_int * len(tracks))() for index, item in enumerate(tracks): arr[index] = item handle_sp_error( self.__playlist_interface.remove_tracks( self.__playlist_struct, ctypes.byref(arr), len(tracks) ) )
def add_tracks(self, tracks, position, session): arr = (ctypes.c_void_p * len(tracks))() for index, item in enumerate(tracks): arr[index] = item.get_struct() handle_sp_error( self.__playlist_interface.add_tracks( self.__playlist_struct, ctypes.byref(arr), len(tracks), position, session.get_struct() ) )
def set_social_credentials(self, provider, username, password): handle_sp_error( self.__session_interface.set_social_credentials( self.__session_struct, provider, username, password))
def add_folder(self, index, name): handle_sp_error( self.__container_interface.add_folder( self.__container_struct, index, name ) )
def track_set_seen(self, index, seen): handle_sp_error( self.__playlist_interface.track_set_seen(self.__playlist_struct, index, seen))
def set_scrobbling(self, provider, state): handle_sp_error( self.__session_interface.set_scrobbling(self.__session_struct, provider, state))
def preferred_offline_bitrate(self, bitrate, allow_resync): handle_sp_error( self.__session_interface.preferred_offline_bitrate( self.__session_struct, bitrate, allow_resync))
def preferred_bitrate(self, bitrate): handle_sp_error( self.__session_interface.preferred_bitrate(self.__session_struct, bitrate))
def player_prefetch(self, track): handle_sp_error( self.__session_interface.player_prefetch(self.__session_struct, track.get_struct()))
def relogin(self): handle_sp_error(self.__session_interface.relogin( self.__session_struct))
def track_set_seen(self, index, seen): handle_sp_error( self.__playlist_interface.track_set_seen( self.__playlist_struct, index, seen ) )
def move_playlist(self, index, new_position, dry_run): handle_sp_error( self.__container_interface.move_playlist( self.__container_struct, new_position, dry_run ) )
def set_social_credentials(self, provider, username, password): handle_sp_error( self.__session_interface.set_social_credentials(self.__session_struct, provider, username, password) )
def preferred_offline_bitrate(self, bitrate, allow_resync): handle_sp_error( self.__session_interface.preferred_offline_bitrate(self.__session_struct, bitrate, allow_resync) )
def player_prefetch(self, track): handle_sp_error(self.__session_interface.player_prefetch(self.__session_struct, track.get_struct()))
def rename(self, new_name): handle_sp_error( self.__playlist_interface.rename(self.__playlist_struct, new_name) )
def relogin(self): handle_sp_error(self.__session_interface.relogin(self.__session_struct))
def rename(self, new_name): handle_sp_error( self.__playlist_interface.rename(self.__playlist_struct, new_name))
def preferred_bitrate(self, bitrate): handle_sp_error(self.__session_interface.preferred_bitrate(self.__session_struct, bitrate))
def move_playlist(self, index, new_position, dry_run): handle_sp_error( self.__container_interface.move_playlist(self.__container_struct, new_position, dry_run))
def set_scrobbling(self, provider, state): handle_sp_error(self.__session_interface.set_scrobbling(self.__session_struct, provider, state))
def add_folder(self, index, name): handle_sp_error( self.__container_interface.add_folder(self.__container_struct, index, name))
def logged_in(self, session, error): handle_sp_error(error) print "login successful"