#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (c) 2009, 2010 Efrim <efrim@azylum.org>
+# Copyright (c) 2009, 2010, 2012 Kaliko Jack <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
import sys
-from lib.mpdclass import MPDClass
-from lib.startop import StartOpt
+from lib.goodies import Goodie
NAME = 'crop'
VERSION = '0.1'
USAGE = 'USAGE: %prog [--help] | [ <n> ]'
-class Crop(StartOpt, MPDClass):
+class Crop(Goodie):
"""
"""
script_info = dict({
def __init__(self):
""""""
- StartOpt.__init__(self, self.__class__.script_info, [])
- MPDClass.__init__(self)
+ Goodie.__init__(self, self.__class__.script_info)
self.nb_tracks = 6
self._get_arg()
self._run()
--- /dev/null
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 Kaliko Jack <kaliko.jack@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/>.
+#
+
+"""
+DOC:
+ All goodies inherit from Goodie which in turn inherits from StartOpt and
+ MPDClass.
+
+ StartOpt deals with command line argument and options, it will look for env.
+ var. $MPD_HOST and $MPD_PORT as well
+
+ MPDClass is a plain MPD client
+"""
+
+from lib.mpdclass import MPDClass
+from lib.startop import StartOpt
+
+
+class Goodie(StartOpt, MPDClass):
+ """"""
+
+ def __init__(self, script_info, extra_options=[]):
+ """"""
+ StartOpt.__init__(self, script_info, extra_options)
+ self.con_id = dict({'host': self.cli_options.host,
+ 'port': self.cli_options.port})
+ MPDClass.__init__(self)
+
+
+# Script starts here
+if __name__ == '__main__':
+ pass
+
+# VIM MODLINE
+# vim: ai ts=4 sw=4 sts=4 expandtab
-#!/usr/bin/env python
# -*- coding: utf-8 -*-
+# Copyright (c) 2009, 2010, 2012 Kaliko Jack <kaliko.jack@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 socket import error as SocketError
"""
Simple wrapper to connect MPD.
"""
- con_id = dict({'host': self.cli_options.host,
- 'port': self.cli_options.port})
try:
- self.client.connect(**con_id)
+ self.client.connect(**self.con_id)
except SocketError:
return False
return True
+++ /dev/null
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2009 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 os import environ
-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)#}}}
-
-
-def mpdConnect(client, con_id):#{{{
- """
- Simple wrapper to connect MPD.
- """
- try:
- client.connect(**con_id)
- except SocketError:
- return False
- return True#}}}
-
-
-def mpdAuth(client, secret):#{{{
- """
- Authenticate
- """
- try:
- client.password(secret)
- except CommandError:
- return False
- return True#}}}
-
-
-def mconnect(host=None, port=None):#{{{
- """"""
- ## 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):
- #print 'Got connected!'
- True
- else:
- print 'ERROR: fail to connect MPD server.'
- sys.exit(1)
-
- ## Auth if password is set non False
- if passwd:
- if mpdAuth(client, passwd):
- #print 'Pass auth!'
- True
- else:
- print 'ERROR: fail trying to pass auth. Check password?'
- client.disconnect()
- sys.exit(1)
- return client#}}}
-
-def collapse_tags(value):
- if isinstance(value, list):
- #self.__dict__[tag] = ", ".join(set(value))
- self.collapse_tags_bool = True
- return ', '.join(set(value))
- return value#}}}
-
-# Script starts here
-if __name__ == '__main__':
- cli = mconnect()
- cli.disconnect()
-
-# VIM MODLINE
-# vim: ai ts=4 sw=4 sts=4 expandtab
-
# Options list
# pop out 'sw' value before creating OptionParser object.
-##{{{
OPTS = list([
{
'sw': ['-S', '--hostname'],
'dest': 'port',
'help': 'Port MPD in listening on (default: 6600 or MPD_PORT if set)'},
])
-#}}}
USAGE = u"""USAGE: %prog [--help] [options]"""
-def get_mpd_environ():#{{{
+def get_mpd_environ():
"""
Retrieve MPD env. var.
"""
if len(mpd_host_env) > 1:
print 'passwd set in MPD_HOST'
passwd = mpd_host_env[1]
+ con_id.update({'passwd': passwd})
if mpd_port:
con_id.update({'port': int(mpd_port)})
- return (con_id, passwd)#}}}
+ return (con_id, passwd)
class StartOpt(object):
"""
"""
- def __init__(self, script_info, child_options):#{{{
+ def __init__(self, script_info, child_options):
# Strong assumption?
self.localencoding = 'utf8'
self.parser = None
# options allows to add new cli options within child objects calling
# parent __init__()
self.options = list(child_options + OPTS)
- self.main()#}}}
+ self.main()
- def _get_encoding(self):#{{{
+ def _get_encoding(self):
"""Get local encoding"""
- self.localencoding = getpreferredencoding()#}}}
+ self.localencoding = getpreferredencoding()
def _u8_convert(self, string):
"""Convert CLI input string to UTF8 (mpd standart)"""
return unicode(string, self.localencoding).encode('UTF-8')
- def declare_opts(self):#{{{
+ def declare_opts(self):
"""
Declare options in OptionParser object.
"""
if dest in ['host']:
self.parser.set_defaults(host=con_id.get('host'))
if dest in ['port']:
- self.parser.set_defaults(port=con_id.get('port'))#}}}
+ self.parser.set_defaults(port=con_id.get('port'))
def main(self):
"""declare options, parse command line"""
# VIM MODLINE
# vim: ai ts=4 sw=4 sts=4 expandtab
-
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (c) 2009, 2010 Efrim <efrim@azylum.org>
+# Copyright (c) 2009, 2010, 2012 Kaliko Jack <kaliko.jack@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
from time import sleep
-from lib.mpdclass import MPDClass
-from lib.startop import StartOpt
+from lib.goodies import Goodie
+
NAME = 'mfade'
VERSION = '0.1'
both over 10 minutes."""
-class Sleep(StartOpt, MPDClass):
+class Sleep(Goodie):
""""""
script_info = dict({
'version': VERSION,
def __init__(self):
""""""
- StartOpt.__init__(self, self.__class__.script_info, [])
- MPDClass.__init__(self)
+ Goodie.__init__(self, self.__class__.script_info)
self.tempo = int(10)
self.volum = None
self._consume_args()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (c) 2009, 2010 Efrim <efrim@azylum.org>
+# Copyright (c) 2009, 2010, 2012 Kaliko Jack <kaliko.jack@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
import sys
from os import(access, W_OK)
-from os.path import (dirname, isfile, join, basename, abspath)
+from os.path import (dirname, isfile, basename)
+
+from lib.goodies import Goodie
-from lib.mpdclass import MPDClass
-from lib.startop import StartOpt
NAME = 'mtopls'
VERSION = '0.1'
USAGE = 'USAGE: %prog [--help] | /path/to/the/playlist/file/'
-class MtoPls(StartOpt, MPDClass):
+class MtoPls(Goodie):
"""
"""
script_info = dict({
def __init__(self):
""""""
- StartOpt.__init__(self, self.__class__.script_info, [])
- MPDClass.__init__(self)
+ Goodie.__init__(self, self.__class__.script_info)
self.playlist = None
self._run()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (c) 2009, 2010 Efrim <efrim@azylum.org> {{{
+# Copyright (c) 2009, 2010, 2012 Kaliko Jack <kaliko.jack@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
# 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 time import sleep
-from lib.mpdclass import MPDClass
-from lib.startop import StartOpt
+from lib.goodies import Goodie
+
NAME = 'nalbum'
VERSION = '0.1'
])
-class Nalbum(StartOpt, MPDClass):
+class Nalbum(Goodie):
"""
"""
script_info = dict({
def __init__(self):
""""""
- StartOpt.__init__(self, self.__class__.script_info, NALBUM_OPTS)
- MPDClass.__init__(self)
+ Goodie.__init__(self, self.__class__.script_info,
+ extra_options=NALBUM_OPTS)
self._run()
def _fade(self, io='out'):
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (c) 2009, 2010 Efrim <efrim@azylum.org> {{{
+# Copyright (c) 2009, 2010, 2012 Kaliko Jack <kaliko.jack@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
# 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 random import choice
-from lib.mpdclass import MPDClass
-from lib.startop import StartOpt
+from lib.goodies import Goodie
+
NAME = 'wakeup'
VERSION = '0.1'
])
-class WakeUp(StartOpt, MPDClass):
+class WakeUp(Goodie):
"""
"""
script_info = dict({
def __init__(self):
""""""
- StartOpt.__init__(self, self.__class__.script_info, WAKEUP_OPTS)
- MPDClass.__init__(self)
+ Goodie.__init__(self, self.__class__.script_info,
+ extra_options=WAKEUP_OPTS)
self._get_arg()
self._run()