#\r
# }}}\r
\r
-"""\r
+DOC = """\r
DOC:\r
\r
The script randomly pick up a song to queue from the library.\r
MPD bugs: http://musicpd.org/mantis/view.php?id=498\r
"""\r
\r
-__version__ = u'0.2'\r
+__version__ = u'0.3'\r
__author__ = u'$Author: kaliko $'\r
__date__ = u'$LastChangedDate: 2009-11-17 19:23:34 +0100 (mar. 17 nov. 2009) $'[18:28]\r
\r
import sys\r
\r
from random import choice\r
-from socket import error as SocketError\r
try:\r
- from mpd import (MPDClient, CommandError)\r
+ from mpd import (CommandError)\r
except ImportError, err:\r
print 'ERROR: "%s"\n\nPlease install python-mpd module.\n' % err\r
sys.exit(1)\r
\r
try:\r
- from config import (HOST, PORT, PASSWORD, JINGLE_TAG)\r
+ from config import JINGLE_TAG\r
except ImportError, err:\r
- print 'ERROR: missing settings in config.py: %s' % err\r
+ print 'ERROR: "%s"\n' % err\r
+ print '\tPlease set JINGLE_TAG in config.py'\r
sys.exit(1)\r
-#}}}\r
-\r
-\r
-## Formating connection id (do not change this)\r
-CON_ID = {'host': HOST, 'port': PORT}\r
-\r
-## Some functions#{{{\r
-\r
-\r
-def mpdConnect(client, con_id):#{{{\r
- """\r
- Simple wrapper to connect MPD.\r
- """\r
- try:\r
- client.connect(**con_id)\r
- except SocketError:\r
- return False\r
- return True#}}}\r
\r
-\r
-def mpdAuth(client, secret):#{{{\r
- """\r
- Authenticate\r
- """\r
- try:\r
- client.password(secret)\r
- except CommandError:\r
- return False\r
- return True#}}}\r
+from lib.mpdutils import (mconnect)\r
+#}}}\r
\r
\r
def search(tags):#{{{\r
for k, v in tags.iteritems():\r
search_str.extend([str(k), str(v)])\r
return search_str#}}}\r
-###}}}\r
\r
\r
def main():\r
- ## MPD object instance\r
- client = MPDClient()\r
- if mpdConnect(client, CON_ID):\r
- #print 'Got connected!'\r
- True\r
- else:\r
- print 'ERROR: fail to connect MPD server.'\r
- sys.exit(1)\r
-\r
- ## Auth if password is set non False\r
- if PASSWORD:\r
- if mpdAuth(client, PASSWORD):\r
- #print 'Pass auth!'\r
- True\r
- else:\r
- print 'ERROR: fail trying to pass auth. Check password?'\r
- client.disconnect()\r
- sys.exit(1)\r
-\r
+ client = mconnect()\r
## List tracks matching JINGLE_TAG and randomly chose one.\r
try:\r
trk = choice(client.search(*search(JINGLE_TAG)))\r
print 'Wrong search command, check JINGLE_TAG settings: %s' % err\r
sys.exit(1)\r
except IndexError, err:\r
- print 'Search for "%s" returned nothing: %s' % (' '.join(search(JINGLE_TAG)),\r
- err)\r
+ print ('Search for "%s" returned nothing: %s' %\r
+ (' '.join(search(JINGLE_TAG)), err))\r
sys.exit(1)\r
\r
## Uncomment to print out file added to playlist\r
#print 'add "%s"' % trk.get('file')\r
\r
client.add(trk.get('file', None))\r
-\r
client.disconnect()\r
-\r
sys.exit(0)\r
\r
# Script starts here\r
if __name__ == "__main__":\r
+ if len(sys.argv) > 1:\r
+ print DOC\r
+ sys.exit(0)\r
main()\r
\r
# VIM MODLINE\r