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