示例#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 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 )
示例#3
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)
示例#4
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" )
示例#5
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")
示例#6
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" )
示例#7
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
示例#8
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")
示例#9
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
示例#10
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
示例#11
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")
示例#12
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
示例#13
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" )
示例#14
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")
示例#15
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)
示例#16
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)
示例#17
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
示例#18
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)
示例#19
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" )
示例#20
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
示例#21
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
示例#22
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
示例#23
0
def stop(request):
    mpd = MPDClient()
    with mpd.connect(settings.MPD_CLIENT_HOST,
                     settings.MPD_CLIENT_PORT) as mpd:
        mpd.stop()
    return HttpResponse("OK")
示例#24
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 )
示例#25
0
def switch_playlist(request, playlist, *args, **keywords):

    with MPDClient().connect('localhost', 6600) as mpd:
        mpd.clear()
        mpd.load(playlist)
    return redirect('playlist')
示例#26
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 )
示例#27
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 )
示例#28
0
def stop( request ):
    mpd = MPDClient()
    with mpd.connect( settings.MPD_CLIENT_HOST, settings.MPD_CLIENT_PORT ) as mpd:
        mpd.stop()
    return HttpResponse( "OK" )
示例#29
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" )