X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Fclient.py;h=ff6ca38197624edddcb212b30d975c3bfb500e8f;hb=e8b115becc6a6c5bb66810eb25fff8bebc80b000;hp=96ca7250092072ddb9f51a4140ff505db6d270c1;hpb=808c3bab5145b16b314ab330a054284bc0811623;p=mpd-sima.git diff --git a/sima/client.py b/sima/client.py index 96ca725..ff6ca38 100644 --- a/sima/client.py +++ b/sima/client.py @@ -1,4 +1,22 @@ -# -* coding: utf-8 -*- +# -*- coding: utf-8 -*- +# Copyright (c) 2013, 2014 Jack Kaliko +# +# This file is part of sima +# +# sima 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. +# +# sima 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 sima. If not, see . +# +# """MPD client for Sima This client is built above python-musicpd a fork of python-mpd @@ -21,7 +39,7 @@ except ImportError as err: # local import from .lib.player import Player from .lib.track import Track -from .lib.album import Album +from .lib.meta import Album from .lib.simastr import SimaStr @@ -57,7 +75,7 @@ def blacklist(artist=False, album=False, track=False): return decorated class PlayerClient(Player): - """MPC Client + """MPD Client From python-musicpd: _fetch_nothing … _fetch_item single str @@ -69,7 +87,7 @@ class PlayerClient(Player): _fetch_songs list of dict, especially tracks _fetch_plugins, TODO: handle exception in command not going through _client_wrapper() (ie. - find_aa, remove…) + remove…) """ database = None # sima database (history, blaclist) @@ -86,10 +104,6 @@ class PlayerClient(Player): wrapper = self._execute return lambda *args: wrapper(command, args) - def __del__(self): - """Avoid hanging sockets""" - self.disconnect() - def _execute(self, command, args): self._write_command(command, args) return self._client_wrapper() @@ -231,7 +245,7 @@ class PlayerClient(Player): if len(arts) < 2: # TODO: better heuristic, use a ratio instead if album not in albums: albums.append(Album(name=album, albumartist=artist)) - elif album not in albums: + elif (album and album not in albums): self.log.debug('"{0}" probably not an album of "{1}"'.format( album, artist) + '({0})'.format('/'.join(arts))) return albums @@ -333,6 +347,7 @@ class PlayerClient(Player): def disconnect(self): # Try to tell MPD we're closing the connection first try: + self._client.noidle() self._client.close() # If that fails, don't worry, just ignore it and disconnect except (MPDError, IOError):