My google-fu skills keep bring me to the old forums and I see no topics here regarding development. I am trying to write a plug-in that will delete all non-standard tags. My Python skills are weak - enough to be dangerous - but I am unsure if I am on the right path.
The following has been edited multiple times and I assume I have a Python error - which is why I cannot see my plug-in after install to enable - I have referred to the bundled plug-ins to see what I can learn. The following is the code so far;
PLUGIN_NAME = u'Cleanup Bad Tags'
PLUGIN_AUTHOR = u'Matthew A Snell'
PLUGIN_DESCRIPTION = '''Remove all non-standard tags. Keep standard tags inc musicbrainz_*, acouticid_*, musicip_* or _* '''
PLUGIN_VERSION = '0.1'
PLUGIN_API_VERSIONS = ["0.9.0", "0.10", "0.15", "0.16"]
from picard.metadata import register_album_metadata_processor, register_track_metadata_processor
_KEEPTAGS = [album, albumartist, albumartistsort, albumsort, arranger,
artist, artistsort, asin, barcode, bpm, catalognumber,
comment, compilation, composer, composersort, conductor,
copyright, date, discnumber, discsubtitle, djmixer,
encodedby, encodersettings, engineer, gapless, genre,
grouping, isrc, label, language, license, lyricist,
lyrics, media, mixer, mood, originaldate, originalyear,
performer, podcast, podcasturl, producer, releasecountry,
releasestatus, releasetype, remixer, script, show,
showsort, subtitle, title, titlesort, totaldiscs,
totaltracks, tracknumber, website, work, writer]
def strip_bad_tags(tagger, metadata):
for key, values in metadata.rawitems():
mainkey, subkey = key.split(':', 1)
if subkey:
continue
if (key not in _KEEPTAGS:
if not key.startswith("musicbrainz_"):
if not key.startswith("acouticid_"):
if not key.startswith("musicip_"):
if not key[0] == "~"):
del metadata[key]
def CleanupBadTagsAlbumProcessor(tagger, metadata, release):
strip_bad_tags(tagger, metadata)
def CleanupBadTagsTrackProcessor(tagger, metadata, track, release):
strip_bad_tags(tagger, metadata)
register_album_metadata_processor(CleanupBadTagsAlbumProcessor)
register_track_metadata_processor(CleanupBadTagsTrackProcessor)
I have tried installing the plugin manually (in user plug-in directory) and through the Picard Install Plug-in interface.
I have checked the Initialization block for the plug-in multiple times and see no error. I have tried parsing metadata.keys() vs metadata.rawitems() plus other code changes to see if I can figure this out.
I assume it doesnât show because I have bad Python code, incorrect initialization in the plug-in header or not using the registration call correctly. I have tried doing the _KEEPTAGS list with & without quotes - keep thinking the bad code is there.
I have successfully made a variation of featartistsintitle.py plug-in which installs, is listed as a plug-in and works as expected.
Appreciate any input or guidance (or code improvements). Thanks.