X-Git-Url: http://git.kaliko.me/?a=blobdiff_plain;f=sima%2Fclient.py;h=b3c9591e28b7d949885d05ff68feac0a95a7c28f;hb=02644ed407ef89aa5fadee5344f62216572c7588;hp=8122fdcd0f49a8a258dc096ef3c3b74a902e8cca;hpb=57621c64288a742232b379b53bfe5fce34959535;p=mpd-sima.git diff --git a/sima/client.py b/sima/client.py index 8122fdc..b3c9591 100644 --- a/sima/client.py +++ b/sima/client.py @@ -21,6 +21,7 @@ except ImportError as err: # local import from .lib.player import Player from .lib.track import Track +from .lib.album import Album from .lib.simastr import SimaStr @@ -85,10 +86,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() @@ -213,24 +210,26 @@ class PlayerClient(Player): return alb_art_search return self.find('artist', artist, 'album', album) - #@blacklist(album=True) + @blacklist(album=True) def find_albums(self, artist): """ Fetch all albums for "AlbumArtist" == artist Filter albums returned for "artist" == artist since MPD returns any album containing at least a single track for artist """ - albums = set() - albums.update(self.list('album', 'albumartist', artist)) + albums = [] + kwalbart = {'albumartist':artist, 'artist':artist} + for album in self.list('album', 'albumartist', artist): + if album not in albums: + albums.append(Album(name=album, **kwalbart)) for album in self.list('album', 'artist', artist): arts = set([trk.artist for trk in self.find('album', album)]) - if len(arts) < 2: - albums.add(album) - else: + 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 and album not in albums): self.log.debug('"{0}" probably not an album of "{1}"'.format( - album, artist) + '({0})'.format('/'.join(arts))) - if albums: - self.log.debug('Albums candidate: {0}'.format('/'.join(albums))) + album, artist) + '({0})'.format('/'.join(arts))) return albums def monitor(self):