I have tagged my files with Musicbrainz Picard using the id3v2.4 format
I have elected to use the Artist tag (rather than Artists) to store all artists for a track separated by semi-colons e.g.
Artist: Tom Jones; Cerys Matthews
I am using a script in Picard to make contributing artists (such as Cerys Matthews above) appear as (feat. XXX) in the title.
The problem is, the script in Picard is not that accurate and often leaves me with no featured artists in the title or missing some
I am therefore looking for a script in MP3tag to append my Title tags with any artists after the first in format such as (feat. artist2, artist3 & artist4)
You could first transfer all but the first artist to a temporary field
Action of the type "Format value" for tmp_artist
Format string: $regexp(%artist%,(.*?); (.*),$2)
tmp_artist should now contain artist2; artist3; artist4.
Now you can replace the last ; with &:
Action of the type "Format value" for TMP_ARTIST
Format string: $regexp(%tmp_artist%,(.*); (.*),'$1 & $2')
then replace the semicoli with a comma:
Action of the type "Replace" for TMP_ARTIST
Search string: ;
Replace string: ,
And now add the TMP_ARTIST to TITLE
Action of the type "Format value" for TITLE
Format string: %title% (feat. %tmp_artist%)
For some reason the first Format of tmp_artist using $regexp(%artist%,(.?); (.),$2) only outputs the main artist in tmp_artist rather than the other two
EDIT: not sure if it matters but i used ; as the delimiter in Picard yet in MP3tag the delimeter appears as a double slash e.g. artist1\artist2
Then you've got multi-value fields and not just one field of the type ARTIST. See the extended tags dialogue.
You can merge these fields with an action (see the help on actions: Merge Duplicate Fields – Mp3tag Documentation) - and you can set the semicolon as separator so that it looks similar to your original idea.
Ok so i've had a good play around with it and using your advice i've got something that mostly works. The only issue im seeing is if tmp_artist is blank (meaning the track is a single artist) the final command Format: %title% (feat. %tmp_artist%) is placing an empty (feat. ) at the end of the title.
E.g.
Ariana Grande - Watch Me (feat. )
Is there any way to make it only carry out the formatting if tmp_artist has a value? I dont really want to sift through every track selecting only those that have contributing artists, that will kill me off
You could merge first all artists so that the ones with more than one artist have the semicolon in the field.
and then you could filter for those tracks:
%artist% HAS ;