def login(self): # Assuming a spotify_appkey.key in the current dir self.session = spotify.Session() # Process events in the background self._loop = spotify.EventLoop(self.session) self._loop.start() # Connect an audio sink if sys.platform == "darwin": audio = spotify.PortAudioSink(self.session) else: audio = spotify.AlsaSink(self.session) # Register event listeners self.session.on(spotify.SessionEvent.CONNECTION_STATE_UPDATED, self._on_connection_state_updated) self.session.on(spotify.SessionEvent.END_OF_TRACK, self._on_end_of_track) # Assuming a previous login with remember_me=True and a proper logout if self._settings.SPOTIFY_USERNAME == None or self._settings.SPOTIFY_PASSWORD == None: raise StandardError("No username/password") self.session.login(self._settings.SPOTIFY_USERNAME, self._settings.SPOTIFY_PASSWORD) self._logged_in.wait() return self.session
def __init__(self): self.logger = logging.getLogger(__name__) self.session = spotify.Session() self.loop = spotify.EventLoop(self.session) self.audio = spotify.PortAudioSink(self.session) self.current_state = SpotifyService.STOPPED self.loop.start()
def account_login(self, source, username, passwd): if source == 'spotify': if self.session.connection.state is spotify.ConnectionState.LOGGED_IN: return # Process events in the background loop = spotify.EventLoop(self.session) loop.start() # Connect an audio sink try: audio = spotify.PortAudioSink(self.session) except: audio = spotify.AlsaSink(self.session) # Events for coordination self.logged_in = threading.Event() self.end_of_track = threading.Event() # Register event listeners self.session.on(spotify.SessionEvent.CONNECTION_STATE_UPDATED, self.on_connection_state_updated) self.session.on(spotify.SessionEvent.END_OF_TRACK, self.on_end_of_track) self.session.login(username, passwd) # Wait until flag is set true self.logged_in.wait() print self.session.user # self.session.inbox.load() logger.info("User %s successfully logged in.", self.session.user) self.logged_in.wait()
def _set_audio_sink(self): """Sets audio sink for device.""" # Patch the Spotify Port Audio Sink with this current Port Audio Sink spotify.PortAudioSink = MyPortAudio self._audio = spotify.PortAudioSink(self._session) print("###########################################") print("Audio sink set") print("###########################################")
def __init__(self): self.is_logged_in = False # We assume a spotify_appkey.key is in the current directory self.session = spotify.Session() # Process Spotify events automatically in the background loop = spotify.EventLoop(self.session) loop.start() # Connect to the AlsaAudio Sink, which works best for the Pi if you're on Linux, # but otherwise connect to the more versatile PortAudio sink if platform.system() == "Linux": audio = spotify.AlsaSink(self.session) else: audio = spotify.PortAudioSink(self.session)
def __init__(self, uname, pw, sink): self.userName = uname self.playlists = [] self.queue = deque() self.loggedIn = False self.status = "stopped" self.loggedInEvent = threading.Event() self.session = spotify.Session() if (sink == "alsa"): self.player = spotify.AlsaSink(self.session) elif (sink == "port"): self.player = spotify.PortAudioSink(self.session) else: print "unrecognized sink option: " + sink print "playback unavailable" self.loop = spotify.EventLoop(self.session) self.loop.start() self.session.on( spotify.SessionEvent.CONNECTION_STATE_UPDATED, self.connectionListener ) self.session.on( spotify.SessionEvent.END_OF_TRACK, self.playNextTrack ) self.session.login(uname, pw) while not self.loggedInEvent.wait(0.1): self.session.process_events() self.loggedIn = True
def __init__(self): self.end_of_track = threading.Event() self.logged_in = threading.Event() self.logged_out = threading.Event() self.logged_out.set() log.debug("Spawning spotify.Session()") self.session = spotify.Session() self.session.on(spotify.SessionEvent.CONNECTION_STATE_UPDATED, self.on_connection_state_changed) self.session.on(spotify.SessionEvent.END_OF_TRACK, self.on_end_of_track) self.tracks = [] myPlatform = platform.system() log.debug("Detecting platform") try: if myPlatform == 'Linux': log.info( "{0} platform detected; using ALSA".format(myPlatform)) self.audio_driver = spotify.AlsaSink(self.session) else: log.info("{0} platform detected; using PortAudio".format( myPlatform)) self.audio_driver = spotify.PortAudioSink(self.session) except ImportError as e: log.warning( 'No audio sink found; audio playback unavailable. Exception: {0}' .format(e.args)) # log.debug("spotify.Config()") # self.config = spotify.Config() # self.config.user_agent = 'Alarm Clock' log.debug("Spotify event loop") self.event_loop = spotify.EventLoop(self.session) self.event_loop.start()
def __init__(self): # Spotify Session self.session = spotify.Session() # Queue to hold songs to be played self.SongQueue = SongQueue() # Event Blockers # self.logged_in_state_changed = Event() # self.play_state_changed = Event() self.is_logged_in = False # Spotify Event Loop self.loop = spotify.EventLoop(self.session) self.loop.start() # Set callbacks self.set_callbacks() # Audio player self.audio = spotify.PortAudioSink(self.session) # List of events to handle during run loop self.events = []
def setUp(self): self.session = mock.Mock() self.session.num_listeners.return_value = 0 self.pyaudio = mock.Mock() with mock.patch.dict('sys.modules', {'pyaudio': self.pyaudio}): self.sink = spotify.PortAudioSink(self.session)