def player_mode(player_id): json = request.get_json() print('player_mode:', request) print('player_mode:', json) server = connect(app.config['SERVER']) modes[json['mode']](server, player_id) server.close() return ('', 204)
def player_volume(player_id): json = request.get_json() print('player_mode:', request) print('player_mode:', json) server = connect(app.config['SERVER']) set_player_volume(server, player_id, '{0:+}'.format(json['delta'])) server.close() return ('', 204)
def album_page(album_id): server = connect(app.config['SERVER']) album = get_albums(server, album_id=album_id)[0] artist = get_artists(server, artist_id=album['artist_id'])[0] tracks = get_tracks(server, album_id=album_id) tracks.sort(key=lambda track: track['tracknum']) server.close() return render_template('album.html', artist=artist, album=album, tracks=tracks)
def player_playlist_current_index(player_id): json = request.get_json() print('player_mode:', request) print('player_mode:', json) server = connect(app.config['SERVER']) if json['delta'] < 0: previous_track(server, player_id) elif json['delta'] > 0: next_track(server, player_id) server.close() return ('', 204)
def player_playlist_tracks(player_id): method_to_command = { 'PUT': 'load', 'POST': 'add', } json = request.get_json() server = connect(app.config['SERVER']) player_playlist_control(server, player_id, method_to_command[request.method], **{type_to_id_tag[json['type']]: json['id']}) new_player_status = status(server, player_id)['player'] server.close() return jsonify(new_player_status['playlist'])
def onMQTTMsg(client,userdate,msg): print('MQTTMsg: ####' ) payload = msg.payload.decode("utf-8") topic = msg.topic.split('/') print(topic, payload) server = juice.connect('euterpe3', 9090) players = juice.get_players(server) for player in players: print(player) if player['name'] == topic[-1]: juice.pause(server, player['id']) break; server.close()
def artists_page(): server = connect(app.config['SERVER']) artists = get_artists(server) server.close() return render_template('artists.html', artists=artists)
def player_playlist_tracks_indexed(player_id, index): server = connect(app.config['SERVER']) player_playlist_delete(server, player_id, index) server.close() return ('', 204)
def new_music_page(): server = connect(app.config['SERVER']) albums = get_albums(server, sort='new') server.close() return render_template('new_music.html', albums=albums)
def track_page(track_id): server = connect(app.config['SERVER']) track = get_tracks(server, track_id=track_id)[0] server.close() return render_template('track.html', track=track)
def players(): server = connect(app.config['SERVER']) players = get_players(server) server.close() return jsonify(players)
def library_years(): server = connect(app.config['SERVER']) years = get_years(server) server.close() return jsonify(years)
def library_tracks(): server = connect(app.config['SERVER']) tracks = get_tracks(server, **{k: request.args[k] for k in request.args.keys()}) server.close() #print('library_tracks:', tracks) return jsonify(tracks)
def library_album_by_id(album_id): server = connect(app.config['SERVER']) albums = get_albums(server, album_id=album_id) server.close() #print('library_album_by_id(', album_id, ')', albums[0]) return jsonify(albums[0])
def library_albums(): server = connect(app.config['SERVER']) albums = get_albums(server, **{k: request.args[k] for k in request.args.keys()}) server.close() print('library_albums()', jsonify(albums).data[16500:16700]) return jsonify(albums)
def library_artist_by_id(id): server = connect(app.config['SERVER']) artists = get_artists(server, artist_id=id) server.close() return jsonify(artists[0])
def library_artists(): server = connect(app.config['SERVER']) artists = get_artists(server) server.close() return jsonify(artists)
def artist_page(artist_id): server = connect(app.config['SERVER']) artist = get_artists(server, artist_id=artist_id)[0] albums = get_albums(server, artist_id=artist_id) server.close() return render_template('artist.html', albums=albums, artist=artist)
def albums_page(): server = connect(app.config['SERVER']) albums = get_albums(server) server.close() return render_template('albums.html', albums=albums)
def player(player_id): server = connect(app.config['SERVER']) players = status(server, player_id) server.close() return jsonify(players)
def tracks_page(): server = connect(app.config['SERVER']) tracks = get_tracks(server) server.close() return render_template('tracks.html', tracks=tracks)
def genre_page(genre_id): server = connect(app.config['SERVER']) genre = [g for g in get_genres(server) if g['id'] == int(genre_id)][0] artists = get_artists(server, genre_id=genre_id) server.close() return render_template('genre.html', genre=genre, artists=artists)
def genres_page(): server = connect(app.config['SERVER']) genres = get_genres(server) server.close() return render_template('genres.html', genres=genres)
def year_page(year): server = connect(app.config['SERVER']) albums = get_albums(server, year=year) server.close() return render_template('year.html', year=year, albums=albums)
def years_page(): server = connect(app.config['SERVER']) years = get_years(server) server.close() return render_template('years.html', years=years)
'album': track.get('album', None), 'album_id': track.get('album_id', None), 'artist': track.get('artist', None), 'artist_id': track.get('artist_id', None), 'title': player.get('current_title', None), 'volume': player['volume'], 'playlist': player['playlist'], 'playlist_cur_index': player.get('playlist_cur_index', None) } last_status[player['name']] = status client.publish('squeezebox/players/' + player['name'], json.dumps(status), retain=True, qos=1) client.publish('squeezebox/display/' + player['name'], '{}\t{}\t{}'.format(track.get('title','---'), track.get('artist','---'), track.get('album','---')).encode('ascii','ignore'), retain=True, qos=1) if __name__ == '__main__': client = mqtt.Client('juice-bridge') client.connect('euterpe3') client.on_message = onMQTTMsg #client.on_log = lambda client,ussrdata,level,buf: print("log:",level,buf) client.loop_start() client.subscribe("squeezebox/command/#") server = juice.connect('euterpe3', 9090) players = juice.get_players(server) for player in players: server.write(msg_format.player_status(player['id'], subscribe=0, start=0, page_size=9999).encode('ascii')) juice.loop_start(server, onSBMsg)