-# -*- 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
-