From 031be6cdea38a8982d5df850c0c28d2b834d639a Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Fri, 19 Apr 2019 13:11:00 -0400 Subject: [PATCH] Add karaoke flagger script --- karaoke-flagger.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 karaoke-flagger.py diff --git a/karaoke-flagger.py b/karaoke-flagger.py new file mode 100644 index 0000000..13abe78 --- /dev/null +++ b/karaoke-flagger.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# +# Copyright © 2019 Nick Bowler +# +# License GPLv3+: GNU General Public License version 3 or any later version. +# This is free software: you are free to change and redistribute it. +# There is NO WARRANTY, to the extent permitted by law. + +PLUGIN_NAME = u"Karaoke Flagger" +PLUGIN_AUTHOR = u"Nick Bowler" +PLUGIN_DESCRIPTION = u'''

This plugin sets a metadata variable for recordings +with the "karaoke version of" relation, so that tagger scripts can incorporate +this fact into file tags.

+ +

The metadata variable %_karaoke% will be set to "yes" on +karaoke tracks, and left unset otherwise. So a tagger script might use +$if(%_karaoke%,$set(comment:karaoke,%_karaoke%)), for example, +to embed that into the file's comment tag.

+''' +PLUGIN_VERSION = "0" +PLUGIN_API_VERSIONS = ["2.0"] +PLUGIN_LICENSE = "GPL-3.0-or-later" + +from picard import (config, log) +from picard.metadata import register_track_metadata_processor + +def modulename(): + return modulename.__module__[len("picard.plugins."):] + +def add_metadata(tagger, metadata, track, release): + for r in track["recording"]["relations"]: + # 'karaoke version of' is the backward relation of this type... + if r["type-id"] != "39a08d0e-26e4-44fb-ae19-906f5fe9435d": + continue + if r["direction"] == "backward": + metadata["~karaoke"] = "yes" + return + +if modulename() in config.setting["enabled_plugins"]: + register_track_metadata_processor(add_metadata) + log.info("%s activated" % (modulename())) +else: + log.debug("%s disabled in configuration" % (modulename())) -- 2.43.0