Move "Featuring" from Artist to Title

Before:
Artist: Abel Ramos feat Rozalla
Title: Where Is The Love (Antoine Clamaran Remix)

Result required:
Artist: Abel Ramos
Title: Where Is The Love feat Rozalla (Antoine Clamaran Remix)

Action: Guess Values
Sourceformat: $regexp(%artist%,(.*) feat (.*),$1,1) - $regexp(%title%,(.*) \((.*)\),$1,1)$mid(%artist%,$strstr($lower(%artist%), feat),999)$mid(%title%,$strstr(%title%,' ('),999)
Guessing Pattern: %artist% - %title%

The result of the sourceformat string must be "Abel Ramos - Where Is The Love feat Rozalla (Antoine Clamaran Remix)", what coresponds to the Guessing Pattern "%artist% - %title%"
The sourceformat has four parts:

%artist% = Abel Ramos feat Rozalla
string result = Abel Ramos $regexp(%artist%,(.*) feat (.*),$1,1)
(the 1 at the end of the string is for ingonring cases -> Feat = feat)

%title% = Where Is The Love (Antoine Clamaran Remix)
string result = Where Is The Love
$regexp(%title%,(.*) \((.*)\),$1,1)
(the 1 at the end of the string is for ingonring cases, would not be necessary here)

%artist% = Abel Ramos feat Rozalla
string result = feat Rozalla
$mid(%artist%,$strstr($lower(%artist%), feat),999)

%title% = Where Is The Love (Antoine Clamaran Remix)
string result = (Antoine Clamaran Remix)
$mid(%title%,$strstr(%title%,' ('),999)

$mid(x,i,999) is nonsense. it is the same as $cutleft(x,i)
Seems as i was thinking in twisted ways. I added 999 to have a position which is after the end, to make sure nothing is cutted away at the end.

for basic explanation of the scripting functions, look here:
https://docs.mp3tag.de/scripting

2 Likes

to format the %artist% tag-field:
Action: Format Value
Field: ARTIST
Formatstring: $regexp(%artist%,(.+?) ((?:featuring|feat|ft).?) (.+),'$1 ($2 $3)')

to format the filename and leave the %artist% field as it is:
Converter: Tag - Filename
OR
Action: Format Value
Field: _FILENAME
Formatstring: $num(%track%,2) - $regexp(%artist%,(.+?) ((?:featuring|feat|ft).?) (.+),'$1 ($2 $3)') - %title%

Ah, thank you Pone, that first one did the trick. Unfortunately, my iPod doesn't sort things properly when the (feat. ... ) portion is in the artist, so I'm using one of your previous scripts to append it to the title, which I had before but thought I could move it to the proper field.

Sorry for the double post...

when I run the first script you gave me it creates...

TITLE: We Run It
ARIST: 2 Pistols feat. Slick Pulla & Blood Raw

to

TITLE: We Run It
ARTIST: 2 Pistols (feat. Slick Pulla & Blood Raw)

but...

after running the others I get

TITLE: We Run It (feat. Slick Pulla & Blood Raw)
ARTIST: 2 Pistols (feat. Slick Pulla & Blood Raw)

...

I want to move it from ARTIST back to TITLE, not just copy it.

Have you tried the tag-field %albumartist% for sorting?

%albumartist% = 2 Pistols
%artist% = 2 Pistols feat. Trey Songz

same %albumartist% for every track of the album, different %artist% for every track.

Action: Format Value
Field: ALBUMARTIST
Formatstring: $regexp(%artist%,(.+?) ((?:featuring|feat|ft).?) (.+),$1)

I don't know exactly what script you used, but for:

TITLE: We Run It
ARTIST: 2 Pistols (feat. Slick Pulla & Blood Raw)
to
TITLE: We Run It (feat. Slick Pulla & Blood Raw)
ARTIST: 2 Pistols

use:
Action: Guess Values
Source Format: %title% $regexp(%artist%,'(.*) (\(?(?:featuring|feat|ft).? .*)',$2 +++ $1,1)
Guessing Pattern: %title% +++ %artist%

Yeah, iPod classics ignore the ALBUMARTIST field and only sorts by ARTIST. So when you have artist feat. x, it creates several artists that all connect with the same album. It makes for a very ugly artist listing on the iPod. iTunes on the other hand can sort things any way you want. They just are too dumb to implement it into their hardware.

I have my music collection / ipod set up to browse... Genre > Artist > Album

With the ARTIST field filled out the way it is, the only way to fix the 'multiple artists to one album' problem is to tell iTunes that these are compilation albums, but then you can't get to them in the usual Genre > Artist > Album method, they're kept together under their own "Compilations" category, which makes a mess of easing browsing.

Thank you pone.
I have a question now.

Before:
Artist: Abel Ramos feat Rozalla
Title: Where Is The Love (Antoine Clamaran Remix)

Result required:
Artist: Abel Ramos
Title: Where Is The Love (Antoine Clamaran Remix) feat Rozalla

And for using any word; feat, feat., featuring, featuring., ft, ft., Feat, Feat., Featuring, Featuring., Ft, Ft.

Thank you for reading.

i'm sorry, i dont have such much time these days. i'm pretty sure we had this simple case in another topic. use search, you will find it. (search for: title artist feat featuring regexp)

EDIT:
ok, i couldn't withstand. here is a modification of my answere in the second post of this topic. should work:

Action: Guess Values
Source Format: %title% $regexp(%artist%,(.*) ((?:featuring|feat|ft)\.?) (.*),$2 $3 +++ $1)
Guessing Pattern: %title% +++ %artist%

1 Like

Never mind.
I’m sorry to bother you.
I'll try to search. but if I can't get the key, I'll ask to you again and wait because you are genius in script. :slight_smile:

have you seen my edit of my answere before?

Hey Guys,

i know that this is an older story but i'm now having the same problem/question but i want to have just the title and by the interpet i want to have the features. Simply converse.

And before i try something wrong i wanted to ask you. I hope you know what i mean and you can help me.

Thanks a lot.

To be honest: I do not know what you mean.
To make it easier to answer it would help, if you gave examples that are as exact as possible showing the source and that what you want to achieve.
Because otherwise: how is anyone to tell whether there is something wrong.

Hey,

realy nice that you answer that fast.

Well as you wanted some examples.

Some songs are displayed (i just call the important column)

Title Artist
Rain Man: Las Vegas Hans Zimmer feat. Lisa Gerrard

and some are displayed like that:

Title Artist
Rain Man: Las Vegas feat. Lisa Gerrard Hans Zimmer

Now i want to teg all my songs like the 1. example. Is that possible?

Actually, you can find out the solution using the trick from post #2 in this thread.

To avoid side effects .... set ...
Filter: TITLE MATCHES "[[({<]?\s*(?:featuring|feat\.?|ft\.?).+?[])}>]?" AND NOT ARTIST MATCHES "[[({<]?\s*(?:featuring|feat\.?|ft\.?).+?[])}>]?"

The following proposal removes the sequence "featuring somebody" from TITLE and appends it to ARTIST, that means, the "featuring somebody" supplement will be swapped or exchanged from TITLE to ARTIST.
Additionally, different spellings and abbreviations of "featuring" will be replaced by the abbreviation "feat.".

Action: Guess values
Source format:
%ARTIST%$regexp(%TITLE%,'^(.+?)\s+[[({<]?\s*(?:featuring|feat\.?|ft\.?)\s*([^])}>]+)\>\s*[])}>]?(.*)$',' feat. $2$3+++$1',1)
... or ...
%ARTIST%$regexp(%TITLE%,'^(.+?)\s+[[({<]?\s*(?:featuring|feat\.?|ft\.?)\s*([^])}>]+)[])}>]?(.*)$',' feat. $2$3+++$1',1)
Guessing pattern:
%ARTIST%+++%TITLE%

From:
ARTIST=Bob Fuller
TITLE= ...
Las Vegas ft Annie Spider
Las Vegas ft. Annie Spider
Las Vegas feat Annie Spider
Las Vegas feat. Annie Spider
Las Vegas featuring Annie Spider
Las Vegas [ft Annie Spider]
Las Vegas (ft Annie Spider)
Las Vegas {ft Annie Spider}
Las Vegas
Las Vegas [ feat. Annie Spider ]
Las Vegas ( feat. Annie Spider )
Las Vegas { feat. Annie Spider }
Las Vegas < feat. Annie Spider >
Las Vegas [ feat. Annie Spider ] [INSTRUMENTAL]

To:
TITLE=Las Vegas
ARTIST=Bob Fuller feat. Annie Spider
... resp. in the last case ...
ARTIST=Bob Fuller feat. Annie Spider [INSTRUMENTAL]


The following proposal removes the sequence "featuring somebody" from ARTIST and appends it to TITLE, that means, the "featuring somebody" supplement will be swapped or exchanged from ARTIST to TITLE.
Additionally, different spellings and abbreviations of "featuring" will be replaced by the abbreviation "feat.".

To avoid side effects .... set ...
Filter: ARTIST MATCHES "[[({<]?\s*(?:featuring|feat\.?|ft\.?).+?[])}>]?" AND NOT TITLE MATCHES "[[({<]?\s*(?:featuring|feat\.?|ft\.?).+?[])}>]?"

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


The following proposal sets the abbreviation "feat. somebody" into round brackets in the target field, giving "(feat. somebody)".

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

DD.20120708.2030.CEST
Edit.DD.20120728.1616.CEST
Edit.DD.20131029.0900.CET

Thanks for your answer.

I'll try it and give you soon a reply if it work.

  • Edit: It doesn't work. I tryed your idea and the idea from the other topic. Both didn't work. -

"It doesn't work" is just a bad result for you, especially because it works fluently here using your example data.

My proposal works with ...

  • brackets from the set "[({<>})]" or with no brackets at all
  • words "ft","ft.","feat","feat.","featuring" in lower or upper or mixed case.

Please try again.
To avoid spelling errors use clipboard copy and paste and transfer the Mp3tag scripting expressions from this thread post #28 into the related Mp3tag dialog edit box.

At first try out the filter expression. Does it display only the fitting files?

Then select one file from the filtered list and try out the action "Guess values" as described.

If that does not work, then your situation has likely some other circumstances than you have initially reported.

DD.20120708.1313.CEST

I don't know why but now it realy works :smiley:

I just checked one song but i think if it works at one song it'll works at all.

Thank you much for helping me.

Just one more question about this tagging: is it possible to do this with all my libary at one turn or won't this work?

  • Edit: okay i got 2 more questions :wink: The second one is: is der a way to tag all those featurs to the same looking. That you can't see "feat. / feat / ft. / (feat)...." and you just can see "feat."?

Well, it's your turn to check it out.
The force is with you ... as always ... the risk is with the user!

Better start with a small set of files.

DD.20120708.1428.CEST

It worked fine with my libary. Now all look much better!

Edit: okay i got 2 more questions The second one is: is der a way to tag all those featurs to the same looking. That you can't see "feat. / feat / ft. / (feat)...." and you just can see "feat."?