示例#1
0
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
  })