def play(room_id): try: room = Room(room_id) except NonexistentError: abort(404) try: me = User() except APIError: abort(500) except UnauthorizedError: return redirect(url_for('login', next=request.url)) pl = room.playlist() pl.get_next_songs(results='0', lookahead='1') cur_song = pl.get_lookahead_songs()[0] cur_track = cur_song.get_tracks('rdio-US')[0] cur_rdio_id = cur_track['foreign_id'].split(':')[-1] current = { 'song_id': cur_song.id, 'rdio_id': cur_rdio_id, 'artist': cur_song.artist_name, 'title': cur_song.title } if room.cur_song()['song_id'] is not None and room.num_members() > 0: pl.feedback(rate_song='last^'+str(room.get_cur_rating())) pl.feedback(play_song=current['song_id']) room.set_song(current) redis.publish('push', json.dumps({'room': room_id, 'name': 'playing', 'data': current})) pl.get_next_songs(results='0', lookahead='1') next_song = pl.get_lookahead_songs()[0] next_track = next_song.get_tracks('rdio-US')[0] next_rdio_id = next_track['foreign_id'].split(':')[-1] return json.dumps({ 'song_id': next_song.id, 'rdio_id': next_rdio_id, 'artist': next_song.artist_name, 'title': next_song.title })
def start(room_id): try: room = Room(room_id) except NonexistentError: abort(404) if (room.num_members() == 0): # Do something better like returning some json abort(400) try: me = User() except APIError: abort(500) except UnauthorizedError: return redirect(url_for('login', next=request.url)) liked_artists = room.artist_counts() updater = [] for artist in liked_artists: count = liked_artists[artist] item = {'item': {'item_id': artist, 'artist_id': 'facebook:artist:' + artist, 'play_count': count}} updater.append(item) cat = room.seed_catalog() ticket = cat.update(updater) while True: status = cat.status(ticket) if status['ticket_status'] == 'complete': break time.sleep(0.1) pl = room.playlist(generate=True) pl.get_next_songs(results='0', lookahead='1') song = pl.get_lookahead_songs()[0] track = song.get_tracks('rdio-US')[0] rdio_id = track['foreign_id'].split(':')[-1] return json.dumps({'song_id': song.id, 'rdio_id': rdio_id, 'artist': song.artist_name, 'title': song.title})