X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Fclient.py;h=2892d5e4ae82b24a6a244281359237bc97f199c4;hb=7a910ce647cc646dc7ca8adbc69e1f0e725761fc;hp=f1d2b8f2cde6e68e8669bcdac4876324fe674c5f;hpb=9ec2e9036e1f0fe67e8ddd7e8fb7f91a2e86cd62;p=mpd-sima.git diff --git a/sima/client.py b/sima/client.py index f1d2b8f..2892d5e 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 @@ -223,8 +241,13 @@ class PlayerClient(Player): 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: # TODO: better heuristic, use a ratio instead + album_trks = [trk for trk in self.find('album', album)] + # TODO: add a VA filter option + if 'Various Artists' in [tr.albumartist for tr in album_trks]: + self.log.debug('Discarding {0} ("Various Artists" set)'.format(album)) + continue + arts = set([trk.artist for trk in album_trks]) + if len(set(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): @@ -329,6 +352,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):