# Move "Featuring" from Artist to Title

**URL:** https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096
**Category:** Support
**Created:** [November 9, 2010, 12:13pm UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096 "2010-11-09T12:13:03Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![morellidk](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/m/ccd318/32.png) [@morellidk](https://community.mp3tag.de/u/morellidk)
#### Post date: [November 9, 2010, 12:13pm UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/1 "2010-11-09T12:13:03Z")

</div>

Hello. Right now in the Artist column i have for example Mariah Carey Feat. abc, Mariah Carey feat. def, Mariah Carey Feat. xyz etc. etc. I want to keep Mariah Carey in the column, but move Feat. NN.  
I want it removed to the Title column.  
Example:

Before  
TITLE: O Come All Ye Faithful / Hallelujah Chorus  
ARTIST: Mariah Carey Feat. Patricia Carey

New  
TITLE: O Come All Ye Faithful / Hallelujah Chorus (Feat. Patricia Carey)  
ARTIST: Mariah Carey

How do I do that?

---

<div class="post-metadata">

### Author: ![pone](https://community.mp3tag.de/user_avatar/community.mp3tag.de/pone/32/272_2.png) [@pone](https://community.mp3tag.de/u/pone)
#### Post date: [November 9, 2010, 1:28pm UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/2 "2010-11-09T13:28:09Z")

</div>

Action: Guess Values  
Source Format: `%title% $regexp(%artist%,(.*) Feat. (.*),'('Feat. $2')' +++ $1)`  
Guessing Pattern: `%title% +++ %artist%`

---

<div class="post-metadata">

### Author: ![morellidk](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/m/ccd318/32.png) [@morellidk](https://community.mp3tag.de/u/morellidk)
#### Post date: [November 10, 2010, 6:24am UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/3 "2010-11-10T06:24:13Z")

</div>

Wow that's fantastic. Thank's for the quick answer. ![:rolleyes:](https://community.mp3tag.de/uploads/default/original/1X/3a79e8b0b7d169b30216785521d7c6f4f895c421.gif ":rolleyes:")

---

<div class="post-metadata">

### Author: ![LyricsLover](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/l/c6cbf5/32.png) [@LyricsLover](https://community.mp3tag.de/u/LyricsLover)
#### Post date: [December 11, 2010, 9:05am UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/4 "2010-12-11T09:05:53Z")

</div>

Thanks for this RegExp!  
For all those who use a german Mp3tag:  
"Guess Values" means "Tag-Felder importieren" 😉

---

<div class="post-metadata">

### Author: ![stevehero](https://community.mp3tag.de/user_avatar/community.mp3tag.de/stevehero/32/337_2.png) [@stevehero](https://community.mp3tag.de/u/stevehero)
#### Post date: [March 11, 2011, 4:24pm UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/5 "2011-03-11T16:24:13Z")

</div>

> [@pone](#):
>
> Action: Guess Values  
> Source Format: `%title% $regexp(%artist%,(.*) Feat. (.*),'('Feat. $2')' +++ $1)`  
> Guessing Pattern: `%title% +++ %artist%`

Hi Pone Thanks for this but I was wondering if you could help me out with a very similar task

Is it possible to move whatevers after feat **inside** any parenthesis if applicable of the title?  
_ **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)

Also could this work if there were no parenthesis in the title?

Thanks in advance.

---

<div class="post-metadata">

### Author: ![pone](https://community.mp3tag.de/user_avatar/community.mp3tag.de/pone/32/272_2.png) [@pone](https://community.mp3tag.de/u/pone)
#### Post date: [March 12, 2011, 3:28pm UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/6 "2011-03-12T15:28:28Z")

</div>

> [@stevehero](#):
>
> Is it possible to move whatevers after feat **inside** any parenthesis if applicable of the title?  
> _ **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)
> 
> Also could this work if there were no parenthesis in the title?

here you go:

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%`

---

<div class="post-metadata">

### Author: ![stevehero](https://community.mp3tag.de/user_avatar/community.mp3tag.de/stevehero/32/337_2.png) [@stevehero](https://community.mp3tag.de/u/stevehero)
#### Post date: [March 12, 2011, 3:42pm UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/7 "2011-03-12T15:42:39Z")

</div>

> [@pone](#):
>
> here you go:
> 
> 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%`

**WORKS**

You make it sound so so easy 😛

Many thanks pone

---

<div class="post-metadata">

### Author: ![muescher](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/m/eada6e/32.png) [@muescher](https://community.mp3tag.de/u/muescher)
#### Post date: [March 13, 2011, 10:59pm UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/8 "2011-03-13T22:59:21Z")

</div>

Hello guys.

I have a similar problem which first part was already solved with the first regex.  
( Source Format: `%title% $regexp(%artist%,(.*) Feat. (.*),'('Feat. $2')' +++ $1)`  
Guessing Pattern: `%title% +++ %artist% )`

But now i need to know, how to do the following:

Before  
Artist: Rihanna Feat. Eminem  
Title: Love The Way You Lie (Part II)

The required result is like  
Artist: Rihanna  
Title: Love The Way You Lie (Part II Feat. Eminem)

But for batch-processing, it should either only put the "Feat."-part into the title or, if there are already brackets, put it into them like above.

Is this possible?

Thanks in advance 🙂

---

<div class="post-metadata">

### Author: ![pone](https://community.mp3tag.de/user_avatar/community.mp3tag.de/pone/32/272_2.png) [@pone](https://community.mp3tag.de/u/pone)
#### Post date: [March 13, 2011, 11:23pm UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/9 "2011-03-13T23:23:29Z")

</div>

> [@muescher](#):
>
> I have a similar problem which first part was already solved with the first regex.  
> ( Source Format: `%title% $regexp(%artist%,(.*) Feat. (.*),'('Feat. $2')' +++ $1)`  
> Guessing Pattern: `%title% +++ %artist% )`
> 
> But now i need to know, how to do the following:
> 
> Before  
> Artist: Rihanna Feat. Eminem  
> Title: Love The Way You Lie (Part II)
> 
> The required result is like  
> Artist: Rihanna  
> Title: Love The Way You Lie (Part II Feat. Eminem)
> 
> But for batch-processing, it should either only put the "Feat."-part into the title or, if there are already brackets, put it into them like above.

With your/my old action, you get:  
Title: Love The Way You Lie (Part II) (Feat. Eminem)

So the simplest solution is an additonal replace function to get rid of the brackets in the middle:  
`$replace(...,') (', )`

Action: Guess Values  
Source Format: `$replace(%title% $regexp(%artist%,(.*) Feat. (.*),'('Feat. $2')' +++ $1),') (', )`  
Guessing Pattern: `%title% +++ %artist%`

---

<div class="post-metadata">

### Author: ![muescher](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/m/eada6e/32.png) [@muescher](https://community.mp3tag.de/u/muescher)
#### Post date: [March 14, 2011, 4:06pm UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/10 "2011-03-14T16:06:47Z")

</div>

Thanks for the solution, i thought it should be with with an if-condition, but it's much simpler 😳

---

<div class="post-metadata">

### Author: ![DJBoS](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/d/bbe5ce/32.png) [@DJBoS](https://community.mp3tag.de/u/DJBoS)
#### Post date: [March 22, 2011, 3:02am UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/11 "2011-03-22T03:02:49Z")

</div>

I also have a very similar request for this topic...

My current tags are $num(%track%,2) - %artist% - %title%

ex.) 13 - 2 Pistols feat. Trey Songz - That's My Word

I just want to put the feat. portion into parenthesis so it looks like:

13 - 2 Pistols (feat. Trey Songz) - That's My Word

thanks!

---

<div class="post-metadata">

### Author: ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)
#### Post date: [March 22, 2011, 5:20am UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/12 "2011-03-22T05:20:50Z")

</div>

> [@DJBoS](#):
>
> ... My current tags are $num(%track%,2) - %artist% - %title%
> 
> ex.) 13 - 2 Pistols feat. Trey Songz - That's My Word

The way you describe it you do not want to manipulate the TAGS but the FILENAME.  
I would suggest that you fill the tags first by reimporting them from the filename.  
Then create an actiongroup with two actions,  
one of the type "replace"  
in which you replace "_feat" with "_(feat"  
(underscore to illustrate a blank space)

the second action in that group is "Replace with regular expression"  
in which you replace  
$  
(which stands for "end of field")  
with  
)

Then use the converter tag - filename to create your new filenames.

---

<div class="post-metadata">

### Author: ![Archy88](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/a/6de8d8/32.png) [@Archy88](https://community.mp3tag.de/u/Archy88)
#### Post date: [March 22, 2011, 6:56pm UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/13 "2011-03-22T18:56:27Z")

</div>

Is there any way that you could explain what each of your strings is doing? Especially the one that adds 999. I'm not sure I follow that.

I managed to manipulate it so that it can distinguish between Feat, Ft. and F., but I have some titles that say (Remix). I would like the Ft. "Secondary Artist" to be before the (Remix) paranthesis, while learning what is being done.

Thanks a ton!!

Better than sifting through 5k songs by hand...

---

<div class="post-metadata">

### Author: ![pone](https://community.mp3tag.de/user_avatar/community.mp3tag.de/pone/32/272_2.png) [@pone](https://community.mp3tag.de/u/pone)
#### Post date: [March 22, 2011, 8:10pm UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/14 "2011-03-22T20:10:53Z")

</div>

> [@Archy88](#):
>
> Is there any way that you could explain what each of your strings is doing? Especially the one that adds 999. I'm not sure I follow that.

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](https://docs.mp3tag.de/scripting)

---

<div class="post-metadata">

### Author: ![pone](https://community.mp3tag.de/user_avatar/community.mp3tag.de/pone/32/272_2.png) [@pone](https://community.mp3tag.de/u/pone)
#### Post date: [March 22, 2011, 8:25pm UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/15 "2011-03-22T20:25:00Z")

</div>

> [@DJBoS](#):
>
> My current tags are $num(%track%,2) - %artist% - %title%  
> ex.) 13 - 2 Pistols feat. Trey Songz - That's My Word
> 
> I just want to put the feat. portion into parenthesis so it looks like:  
> 13 - 2 Pistols (feat. Trey Songz) - That's My Word

_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%`

---

<div class="post-metadata">

### Author: ![DJBoS](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/d/bbe5ce/32.png) [@DJBoS](https://community.mp3tag.de/u/DJBoS)
#### Post date: [March 23, 2011, 10:07am UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/16 "2011-03-23T10:07:58Z")

</div>

> [@pone](#):
>
> _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.

---

<div class="post-metadata">

### Author: ![DJBoS](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/d/bbe5ce/32.png) [@DJBoS](https://community.mp3tag.de/u/DJBoS)
#### Post date: [March 23, 2011, 10:14am UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/17 "2011-03-23T10:14:56Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![pone](https://community.mp3tag.de/user_avatar/community.mp3tag.de/pone/32/272_2.png) [@pone](https://community.mp3tag.de/u/pone)
#### Post date: [March 23, 2011, 10:19am UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/18 "2011-03-23T10:19:17Z")

</div>

> [@DJBoS](#):
>
> Unfortunately, my iPod doesn't sort things properly when the (feat. ... ) portion is in the artist,  
> ...but thought I could move it to the proper field.

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)`

---

<div class="post-metadata">

### Author: ![pone](https://community.mp3tag.de/user_avatar/community.mp3tag.de/pone/32/272_2.png) [@pone](https://community.mp3tag.de/u/pone)
#### Post date: [March 23, 2011, 10:33am UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/19 "2011-03-23T10:33:02Z")

</div>

> [@DJBoS](#):
>
> 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.

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%`

---

<div class="post-metadata">

### Author: ![DJBoS](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/d/bbe5ce/32.png) [@DJBoS](https://community.mp3tag.de/u/DJBoS)
#### Post date: [March 23, 2011, 2:09pm UTC](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/20 "2011-03-23T14:09:43Z")

</div>

> [@pone](#):
>
> 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)

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.

[Next page](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096.md?page=2)
