--- /dev/null
+#!/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
--- /dev/null
+#!/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
+
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):