예제 #1
0
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")
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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
예제 #5
0
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)
예제 #6
0
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
예제 #7
0
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)
예제 #8
0
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")
예제 #9
0
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
예제 #10
0
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")
예제 #11
0
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")
예제 #12
0
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")
예제 #13
0
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
예제 #14
0
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
예제 #15
0
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
예제 #16
0
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
예제 #17
0
def switch_playlist(request, playlist, *args, **keywords):

    with MPDClient().connect('localhost', 6600) as mpd:
        mpd.clear()
        mpd.load(playlist)
    return redirect('playlist')
예제 #18
0
def stop(request):
    mpd = MPDClient()
    with mpd.connect(settings.MPD_CLIENT_HOST,
                     settings.MPD_CLIENT_PORT) as mpd:
        mpd.stop()
    return HttpResponse("OK")