From 14ccd8fb5a6584037b6f7e62c33b1648e3430d23 Mon Sep 17 00:00:00 2001 From: kaliko Date: Thu, 10 Jun 2010 21:25:11 +0000 Subject: [PATCH] * start working on MPDClass and new crop command. --- crop | 74 +++++++++++++++++++++++++++++++++++++++++++++++++ lib/mpdclass.py | 74 +++++++++++++++++++++++++++++++++++++++++++++++++ lib/mpdutils.py | 8 ++++-- 3 files changed, 154 insertions(+), 2 deletions(-) create mode 100755 crop create mode 100755 lib/mpdclass.py diff --git a/crop b/crop new file mode 100755 index 0000000..70e01ea --- /dev/null +++ b/crop @@ -0,0 +1,74 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Copyright (c) 2009, 2010 Efrim {{{ +# +# 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 . +# +# }}} + + +import sys + +from lib.mpdclass import MPDClass +from lib.startop import StartOpt + +NAME = 'crop' +VERSION = '0.1' +USAGE = """Usage: + +crop -S -n +""" + +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 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 index 0000000..40765fb --- /dev/null +++ b/lib/mpdclass.py @@ -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 + diff --git a/lib/mpdutils.py b/lib/mpdutils.py index ea58b89..ce1b38d 100644 --- a/lib/mpdutils.py +++ b/lib/mpdutils.py @@ -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): -- 2.39.5