List all existing tags in column except a few specified ones?


Ok, here what I want to do:
Basically, I want a column that tells me if there are unwanted tags that exists.
So the column will tell me if there are tags other than the following ones that exists:


How do I do that?


Ah, I found a way, here it is.
The way I tag things, all the tags in the above list should be there, except %COMMENT% that is sometimes there, sometimes not.
The way I did it, there will be a black square in the column if there are missing wanted tags, or if there are tags that are not in the above list.
Here it is:


Wouldn't it be easier to select all files and then have a look at the extended tags dialogue (Alt-T) where you can see which fields are present?
There you can delete the unwanted ones in more or less one go.

Here is a proposal to be used within the Mp3tag filter dialog ...

Files with tag fields only from the list: ARTIST ALBUMARTIST ALBUM TRACK TITLE COMPOSER YEAR GENRE "$regexp($regexp($list('~~','~~','=='),'~~(.+?)~~.+?==','$1~~'), '((ARTIST|ALBUMARTIST|ALBUM|TRACK|TITLE|COMPOSER|YEAR|GENRE)~~)',)" IS "" All files with additional tag fields in addition to those in the list ... NOT ("$regexp($regexp($list('~~','~~','=='),'~~(.+?)~~.+?==','$1~~'), '((ARTIST|ALBUMARTIST|ALBUM|TRACK|TITLE|COMPOSER|YEAR|GENRE)~~)',)" IS "")

If someone needs an indicator in the listview, which displays only the existence of other tag-field names, more than the basic set of tag-field names, then it can be done with this formatstring ...

$iflonger($regexp($regexp($list('~~','~~','=='),'~~(.+?)~~.+?==','$1~~'), '((ARTIST|ALBUMARTIST|ALBUM|TRACK|TITLE|COMPOSER|YEAR|GENRE)~~)',),0,'',)

DD.20150610.1828.CEST, DD.20150613.1345.CEST

I wanted to avoid the dialog and filter route because I was making changes to tags to 2,85TB worth of FLAC files, then I had to do the same to the mp3 version of my FLAC library. I add new albums on a weekly basis so it was easier to just have a small column that shows something (the black square) in case there were missing essential(to me) tags or unwanted ones. I even added a few conditions so I know if I make a typo in the "Album Type", for instance.

I figured a way to make it work exactly the way I wanted, and thanks for helping out, really appreciated.

Finally came out with this, where in this example track #4 have missing artwork and track #5 have unwanted tags:

But how did you do it?

For the artwork, it's as easy as this: $if(%_covers%, ◌, '['●']')

Now, for the [●] to show if there are unwanted tags, the code is as follow:


$list(,,) gives all existing tags in this format: TAG1VALUE1TAG2VALUE2, etc..
So I get the length of $list(,,) and expect it to be equal to the length of the tag names I want + their values.
If it's not, then there are unwanted tags and it shows a [●].
For the first track in the screenshot, $list(,,) would be:

The 91 in the code is the length of the tag names put together: ALBUMARTISTALBUMARTISTDISCNUMBERCOMPILATIONLENGTHTITLETRACKYEA


It wasn't necessary, it was just to make the code shorter. It was either this:


Or this:


%COMMENT% is not always in my tags, so I count the length of it if it's present or not, depending.

Let say there is a tag called FOO and its value is BAR. I expect the length of $list(,,) to be a precise number because I know the length of the tags I want put together. Now, FOO is not in the tags I want. That's a +3 in length, and another +3 in length for its value (BAR).
Length of $list(,,) is now longer by 6 chars than what I expect. That's when I get the [●] to tell me there are unwanted tags.

Regarding column setup for me the easiest method is ... value: %_covers%
If there is no cover embedded, then the listview field is blank, otherwise it displays the number of embedded covers.