def update_library(request): mpd = MPDClient() with mpd.connect(settings.MPD_CLIENT_HOST, settings.MPD_CLIENT_PORT) as mpd: logger.info("Updating library") mpd.update() return HttpResponse("OK")
def play_song(request, song_id): mpd = MPDClient() with mpd.connect(settings.MPD_CLIENT_HOST, settings.MPD_CLIENT_PORT) as mpd: logger.debug("Song ID: %s", song_id) mpd.playid(song_id) return HttpResponse("Playing Song %s." % song_id)
def repeat(request): mpd = MPDClient() with mpd.connect(settings.MPD_CLIENT_HOST, settings.MPD_CLIENT_PORT) as mpd: repeat = int(mpd.status()['repeat']) mpd.repeat(0 if repeat == 1 else 1) return HttpResponse("Repeat: %s" % repeat)
def playlists(request, *args, **keywords): c = RequestContext(request) logger.info("playlists") c['breadcrumbs'] = [ { 'text': 'current playlist', 'target': reverse('playlist') }, ] with MPDClient().connect('localhost', 6600) as mpd: data = mpd.listplaylists() logger.debug("Playlists: %s", data) c['list'] = [] for item in data: pass c['list'].append({ 'text': item['playlist'], 'target': reverse('switch_playlist', kwargs={'playlist': item['playlist']}) }) return c
def volume(request, volume): mpd = MPDClient() with mpd.connect(settings.MPD_CLIENT_HOST, settings.MPD_CLIENT_PORT) as mpd: mpd.setvol(volume) volume = mpd.status()['volume'] return HttpResponse("Volume: %s" % volume)
def albums(request, artist=None, *args, **keywords): c = RequestContext(request) logger.info("albums") c['breadcrumbs'] = [ { 'text': 'browse', 'target': reverse('browse') }, ] if artist: c['breadcrumbs'].append({ 'text': 'artists', 'target': reverse('artists') }) with MPDClient().connect('localhost', 6600) as mpd: data = mpd.list('album', artist) if artist else mpd.list('album') c['list'] = [] for item in sorted([d for d in data if d and '/' not in d]): c['list'].append({ 'text': item, 'target': reverse('songs_of_artist_album', kwargs={ 'album': item, 'artist': artist }) if artist else reverse('album', kwargs={'album': item}) }) return c
def random(request): mpd = MPDClient() with mpd.connect(settings.MPD_CLIENT_HOST, settings.MPD_CLIENT_PORT) as mpd: random = int(mpd.status()['random']) mpd.random(0 if random == 1 else 1) return HttpResponse("Random: %s" % random)
def add_songs(request): post = request.POST mpd = MPDClient() with mpd.connect(settings.MPD_CLIENT_HOST, settings.MPD_CLIENT_PORT) as mpd: for song in json.loads(post['songs']): mpd.add(song) return HttpResponse("OK")
def browse(request, *args, **keywords): c = RequestContext(request) c['breadcrumbs'] = [] with MPDClient().connect("localhost", 6600) as mpd: stats = mpd.stats() c['num_songs'] = stats['songs'] c['num_artists'] = stats['artists'] c['num_albums'] = stats['albums'] return c
def play(request): mpd = MPDClient() with mpd.connect(settings.MPD_CLIENT_HOST, settings.MPD_CLIENT_PORT) as mpd: if mpd.status().get('state', None) == 'play': mpd.pause() else: mpd.play() return HttpResponse("OK")
def save_playlist(request): name = request.POST['name'] mpd = MPDClient() with mpd.connect(settings.MPD_CLIENT_HOST, settings.MPD_CLIENT_PORT) as mpd: logger.debug("Playlist Name: %s", name) mpd.rm(name) mpd.save(name) return HttpResponse("OK")
def remove_songs(request): post = request.POST mpd = MPDClient() with mpd.connect(settings.MPD_CLIENT_HOST, settings.MPD_CLIENT_PORT) as mpd: for song in json.loads(post['songs']): song = int(song) logger.info("Deleting: %s", song) mpd.deleteid(song) return HttpResponse("OK")
def status(request): mpd = MPDClient() with mpd.connect(settings.MPD_CLIENT_HOST, settings.MPD_CLIENT_PORT) as mpd: data = mpd.status() data.update(mpd.currentsong()) data.update(mpd.stats()) if 'elapsed' not in data: data['elapsed'] = data['time'] return data
def current_playlist(request, *args, **keywords): c = RequestContext(request) with MPDClient().connect('localhost', 6600) as mpd: c['songs'] = mpd.playlistinfo() logger.debug(c['songs']) #Cleanup song information for song in c['songs']: song['filename'] = path.basename(song['file']) song['time'] = formatTime(song['time']) return c
def songs(request, artist=None, album=None, *args, **keywords): c = RequestContext(request) logger.info("songs") commands = [] c['breadcrumbs'] = [ { 'text': 'browse', 'target': reverse('browse') }, ] if artist: c['breadcrumbs'].append({ 'text': 'artists', 'target': reverse('artists') }) commands.extend(['artist', artist]) if album: c['breadcrumbs'].append({ 'text': artist, 'target': reverse('albums_by_artist', kwargs={'artist': artist}) }) elif album: c['breadcrumbs'].append({ 'text': 'albums', 'target': reverse('albums') }) commands.extend(['album', album]) else: commands = ['any', ''] logger.info(commands) with MPDClient().connect("localhost", 6600) as mpd: c['songs'] = mpd.find(*commands) #Cleanup song information for song in c['songs']: song['filename'] = path.basename(song['file']) song['time'] = formatTime(song['time']) return c
def artists(request, *args, **keywords): c = RequestContext(request) logger.info("artists") c['breadcrumbs'] = [ { 'text': 'browse', 'target': reverse('browse') }, ] with MPDClient().connect('localhost', 6600) as mpd: data = mpd.list('artist') c['list'] = [] for item in sorted([d for d in data if d and '/' not in d]): c['list'].append({ 'text': item, 'target': reverse('albums_by_artist', kwargs={'artist': item}) }) return c
def switch_playlist(request, playlist, *args, **keywords): with MPDClient().connect('localhost', 6600) as mpd: mpd.clear() mpd.load(playlist) return redirect('playlist')
def stop(request): mpd = MPDClient() with mpd.connect(settings.MPD_CLIENT_HOST, settings.MPD_CLIENT_PORT) as mpd: mpd.stop() return HttpResponse("OK")