]> kaliko git repositories - mpd-goodies.git/blobdiff - jingle.py
* add new goodies fadeio.py (sleep command)
[mpd-goodies.git] / jingle.py
index b0614b0f962a8f54396ae48f8f9c4a43dd9a5c63..3d25dd68731b4383065cc203905a7e063bb97dd7 100755 (executable)
--- a/jingle.py
+++ b/jingle.py
@@ -18,7 +18,7 @@
 #\r
 #  }}}\r
 \r
-"""\r
+DOC = """\r
 DOC:\r
 \r
     The script randomly pick up a song to queue from the library.\r
@@ -65,7 +65,7 @@ BUGS:
     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
@@ -74,47 +74,21 @@ __date__ = u'$LastChangedDate: 2009-11-17 19:23:34 +0100 (mar. 17 nov. 2009) $'[
 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
@@ -125,29 +99,10 @@ def search(tags):#{{{
     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
@@ -155,21 +110,22 @@ def main():
         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