def add(uri, user, notification=True): """ Add a track into a redis queue Parameters ---------- uri: str The spotify URI of the Track to add to the Queue user: str The user id of the user whome added the track to the Queue """ qid = str(uuid.uuid4()) # Push the Track into the Queue redis.rpush(config.PLAYLIST_REDIS_KEY, json.dumps({ 'uri': uri, 'user': user, 'uuid': qid, })) # Publish Add Event if notification: redis.publish( config.PLAYER_CHANNEL, json.dumps({ 'id': qid, 'event': 'add', 'uri': uri, 'user': user }))
def delete(self): """ Unapuses the player. """ event = {'event': 'resume'} redis.publish(config.PLAYER_CHANNEL, json.dumps(event)) return http.OK(event)
def post(self): """ Pauses the player. """ event = {'event': 'pause'} redis.publish(config.PLAYER_CHANNEL, json.dumps(event)) return http.Created(event)
def delete(self): """ Set the player mute state to False. """ redis.publish(config.PLAYER_CHANNEL, json.dumps({ 'event': 'set_mute', 'mute': False })) return http.OK({'mute': self.is_mute()})
def post(self): """ Set the player mute state to True. """ redis.publish(config.PLAYER_CHANNEL, json.dumps({ 'event': 'set_mute', 'mute': True })) return http.Created({'mute': self.is_mute()})
def post(self): """ Change the volume level for the player. """ serializer = VolumeSerializer() try: data = serializer.marshal(request.json) except MappingErrors as e: return http.UnprocessableEntity(errors=e.message) redis.publish( config.PLAYER_CHANNEL, json.dumps({ 'event': 'set_volume', 'volume': data['volume'] })) return http.OK(data)
def delete(uuid): """ Remove a track from a redis queue Parameters ---------- uuid: Uuid Unique identifator of track in the queue """ for item in Queue.iterate(): json_item = json.loads(item) if json_item.get('uuid') == uuid: redis.lrem(config.PLAYLIST_REDIS_KEY, item, 1) redis.publish( config.PLAYER_CHANNEL, json.dumps({ 'event': 'deleted', 'uri': json_item['uri'], 'user': json_item['user'], 'uuid': json_item['uuid'], })) break else: raise ValueError('Cannot find value')
def delete(self): """ Skips the currently playing track. Returns ------- http.Response A http response intance, in this case it should always be a 204 """ track, user = self.get_current_track() if track is None or user is None: return http.NoContent() redis.publish( config.PLAYER_CHANNEL, json.dumps({ 'event': 'stop', 'user': str(user.id), 'track': str(track.id), 'uri': str(track.spotify_uri), 'by': str(current_user.id), })) return http.OK()