X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Fcore.py;h=695a18ca3ca621293164cefef6c1fe088a5af7d7;hb=c048e4a8c0100e77ad3edc1159fd63e938267ca0;hp=ead1ba8e9563d1e2ad61465854b508e192c596e3;hpb=88706f0a1a79e669068162d6a38d9820afacbe64;p=mpd-sima.git diff --git a/sima/core.py b/sima/core.py index ead1ba8..695a18c 100644 --- a/sima/core.py +++ b/sima/core.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2010, 2011, 2013, 2014, 2015 Jack Kaliko +# Copyright (c) 2009-2015, 2020 kaliko # # This file is part of sima # @@ -25,8 +25,8 @@ import time from collections import deque from logging import getLogger -from .client import PlayerClient -from .client import PlayerError, PlayerUnHandledError +from .mpdclient import MPD as PlayerClient +from .mpdclient import PlayerError, MPDError from .lib.simadb import SimaDB from .lib.daemon import Daemon from .utils.utils import SigHup @@ -46,16 +46,9 @@ class Sima(Daemon): self.log = getLogger('sima') self._plugins = list() self._core_plugins = list() - self.player = self.__get_player() # Player client + self.player = PlayerClient(conf) # MPD client self.short_history = deque(maxlen=60) - def __get_player(self): - """Instanciate the player""" - host = self.config.get('MPD', 'host') - port = self.config.get('MPD', 'port') - pswd = self.config.get('MPD', 'password', fallback=None) - return PlayerClient(host, port, pswd) - def add_history(self): """Handle local, in memory, short history""" self.short_history.appendleft(self.player.current) @@ -108,7 +101,7 @@ class Sima(Daemon): def queue(self): to_add = list() for plugin in self.plugins: - self.log.info('callback_need_track: %s', plugin) + self.log.debug('callback_need_track: %s', plugin) pl_candidates = getattr(plugin, 'callback_need_track')() if pl_candidates: to_add.extend(pl_candidates) @@ -125,14 +118,14 @@ class Sima(Daemon): while True: tmp = sleepfor.pop(0) sleepfor.append(tmp) - self.log.info('Trying to reconnect in {:>4d} seconds'.format(tmp)) + self.log.info('Trying to reconnect in %4d seconds', tmp) time.sleep(tmp) try: self.player.connect() except PlayerError as err: self.log.debug(err) continue - except PlayerUnHandledError as err: + except MPDError as err: #TODO: unhandled Player exceptions self.log.warning('Unhandled player exception: %s', err) self.log.info('Got reconnected') @@ -164,22 +157,16 @@ class Sima(Daemon): """ """ try: - self.log.info('Connecting MPD: {0}:{1}'.format(*self.player._mpd)) + self.log.info('Connecting MPD: %(host)s:%(port)s', self.config['MPD']) self.player.connect() self.foreach_plugin('start') - except (PlayerError, PlayerUnHandledError) as err: + except (PlayerError, MPDError) as err: self.log.warning('Player: %s', err) self.reconnect_player() while 42: try: self.loop() - except PlayerUnHandledError as err: - #TODO: unhandled Player exceptions - self.log.warning('Unhandled player exception: %s', err) - del self.player - self.player = self.__get_player() - time.sleep(5) - except PlayerError as err: + except (PlayerError, MPDError) as err: self.log.warning('Player error: %s', err) self.reconnect_player() del self.changed @@ -187,7 +174,7 @@ class Sima(Daemon): def loop(self): """Dispatching callbacks to plugins """ - # hanging here untill a monitored event is raised in the player + # hanging here until a monitored event is raised in the player if getattr(self, 'changed', False): # first iteration exception self.changed = self.player.monitor() else: # first iteration goes through else