]> kaliko git repositories - mpd-goodies.git/commitdiff
* start working on MPDClass and new crop command.
authorkaliko <kaliko@azylum.org>
Thu, 10 Jun 2010 21:25:11 +0000 (21:25 +0000)
committerkaliko <kaliko@azylum.org>
Thu, 10 Jun 2010 21:25:11 +0000 (21:25 +0000)
crop [new file with mode: 0755]
lib/mpdclass.py [new file with mode: 0755]
lib/mpdutils.py

diff --git a/crop b/crop
new file mode 100755 (executable)
index 0000000..70e01ea
--- /dev/null
+++ b/crop
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2009, 2010 Efrim <efrim@azylum.org> {{{
+#
+#   This program is free software: you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation, either version 3 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#  }}}
+
+
+import sys
+
+from lib.mpdclass import MPDClass
+from lib.startop import StartOpt
+
+NAME = 'crop'
+VERSION = '0.1'
+USAGE = """Usage:
+
+crop -S <server> -n <nb_tracks>
+"""
+
+CROP_OPTS = list([
+    {
+        'sw': ['-n', '--nbtracks'],
+        'type': 'int',
+        'dest': 'nb_tracks',
+        'default': 3,
+        'help': 'Number of tracks to keep before the current one.'},
+    ])
+
+class Crop(StartOpt):
+    """
+    """
+    script_info = dict({
+        'version': VERSION,
+        'prog_name': 'crop',
+        'description': 'Keep <n> tracks before currently played, removed others.',
+        })
+
+    def __init__(self):
+        """"""
+        StartOpt.__init__(self, Crop.script_info, CROP_OPTS)
+        self._run()
+
+    def _run(self):
+        """"""
+        pass
+
+    def crop(self):
+        """"""
+        NotImplemented
+
+
+# Script starts here
+if __name__ == '__main__':
+    try:
+        Crop()
+    except KeyboardInterrupt:
+        sys.stdout.write('exit')
+
+# VIM MODLINE
+# vim: ai ts=4 sw=4 sts=4 expandtab
diff --git a/lib/mpdclass.py b/lib/mpdclass.py
new file mode 100755 (executable)
index 0000000..40765fb
--- /dev/null
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+
+from socket import error as SocketError
+
+try:
+    from mpd import (MPDClient, CommandError)
+except ImportError, err:
+    print 'ERROR: "%s"\n\nPlease install python-mpd module.\n' % err
+    sys.exit(1)
+
+
+def get_mpd_environ():#{{{
+    """
+    Retrieve MPD env. var.
+    """
+    con_id = dict({'host': 'localhost',
+                   'port': int(6600)})
+    passwd = None
+    mpd_host_env = environ.get('MPD_HOST')
+    if mpd_host_env:
+        # If password is set:
+        # mpd_host_env = ['pass', 'host'] because MPD_HOST=pass@host
+        mpd_host_env = mpd_host_env.split('@')
+        mpd_host_env.reverse()
+        con_id.update({'host': mpd_host_env[0]})
+        if len(mpd_host_env) > 1:
+            print 'passwd set in MPD_HOST'
+            passwd = mpd_host_env[1]
+
+    con_id.update({'port': int(environ.get('MPD_PORT', con_id.get('port')))})
+    return (con_id, passwd)#}}}
+
+
+class MPDClass(object):
+    """Connect to MPD server
+    """
+
+    def __init__(self):
+        self.client = MPDClient()
+
+    def mpdConnect(self, con_id):#{{{
+        """
+        Simple wrapper to connect MPD.
+        """
+        try:
+            self.client.connect(**con_id)
+        except SocketError:
+            return False
+        return True#}}}
+
+    def mpdAuth(self, secret):#{{{
+        """ Authenticate"""
+        try:
+            self.client.password(secret)
+        except CommandError:
+            return False
+        return True#}}}
+
+    def connect(self):
+        """Connect & auth"""
+        pass
+
+def main():
+    pass
+
+# Script starts here
+if __name__ == '__main__':
+    main()
+
+# VIM MODLINE
+# vim: ai ts=4 sw=4 sts=4 expandtab
+
index ea58b89c6b8f66a687f0d6f56b27e70ccbeb9a37..ce1b38dc06deaee1f575519808658ae239dd2638 100644 (file)
@@ -73,10 +73,14 @@ def mpdAuth(client, secret):#{{{
     return True#}}}
 
 
-def mconnect():#{{{
+def mconnect(host=None, port=None):#{{{
     """"""
-    ## get connection id
+    ## get connection id from ENV VAR
     con_id, passwd = get_mpd_environ()
+    if host:
+        con_id.update({'host': host})
+    if port:
+        con_id.update({'port': port})
     ## MPD object instance
     client = MPDClient()
     if mpdConnect(client, con_id):