i’m cleaning my library and i see most of my songs have album missing. I’ve Looked Up them with Musicbrainz P but it will modify all tags it found different. I would modify only album metadata in once is this possible?
Under Options > Tags, add all tags that you don’t want updated in the 'Preserve these tags from being cleared or…" pane.
You can finde a complete list of tags that Picard might update here:
(see both ‘basic tags’ and ‘advanced tags’)
And, as always, be sure to do testing on test files before you decide to use it on your actual library.
The idea of Picard is to tag your files with a mass of consistent metadata from the massive MusicBrainz database, and it works best with albums.
If you do not want to allow Picard to update all (or most) of the tags in your files, then I think that Picard is probably not the tool for you.
Thank you so much for helping.
I added tags that i don’t want updated in that pane and lookup the song. What it does is preserve the tags already exist, but it will add tags if that tags in the original file are empty, even where tag is set as “preserve”.
So it will do half of the job i need. Any way to say picard do not fill empty tags?
You could use a user script to delete the unwanted tags.
$unset does clear the tags loaded by Picard, keeping the tags that are already in the files. But
$delete actually marks a tag for deletion, so it would be removed from the files when saving!
Looking the script $unset and it says: "Unsets the variable
name . The function allows for wildcards to unset certain tags (works with ‘performer:’, ‘comment:’, and ‘lyrics:)"*
So it seems it would work only with those three tags?
Thank you so much, i’m a newbie here so I’ve no idea how to do this. I checked this https://picard-docs.musicbrainz.org/en/extending/scripts.html#tagging-scripts but really don’t know how to do.
No, it works with all tags.
Only for performer, comment and lyrics it allows wildcards like
$unset(performer:*) so that you don’t need to do
If a tag does not exist in the original file, does $unset prevent that it gets created? Or would this lead to the creation of an empty tag field?
I’ve tried to test it to find out, but it seems like the unset function is broken? I’m probably just making some stupid mistake, but I can’t find where
I created a simple user script with 1 line “$unset(UserTag1)”, and then loaded and saved 2 files: one with a tag named UserTag1 and some data in it, and one without the tag. And the script is active. Yet nothing happens to either one when I save them.
And after changing the userscript to “$unset(title)”, the album gets loaded without titles. Yet saving the file doesn’t clear the title tag field…
You can find the userscripts in the Options window under “Scripting”. Ticking the box at the top of the window activates scripting, and with the box in front of each script you can (de)activate individual scripts.
First of, scripts run on data loaded from MB (on the right), not on files. You can run scripts manually on files via context menu.
Now let’s assume you have a file with exactly one tag “UserTag1” with value “foo”. When you load this into Picard it will have one tag “UserTag1” with value “foo”. If you run
$unset(UserTag1) on this tag Picard will have no tag. If you save no tag nothing happens by default, because Picard does not touch tags other then the ones it has data for by default.
Exception would be if you have “clear existing tags” active, then all existing tags would be removed, and as in our example nothing gets saved. No tags in the file.
Same as before, Picard has no data for the title tag, saving does not save anything. If you explicitly want to delete the tag use $delete.
Thanks for helping me find my stupid mistake
One tip to make sure your work in Picard isn’t wasted - keep the MBID tags. They look like clutter but they mean if you ever want to make changes (e.g. you decide in a few years, hey I’d like to add ‘label’ + ‘catalogue number’ tags to all my files) you can just change settings in Picard, drop your files in, and hit save. No looking up and matching each album every time.
If you’re not keeping those then I would use another software to do this tbh.
Thankyou, did you mean those?:
Btw there are not other software like PIcard
As using those scripts I don’t need to flag and fill the “Preserve these tags from being cleared or…” pane right?
When updating to new Picard release will delete scripts?
Yup! Doesn’t have to be all of them, but they can save a looot of work later.
Giving this some thought—and recalling my own first baby steps with Picard—Picard is indeed opt-out oriented with regards to what tags it will write and update.
And Picard itself doesn’t provide information on what tags it can and will retrieve and write or update.
A user will need to do quite some research to find out what tags those are exactly.
And then put in the work to create exceptions for all the ones he is not interested in.
I have no specific suggestions or solutions for this right now, and any possible consequences for plugins and scripts would probably need serious consideration, but some additional opt-in feature that displays all the tags that Picard is able to retrieve, and making it possible to choose the ones you are interested in might be a sensible and useful additional feature?
I can’t imagine there are very many users out there that actually want something like this, but I just posted a plugin to my collection that allows the user to specify a list of only the tags that they want to save to their files.
This must be used with extreme care because any tags not included on the list will also not be available for scripts, including the file naming script (although there is a work-around explained in the documentation). For that reason alone, I am hesitant to submit this to the list of official Picard plugins.
If anyone tries this and has any questions or comments, please let me know.
Keep Only Tags [Download]
This plugin allows the user to determine which tags are written to the output files by Picard. Tags that you wish to keep are entered in a page in the Options settings, with each tag on a separate line. Blank lines will be ignored. The entries are not case-sensitive.
If a tag in the list ends with an asterisk (*), then it will keep any tags beginning with the tag. For example, if your list contains “performer:*” then all tags beginning with “performer:” will be kept, such as “performer:instrument” and “performer:vocals”.
All tags that are removed will still be available as variables with “_ko_” prepended to the tag name. For example, if you choose not to keep the “musicbrainz_trackid” tag, it will still be available to scripts as “_ko_musicbrainz_trackid”.
What it Does
This plugin reads the album and track metadata provided to Picard and converts any tags not found in the user’s “keep” list into hidden variables by adding “_ko_” to the start of the tag name.
NOTE: This plugin is configured to run after all other plugins, so that it is working with the final information that may have been updated by another plugin.
Any tags not included in the user’s “keep” list are not available for use in scripts, including the file naming script. To accommodate the use of standard tags in the file naming script that have not been included in the “keep” list, you can include lines such as
$set(album,$if2(%album%,%_ko_album%)) at the beginning of file naming script for each of the tags used.
Wow, that’s fast!
Commenting on it is slightly difficult from my position, because these days (as most more experienced Picard users) I have all sorts of scripts running that accomplish things like this, but:
Looking at the question from the OP here, and the exact same question/issue I ran into on a completely different forum, and the fact that I might consider using this myself for cleaning ‘messy’ files in a first cleaning round:
The plugin currently will still write all tags that are empty.
I am guessing the desire of possible users of such a plugin/feature would be that it also doesn’t write any of these tags to begin with.
I think it is really great that this allows you to see all tags that Picard is able to retrieve.
I am pretty sure this will be very helpful to new users of Picard.
(and probably for more experienced users too)
But when a user starts experimenting by removing some tags from the pane, that tag information is ‘gone’, and he will need to do some research again if he desires to restore these tags.
How about leaving all entries in place and have check-boxes in front of them?
If you agree on such functionality, the name ‘Keep Only Tags’ might not cover this perfectly? Maybe something along the lines of ‘Block Tags’ would be better describing?
Also, there is already a plugin named ‘Keep tags’. (which I never used because I never got to understand how it was supposed to work)