Batch move "feat" in title to artist field

Anyway to batch move "feat" in title to artists tab?
I never understand why "feat. Artist name" is still a thing, rather than adding a comma to artist tab, considering there's album artist tag...
I hate it because it goes over character limit in most players, and will wrap around, cause ... or will scroll across.
Same issue with prod, move it to composer...

see here:

Can you write here the correct expression here i try everything but doesn t work please please

If you have tried everything then I am sure there must have been a way that worked.

Here is the other way round:

I am sure you can adapt it.
And if not: there are sooooo many threads that deal with moving "featuring" around - please use the search function

Thank you i will try again

I tried all the variants none work, if you could leave a code here

I don't see any filled tags - just a filename that should be manipulated.
So this means that you don't want to move the data between fields but just need a file renaming program.
This also means that you more or less hijacked this thread.
I would like to draw your attention to either Convert>Filename-Tag to first fill the tags with e.g.
Format string: %artist% - %title% feat. %feat_artist%

And then rename the files as you like them:
Convert>Tag-Filename
Format string: %artist% feat. %feat_artist% - %title%

There are not a lot of titles with "feat." as keyword. It will only work for those, though.

The first result on the page seemed to work but didn't add a space to the artist

It seems

"

[#0]
T=4
F=_ALL
1=\((feat[^\)]*)\)
2=$1
3=0

[#1]
T=4
F=_ALL
1=\((ft[^\)]*)\)
2=$1
3=0

[#2]
T=4
F=_ALL
1=( featuring | feat. | feat | ft. | ft )
2= feat.
3=0

[#3]
T=5
F=ARTIST
1=%artist%$mid(%title%,$strstr(%title%, feat.),$len(%title%))

[#4]
T=4
F=TITLE
1=^(.+)( feat.+)
2=$1
3=0
"
is the end solution, but how do I add this/use this as an action in mp3tag?

You would have to copy that text into a text editor and save it in MP3tags Data/actions folder.
The file needs to have the extension mta instead of txt.
But: this is not the preferred way to create actions. Normally, you use the MP3tag internal functions Actions>Actions>New to create one.

Chaython,

You need the following solution:


Actions -> Create New Action -> Guess Values

Source Format:
%ARTIST%$regexp(%TITLE%,'^(.+?)\s+[[({<]?\s*(?:featuring|feat.?|ft.?)\s*([^])}>]+)>\s*[])}>]?(.*)$',' feat $2$3+++$1',1)

Guessing Pattern:
%ARTIST%+++%TITLE%


This will move all of the featuring / feat. / ft. from "Title" to "Artiste"

Dear community,
I need help because I am stucked with this conversion. :grimacing:

I want to move all artist infos from TITLE to ARTIST.
I assume that a syntax change was made in the course of one of the last releases.
The fact is that my previous conversion worked for about 2 years.
But today I am using v3.04 and it does not give any result.

What I have is:
ARTIST: Lee Ritenour
TITLE: The Inner Look (feat. Marcus Miller & Bob James) [radio mix]

What I want is:
ARTIST: Lee Ritenour feat. Marcus Miller & Bob James
TITLE: The Inner Look [radio mix]

I can't find the right REGEX term.

Where can I find a help / solution? :worried:

Which ones have you tried already?
Try an action of the type "Format value" for ARTIST
Format string: %artist% $regexp(%title%,.*\((.*)\).*,$1)
to get the feat.-part appended to ARTIST

Then try an action of the type "Format value" for TITLE
Format string: $regexp(%title%,\(.*\) ,)
to remove the feat.-part from the TITLE

Thank you ohrenkino. :hugs:

I had not tried these instructions yet.
It works for the above example.

In other cases where no part in square brackets follows , TITLE is unchanged. :neutral_face:
Can you please help me to consider this as well?
And what if in such a case the brackets in TITLE are completely missing?
I would be very happy to solve this problem soon with your help.

Yes, of course.
Regular expressions describe patterns and don't work if the patterns do not match.

if there is nothing following the brackets, try
Format string: %artist% $regexp(%title%,.*\((.*)\),$1)
and the removal action with
Format string: $regexp(%title%,\(.*\),)

... so that "feat" is the separator?

Format string: %artist% $regexp(%title%,.* feat. (.*),$1)
and the removal action with
Format string: $regexp(%title%, feat. .*,)

Thank you for your quick response.

I want to build an script for general use for my 'move FEAT' task.
Can an enhanced regex handle all mentioned constellation in one?
Or must i use separate regexes (as above mentioned) and check this out in advance?

as I said: different patterns require different expressions.
But as expressions that do not match return the input string and you already found out that no match leads to no modification, you can arrange the actions in the action group in such a way that they go from longest and most complex to simplest.
This should cater for the 3 variations.

I found some of this useful but my eventual solution to move any featured artist within the TITLE from the title to the artist relies on the featured artist being within parenthesis ().

The solution is based on one of the above but I found it didn't work completeley, so the modified version is as follows.

In the GUES VALUES, use:
%ARTIST%$regexp(%TITLE%,'(^.*)\s\((ft\.|ft|f\.|f\b|featuring|feat\.|feat|feat])\s(.*?)\)',' $2 $3+++$1',1)
with the guessing pattern as before
%ARTIST%+++%TITLE%