# Move a featured artist from the ARTIST to TITLE tags

**URL:** https://community.mp3tag.de/t/move-a-featured-artist-from-the-artist-to-title-tags/62212
**Category:** Mac
**Created:** [September 26, 2023, 5:08pm UTC](https://community.mp3tag.de/t/move-a-featured-artist-from-the-artist-to-title-tags/62212 "2023-09-26T17:08:41Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![pugrallye](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/p/b19c9b/32.png) [@pugrallye](https://community.mp3tag.de/u/pugrallye)
#### Post date: [September 26, 2023, 5:08pm UTC](https://community.mp3tag.de/t/move-a-featured-artist-from-the-artist-to-title-tags/62212/1 "2023-09-26T17:08:41Z")

</div>

I had a whole bunch of music where only _some_ of the ARTIST tags contained a featured artist(s) and I wanted to move that to the TITLE tag and then remove the featured artist information from the ARTIST tag

I tried various potential solutions from this forum, but none of them worked

This is what I came up with though, and thought I'd share (as I can't be the only one to struggle with this)

Example ARTIST tag: "Madvillain feat. Viktor Vaughn"  
Example TITLE tag: "Fancy Clown"

End result ARTIST tag: "Madvillain"  
End result TITLE tag: "Fancy Clown feat. Viktor Vaughn"

If the ARTIST does not contain " feat." then leave the tags alone

I created myself a new Action Group with two steps

1. move the " feat. \<artist(s)\>" from the ARTIST tag to the end of the TITLE tag
2. remove " feat. \<artist(s)\>" from the ARTIST tag

**Step 1** is a Format Tag Field action  
Field = TITLE  
Format = $ifgreater($strstr(%artist%,' feat.'),0,%title% feat. $mid(%artist%,$add($strstr(%artist%,'feat. '),6),$len(%artist%)),%title%)

**Step 2** is a Format tag Field action  
Field = ARTIST  
Format = $ifgreater($strstr(%artist%,' feat.'),0,$left(%artist%,$add($strstr(%artist%,' feat.'),-1)),%artist%)

Note: the $strstr() function returns a number (0 if the search string isn't found) so I couldn't use $if() I needed to use the math $ifgreater() function

$ifgreater(a,b,x,y) if number a is greater than number b, x is returned, otherwise y.

If the $strstr() returned zero (it didn't find a " feat.") then I just retained the original field

I also had to use $add() around the $left() function in Step 2 to remove the trailing space after the artist name and before the "feat." string (this was done by "adding" -1 to the length of the string we return)

Hope this helps...

Please feel free to simplify (e.g. there may be a way to wrap the whole Action Group using the "if ARTIST doesn't contain 'feat.'" then exit/do nothing

---

<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: [September 26, 2023, 5:26pm UTC](https://community.mp3tag.de/t/move-a-featured-artist-from-the-artist-to-title-tags/62212/2 "2023-09-26T17:26:20Z")

</div>

I would apply a filter with  
%artist% HAS feat.

and then use a single action of the type "Guess value" as described in this thread:

> [@Move "Featuring" from Artist to Title](https://community.mp3tag.de/t/move-featuring-from-artist-to-title/11096/2):
>
> Action: Guess Values Source Format: %title% $regexp(%artist%,(.\*) Feat. (.\*),'('Feat. $2')' +++ $1) Guessing Pattern: %title% +++ %artist%

---

<div class="post-metadata">

### Author: ![pugrallye](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/p/b19c9b/32.png) [@pugrallye](https://community.mp3tag.de/u/pugrallye)
#### Post date: [September 26, 2023, 5:50pm UTC](https://community.mp3tag.de/t/move-a-featured-artist-from-the-artist-to-title-tags/62212/3 "2023-09-26T17:50:39Z")

</div>

Hi, a couple of questions come to mind:

1. how/where would you add the filter?

2. I'm not sure how to create a new Guess Values action

3. could you explain what that Guess Values Source Format and Guessing Pattern are actually doing please?

I'm on a Mac btw (if that makes any difference - I've noticed that some of the help/screenshots on Windows don't always align with the Mac UI)

---

<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: [September 26, 2023, 6:10pm UTC](https://community.mp3tag.de/t/move-a-featured-artist-from-the-artist-to-title-tags/62212/4 "2023-09-26T18:10:20Z")

</div>

> [@pugrallye](#):
>
> I'm on a Mac btw (if that makes any difference

Yes. This makes a difference. In this case, the WIndows action "Guess value" is called "Import tag fields".

> [@pugrallye](#):
>
> how/where would you add the filter?

The filter is an MP3tag function

> [@Filtering and Searching Files and Tags](https://community.mp3tag.de/t/filtering-and-searching-files-and-tags/53271):
>
> The Filter field in Mp3tag's toolbar allows for searching files that meet a certain criteria (e.g., the filename contains specific characters or a tag field has a specific content). To filter the file list simply start typing in the filter field. As a result, all files that contain the specified filter string in their tag or filename are listed in the file list. Sometimes it is necessary to use more complex criteria to search for files (e.g., all files of a specific genre but not of that arti…

and I would apply the filter before I execute the action to make sure that only files with a featured artist are treated.

The action of the type "Import tag fields" is sort of expansion of the function "Convert\>Filename-Tag".  
The Convert function always takes the data from the filename as source, the action "Import tag fields" takes any format string as source.  
The target defines a pattern of field variables and text constants that assigns the string parts to the named fields.  
So, the idea is to take the data from ARTIST and TITLE and rearrange them in such a way that they can be split with unique separators - here the `+++` which then can be imported into the fields as defined in the target string.

---

<div class="post-metadata">

### Author: ![pugrallye](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/p/b19c9b/32.png) [@pugrallye](https://community.mp3tag.de/u/pugrallye)
#### Post date: [September 26, 2023, 6:37pm UTC](https://community.mp3tag.de/t/move-a-featured-artist-from-the-artist-to-title-tags/62212/5 "2023-09-26T18:37:32Z")

</div>

Ah right

My goal was to come up with an Action that I could run against any/all files and it would only affect those tracks that had a "feat." in the ARTIST - rather than having to filter and _then_ run the Action

I'm not sure the Format Tag on Mac provides for the same functionality as the Guess Values does on PC

 ![Screenshot 2023-09-26 at 19.37.15](https://community.mp3tag.de/uploads/default/original/2X/3/3951e5e519a10e55afe4b12c21103e6a51072dbf.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: [September 26, 2023, 6:40pm UTC](https://community.mp3tag.de/t/move-a-featured-artist-from-the-artist-to-title-tags/62212/6 "2023-09-26T18:40:59Z")

</div>

Have you tried to copy and paste:  
Source Format: `%title% $regexp(%artist%,(.*) Feat. (.*),'('Feat. $2')' +++ $1)`  
Format string: `%title% +++ %artist%`

please note that the format string is case sensitive.

---

<div class="post-metadata">

### Author: ![pugrallye](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/p/b19c9b/32.png) [@pugrallye](https://community.mp3tag.de/u/pugrallye)
#### Post date: [September 26, 2023, 8:10pm UTC](https://community.mp3tag.de/t/move-a-featured-artist-from-the-artist-to-title-tags/62212/8 "2023-09-26T20:10:55Z")

</div>

I tried it on this:

 ![Screenshot 2023-09-26 at 21.07.02](https://community.mp3tag.de/uploads/default/original/2X/7/76bdfab2d63a7f792059fd69d681f7f324e5899b.png)

using this:

 ![Screenshot 2023-09-26 at 21.09.31](https://community.mp3tag.de/uploads/default/original/2X/f/fe8ffd19915c22d5d8ad5ee7a1bd967b353e0a38.png)

It didn't do anything

NB: I adjusted your suggested to allow for lower case "feat"

---

<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: [September 26, 2023, 8:14pm UTC](https://community.mp3tag.de/t/move-a-featured-artist-from-the-artist-to-title-tags/62212/9 "2023-09-26T20:14:39Z")

</div>

You used an action of the type "Format tag field" instead of "Import tag field"

---

<div class="post-metadata">

### Author: ![system](https://community.mp3tag.de/uploads/default/original/2X/c/ce7035d426cb755a7916793326d23b465222a407.png) [@system](https://community.mp3tag.de/u/system)
#### Post date: [October 26, 2023, 8:15pm UTC](https://community.mp3tag.de/t/move-a-featured-artist-from-the-artist-to-title-tags/62212/10 "2023-10-26T20:15:30Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
