# -*- coding: utf-8 -*-
#
# Copyright © 2019-2020 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 metadata variables for
certain types of recordings, so that tagger scripts can incoporate
what sort of track we are looking at into the file tags.
%_karaoke%
- Set to "yes" if the track is a karaoke recording.
%_drama%
- Set to "yes" if the track is a recording of an audio drama.
For example, you could use a tagger script such as
$if(%_karaoke%,$set(comment:karaoke,%_karaoke%))
to tag karaoke tracks as such in order to help generate playlists
for your next karaoke dance party.
'''
PLUGIN_VERSION = "2"
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 standalone recordings, "track" is actually a recording, not a track
recording = track.get("recording", track)
for r in recording["relations"]:
# 'karaoke version of' is the backward relation of this type...
if r["type-id"] == "39a08d0e-26e4-44fb-ae19-906f5fe9435d":
if r["direction"] == "backward":
metadata["~karaoke"] = "yes"
if r["target-type"] == "work":
if r["work"]["type-id"] == "40ed00fb-cd1d-3de5-afcc-4d08720d63e7":
metadata["~drama"] = "yes"
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()))