Update of /cvsroot/freevo/freevo/WIP/Aubin
In directory sc8-pr-cvs1:/tmp/cvs-serv5413

Added Files:
        mpd.py mpdclient.py 
Log Message:
Some initial experimentation with mpd; this is my hacked mpdclient library
since the upstream one is very broken. 

At the very least, you'll need a copy of mpd, and to edit the source file
to change the mp3 file I'm queuing to test. 

This isn't a plugin yet, but you can run it by copying it to src/helpers
and typing: "./freevo mpd"

It also doesn't autostart mpd, though it does generate a config file using
your freevo config.


--- NEW FILE: mpd.py ---
import mpdclient
import config
import os

# Generate a mpdconf file automatically, so we don't have to
# edit it.


c = mpdclient.MpdController()

def genmpdconf():

    # Ascertain from freevo configuration 
    music_directory = config.DIR_AUDIO[0][1]    # Only use the first one for now
    playlist_directory = ('%s/freevo/mpd/playlists' % config.OS_CACHEDIR)
    log_file = ('%s/mpd.log' % config.LOGDIR)
    error_file = ('%s/mpd_error.log' % config.LOGDIR)
    db_file = ('%s/freevo/mpd/db/mpddb' % config.OS_CACHEDIR)
    state_file = ('%s/freevo/mpd/db/state' % config.OS_CACHEDIR)
    if config.DEBUG == 0:
        log_level = "default"
    if config.DEBUG == 1:
        log_level = "secure"
    if config.DEBUG >= 2:
        log_level = "verbose"

    # defaults
    bind_to_address = "127.0.0.1"       # No public access by default
    port = 2100

    mpdconf = open('/tmp/mpdconf','w')  # Overwrite

    # Generate config file
    mpdconf.write('port                 "%s"\n' % port)
    mpdconf.write('music_directory      "%s"\n' % music_directory)
    mpdconf.write('playlist_directory   "%s"\n' % playlist_directory)
    mpdconf.write('log_file             "%s"\n' % log_file)
    mpdconf.write('error_file           "%s"\n' % error_file)
    mpdconf.write('db_file              "%s"\n' % db_file)
    mpdconf.write('state_file           "%s"\n' % state_file)
    mpdconf.close()

    # Make sure the directories exist
    if not os.path.isdir('%s/freevo/mpd' % config.OS_CACHEDIR): 
        os.mkdir('%s/freevo/mpd' % config.OS_CACHEDIR)
    if not os.path.isdir(playlist_directory): os.mkdir(playlist_directory)
    if not os.path.isdir('%s/freevo/mpd/db' % config.OS_CACHEDIR):
        os.mkdir('%s/freevo/mpd/db' % config.OS_CACHEDIR)


# Queue and play a song
def test_queue(file):
    #c.add(file)
    print c.sendAddCommand('Fugazi/13 Songs/01 - Waiting Room.mp3')
    c.finishCommand()
    print c.play()
    import time
    for m in range(0,30):        # play thirty seconds
        print ('%s/%s' % (c.getStatus().elapsedTime, c.getStatus().totalTime))
        time.sleep(1)
    c.sendSeekCommand(c.getStatus().song, 30) # seek thirty seconds
    c.finishCommand()
    for m in range(0,30):        # play thirty seconds
        print ('%s/%s' % (c.getStatus().elapsedTime, c.getStatus().totalTime))
        time.sleep(1)
    c.stop()         # stop!
 




if __name__ == "__main__":
    genmpdconf()
    test_queue('Converge/Jane Doe/02 - Fault And Fracture.mp3')




--- NEW FILE: mpdclient.py ---
"""
mpdclient.py / py-libmpdclient:  Python implementation of libmpdclient, much of
mpc functionality, and probably more to come.

To use:

<start mpd>

<run python>
>>> import mpdclient
>>> c = mpdclient.MpdController()
>>> c.load("yourplaylist")
>>> c.random()
>>> c.repeat()
>>> c.play()

.. And of course much more.

MpdConnection and MpdController are thread-safe, but it is fairly crude.  You
[...1198 lines suppressed...]
    """
    getCurrentSong() -> Song instance

    Returns a Song class instance, of the song currently playing.
    """
    status = self.status()

    if status.stateStr() == "stop":
      return False

    try:
      self.sendPlaylistInfoCommand(status.song)

      song = self.getNextInfoEntity()

    finally:
      self.finishCommand()

    return song





-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to