# Moving "feat." from title to artist

**URL:** <https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744>\
**Category:** Support\
**Created:** [October 8, 2022, 7:31am UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744 "2022-10-08T07:31:21Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![tdog](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/t/d07c76/32.png) [@tdog](https://community.mp3tag.de/u/tdog)\
**Post date:** [October 8, 2022, 7:31am UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/1 "2022-10-08T07:31:21Z")

</div>

Got it now!  
Have 2 more actions I am struggling with.

1. Need two swap between 2 artists.  
Artist 1, Artist 2 -\> Artist 2 Feat. Artist 1
2. Artist 1 - Title (Feat. Artist 2) -\> Artist 1 Feat. Artist 2 - Title

Possible?

---

<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:** [October 8, 2022, 7:36am UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/2 "2022-10-08T07:36:46Z")

</div>

> [@tdog](#):
>
> Need two swap between 2 artists.  
> Artist 1, Artist 2 -\> Artist 2 Feat. Artist 1

Try  
Format value for ARTIST  
Format string: `$regexp(%artist%,'(.*), (.*)', $2 Feat. $1)`

> [@tdog](#):
>
> Artist 1 - Title (Feat. Artist 2) -\> Artist 1 Feat. Artist 2 - Title

`$regexp(%field%,(.*) - (.*) \(Feat. (.*)\),$1 Feat. $3 - $2)`

---

<div class="post-metadata">

**Author:** ![tdog](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/t/d07c76/32.png) [@tdog](https://community.mp3tag.de/u/tdog)\
**Post date:** [October 8, 2022, 7:51am UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/3 "2022-10-08T07:51:30Z")

</div>

The first one worked perfectly, the second one just wipes the artist field if I assign it to ARTIST, ot the title field if to TITLE. I must be doing something wrong.

---

<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:** [October 8, 2022, 7:56am UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/4 "2022-10-08T07:56:24Z")

</div>

If you think you do something wrong, then it would be best to show a screendump of the action and the data.

You can test regular expression in format strings with Convert\>Tag-Tag and the preview there

---

<div class="post-metadata">

**Author:** ![tdog](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/t/d07c76/32.png) [@tdog](https://community.mp3tag.de/u/tdog)\
**Post date:** [October 8, 2022, 8:03am UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/5 "2022-10-08T08:03:20Z")

</div>

Ha! Just learned something new!  
Anyway, here is the test

 ![image](https://community.mp3tag.de/uploads/default/original/2X/8/820860d465a7d73009a5332f68cf3f16110131e1.png)

---

<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:** [October 8, 2022, 8:07am UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/6 "2022-10-08T08:07:47Z")

</div>

That is the problem of not really exact descriptions and simple copying and pasting.

The %field% has to be filled by you with the correct name of the field variable. You mentioned the ARTIST for the first case but no field for the second case - and as that has the title in it, it could have been anything, even the filename.

%field% does not contain any data, of course, therefore you search an empty string with a regular expression and if there is no match, then the original string is the result. And as this string was empty it erases the field contents.

Just checked the original data - and that shows that if you have "Utopia (Feat. Janelle Kroll)" in TITLE then this does not match the pattern

> [@tdog](#):
>
> Artist 1 - Title (Feat. Artist 2)

and the action will return the original title

---

<div class="post-metadata">

**Author:** ![tdog](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/t/d07c76/32.png) [@tdog](https://community.mp3tag.de/u/tdog)\
**Post date:** [October 8, 2022, 8:13am UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/7 "2022-10-08T08:13:04Z")

</div>

LOL, I am a smart idiot....  
That was it:  
`$regexp(%artist% - %title%,(.*) - (.*) \(Feat. (.*)\),$1 Feat. $3 - $2)`

---

<div class="post-metadata">

**Author:** ![tdog](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/t/d07c76/32.png) [@tdog](https://community.mp3tag.de/u/tdog)\
**Post date:** [October 8, 2022, 8:18am UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/8 "2022-10-08T08:18:11Z")

</div>

Actually, I stand corrected....I feel stupid again. It wrote everything in the title. I am lost at what to do now.

---

<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:** [October 8, 2022, 8:22am UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/9 "2022-10-08T08:22:24Z")

</div>

What does the title look like now?

---

<div class="post-metadata">

**Author:** ![tdog](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/t/d07c76/32.png) [@tdog](https://community.mp3tag.de/u/tdog)\
**Post date:** [October 8, 2022, 8:26am UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/10 "2022-10-08T08:26:45Z")

</div>

![image](https://community.mp3tag.de/uploads/default/original/2X/2/2c642818a9c588d534bfa83551441f6cf86106c6.png)  
It now correctly undersands the placement of the futured artist but it writes the title to the artist field, and leaves the title unchanged.

---

<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:** [October 8, 2022, 8:32am UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/11 "2022-10-08T08:32:42Z")

</div>

So now you have as ARTIST  
"Moon Boots Feat. Janelle Kroll - Utopia Feat. Janelle Kroll - Utopia"?  
Why is there a second "- Utopia"?

Couldn't you show the real contents of the fields ARTIST and TITLE, please?

---

<div class="post-metadata">

**Author:** ![tdog](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/t/d07c76/32.png) [@tdog](https://community.mp3tag.de/u/tdog)\
**Post date:** [October 8, 2022, 8:35am UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/12 "2022-10-08T08:35:56Z")

</div>

Apologies, I forgot I was applying the expression after already applying it once.

 ![image](https://community.mp3tag.de/uploads/default/original/2X/7/77262fb78afd453daa62f4d30d96b3b534d6a90f.png)

So, the artist should be Moon Boots Feat. Janelle Kroll and the title should be Utopia.

After applying this i get:  
Artist: Moon Boots Feat. Janelle Kroll - Utopia  
Title: Utopia (Feat. Janelle Kroll)

---

<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:** [October 8, 2022, 8:38am UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/13 "2022-10-08T08:38:38Z")

</div>

OK, so different approach:  
As apparently the regular expression is working I ask you now to copy that expression as it is and create a new action of the type "Guess value" (to import tag fields)  
Source:  
(paste the regular expression as source)  
Target format string: %artist% - %title%

---

<div class="post-metadata">

**Author:** ![tdog](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/t/d07c76/32.png) [@tdog](https://community.mp3tag.de/u/tdog)\
**Post date:** [October 8, 2022, 8:52am UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/14 "2022-10-08T08:52:02Z")

</div>

Worked beautifully! There are some combinations that are outside of the original expression due to really messed up tags but I can deal with them by creating additional actions based on what you've given me. Never used Guess Values before. Learned a lot of new stuff!

---

<div class="post-metadata">

**Author:** ![MotleyG](https://community.mp3tag.de/user_avatar/community.mp3tag.de/motleyg/32/440_2.png) [@MotleyG](https://community.mp3tag.de/u/MotleyG)\
**Post date:** [October 8, 2022, 1:39pm UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/15 "2022-10-08T13:39:10Z")

</div>

Guess values is especially useful when you know the tag info exists but has been combined into a single field, like in your example. It can be used to extract as many tags as you can identify if they are separated by any kind of identifiable character.

---

<div class="post-metadata">

**Author:** ![tdog](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/t/d07c76/32.png) [@tdog](https://community.mp3tag.de/u/tdog)\
**Post date:** [October 8, 2022, 5:36pm UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/16 "2022-10-08T17:36:05Z")

</div>

Well, the following did not work....  
Artist: Ferry Tayle  
Title: Memory Of Me (Feat. Hannah Ray) (Club Mix)  
After applying the regular expresson I get this:  
Artist: Ferry Tayle Feat. Hannah Ray) (Club Mix  
Title: Memory Of Me  
What I expect:  
Artist: Ferry Tale Feat. Hannah Ray  
TItle: Memory Of Me (Club Mix)  
Basically what I need is this:  
any combination of ft, feat, ft., feat., featuring with or without a leading open bracket that could be either { or ( to be converted to Feat.  
Then it should move anything starting with Feat. up to the first encountered open bracket or the end of the line if no open bracket is found into the Artist field.  
Unfortunately I do not understand how exactly this expression works and what its syntax means. Otherwise, I could probably figure it out myself.

---

<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:** [October 9, 2022, 8:43am UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/17 "2022-10-09T08:43:07Z")

</div>

> [@tdog](#):
>
> Memory Of Me (Feat. Hannah Ray) (Club Mix)

... has 2 opening and closing brackets. And due to the greadiness of regular expressions, everything starting with the 1st opening bracket and ending with the last closing bracket is taken as $3.

So, a variation of the regular expression would be:  
`$regexp(%artist% == %title%,(.*) == (.*) \(Feat\. (.*?)\) (.*?), $1 Feat. $3 == $2 $4)`  
The target patter would be: `%artist% == %title%`

---

<div class="post-metadata">

**Author:** ![tdog](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/t/d07c76/32.png) [@tdog](https://community.mp3tag.de/u/tdog)\
**Post date:** [October 9, 2022, 5:49pm UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/18 "2022-10-09T17:49:02Z")

</div>

Worked great! Had to combine these 2 expressions under the same action. Also added an expression to remove the leading spaces that got created for some reason. Also added the replacements for all variations of the featured artist I could think of. Couldn't figure out the expression but the replacement actions are doing what I need. I am going to share my action file in a case if someone can improve it or just use it for their own tagging purposes. There are only 2 more modifications I need (again, my lack of understanding the scripting language gets in the way):  
when the song is Temple One - Autumn Leaves (Feat. Hannah Ray (Club Mix)  
Expected action: Temple One Feat. Hannah Ray - Autumn Leaves (Club Mix)  
Temple One - Autumn Leaves (Feat. Hannah Ray  
Expected action:  
Temple One Feat. Hannah Ray - Autumn Leaves

---

<div class="post-metadata">

**Author:** ![tdog](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/t/d07c76/32.png) [@tdog](https://community.mp3tag.de/u/tdog)\
**Post date:** [October 9, 2022, 5:56pm UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/19 "2022-10-09T17:56:16Z")

</div>

Here is the content of my MTA file that works now exactly like I need (minus 2 expressions for the above)

[#0]  
T=2  
F=\_ALL  
1= /  
2=) (  
3=0|0

[#1]  
T=2  
F=\_ALL  
1=featuring  
2=Feat  
3=0|0

[#2]  
T=2  
F=\_ALL  
1=Featuring  
2=Feat  
3=0|0

[#3]  
T=2  
F=ARTIST  
1= feat.  
2= Feat.  
3=0|0

[#4]  
T=2  
F=ARTIST  
1= feat  
2=Feat.  
3=0|0

[#5]  
T=2  
F=TITLE  
1=(feat.  
2=(Feat.  
3=0|0

[#6]  
T=2  
F=TITLE  
1=(feat  
2=(Feat.  
3=0|0

[#7]  
T=2  
F=ARTIST  
1=(feat  
2=Feat.  
3=0|0

[#8]  
T=2  
F=ARTIST  
1=(feat.  
2=Feat.  
3=0|0

[#9]  
T=2  
F=TITLE  
1= feat  
2= (Feat.  
3=0|0

[#10]  
T=2  
F=TITLE  
1= feat.  
2= (Feat.  
3=0|0

[#11]  
T=2  
F=ARTIST  
1= ft.  
2= Feat.  
3=0|0

[#12]  
T=2  
F=ARTIST  
1= (ft.  
2= Feat.  
3=0|0

[#13]  
T=2  
F=ARTIST  
1= ft  
2= Feat.  
3=0|0

[#14]  
T=2  
F=TITLE  
1= ft  
2= (Feat.  
3=0|0

[#15]  
T=2  
F=TITLE  
1= ft.  
2= (Feat.  
3=0|0

[#16]  
T=2  
F=ARTIST  
1= (ft  
2= Feat.  
3=0|0

[#17]  
T=2  
F=TITLE  
1=(ft  
2=(Feat.  
3=0|0

[#18]  
T=2  
F=TITLE  
1=(ft.  
2=(Feat.  
3=0|0

[#19]  
T=7  
F=$regexp(%artist% \u003d\u003d %title%,(._) \u003d\u003d (._) \(Feat\. (._?)\) (._?), $1 Feat. $3 \u003d\u003d $2 $4)  
1=%artist% \u003d\u003d %title%

[#20]  
T=7  
F=$regexp(%artist% - %title%,(._) - (._) \(Feat. (.\*)\),$1 Feat. $3 - $2)  
1=%artist% - %title%

[#21]  
T=4  
F=ARTIST  
1=^[\s]+|[\s]+$  
2=  
3=0

---

<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:** [October 9, 2022, 6:08pm UTC](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744/20 "2022-10-09T18:08:14Z")

</div>

> [@tdog](#):
>
> Temple One - Autumn Leaves (Feat. Hannah Ray (Club Mix)

Does this mean that you are missing a closing bracket?  
Then I would add that before the other actions start.  
`$regexp(%title%,'(.*) \((.*) \((.*)','$1 ($2) ($3')`

And I would filter for such files first.  
Or you add another action that replaces "))" with ")".

[Next page](https://community.mp3tag.de/t/moving-feat-from-title-to-artist/58744.md?page=2)
