From e4dc436d9891dd6f7b80c8d60d45bbc39b7c67d3 Mon Sep 17 00:00:00 2001 From: kaliko Date: Wed, 16 Dec 2020 14:03:50 +0100 Subject: [PATCH] Ensure metadata used in filter are available (closes #38) --- doc/Changelog | 3 ++- sima/mpdclient.py | 7 +++++++ sima/plugins/internal/tags.py | 13 +++++++++---- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 70dd3bd..d08b7b2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ MPD_sima v0.16.1 - * + * tags plugin: Ensure metadata used in filter are enabled + so that MPD exposes them (closes #38) -- kaliko UNRELEASED diff --git a/sima/mpdclient.py b/sima/mpdclient.py index 0f91380..0d0ff1e 100644 --- a/sima/mpdclient.py +++ b/sima/mpdclient.py @@ -124,6 +124,13 @@ class MPD(MPDClient): needed_tags = {'Artist', 'Album', 'AlbumArtist', 'Title', 'Track'} needed_mbid_tags = {'MUSICBRAINZ_ARTISTID', 'MUSICBRAINZ_ALBUMID', 'MUSICBRAINZ_ALBUMARTISTID', 'MUSICBRAINZ_TRACKID'} + MPD_supported_tags = {'Artist', 'ArtistSort', 'Album', 'AlbumSort', 'AlbumArtist', + 'AlbumArtistSort', 'Title', 'Track', 'Name', 'Genre', + 'Date', 'OriginalDate', 'Composer', 'Performer', + 'Conductor', 'Work', 'Grouping', 'Disc', 'Label', + 'MUSICBRAINZ_ARTISTID', 'MUSICBRAINZ_ALBUMID', + 'MUSICBRAINZ_ALBUMARTISTID', 'MUSICBRAINZ_TRACKID', + 'MUSICBRAINZ_RELEASETRACKID', 'MUSICBRAINZ_WORKID'} database = None def __init__(self, daemon): diff --git a/sima/plugins/internal/tags.py b/sima/plugins/internal/tags.py index 5cad0e8..5ea4726 100644 --- a/sima/plugins/internal/tags.py +++ b/sima/plugins/internal/tags.py @@ -62,8 +62,8 @@ class Tags(Plugin): super().__init__(daemon) self.daemon = daemon self._control_conf() - self._setup_tagsneeded() self.mpd_filter = forge_filter(self.plugin_conf) + self._setup_tagsneeded() self.log.debug('mpd filter: %s', self.mpd_filter) def _control_conf(self): @@ -82,9 +82,14 @@ class Tags(Plugin): raise PluginException('plugin misconfiguration') def _setup_tagsneeded(self): - config_tags = {k for k, v in self.plugin_conf.items() if v} - self.log.debug('%s plugin needs the followinng metadata: %s', - self, config_tags & Tags.supported_tags) + """Ensure needed tags are exposed by MPD""" + # At this point mpd_filter concatenetes {tags}+filter + config_tags = set() + for mpd_supp_tags in self.player.MPD_supported_tags: + if mpd_supp_tags.lower() in self.mpd_filter.lower(): + config_tags.add(mpd_supp_tags.lower()) + self.log.debug('%s plugin needs the following metadata: %s', + self, config_tags) tags = config_tags & Tags.supported_tags self.player.needed_tags |= tags -- 2.39.2