# Copy and delete "featuring" between tag fields

**URL:** https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473
**Category:** Support
**Created:** [April 8, 2020, 8:06am UTC](https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473 "2020-04-08T08:06:51Z")
**Posts on this page:** 15
**Page:** 1

<div class="post-metadata">

### Author: ![olum](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/o/ecc23a/32.png) [@olum](https://community.mp3tag.de/u/olum)
#### Post date: [April 8, 2020, 8:06am UTC](https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473/1 "2020-04-08T08:06:51Z")

</div>

Hi there!

I want to change from

```
Artist: Adel Tawil
Title: Tu m'appelles (feat. Peachy)

```

to

```
Artist: Adel Tawil (feat. Peachy)
Title: Tu m'appelles

```

Of course, not only exact expression "(feat. Peachy)" should be moved, but everything beginning with _"(feat"_, so that I can use it for the whole database at once.

I already tried several suggestions from the community, but I just can`t do it right.

For instance, I tried it with following two steps:

**1) copy everything beginning with _"(feat"_ from title to artist:**

- action: format tag field
- tag field: artist
- format string: %artist% $mid(%title%,$strchr(%title%,'(feat'),$len(%title%))

-\> result for artist is: _"Adel Tawil (feat. Peachy)"_ **DONE! 🙂**

**2) delete everything beginning with _"(feat"_ from title:**

- action: format tag field
- tag field: title
- format string: $trim($left(%\_title%,$sub($strstr(%\_title%,'(feat'),1)))

-\> result for title is: _Deletion of the whole title!_ ☹

So obviously I am doing something wrong… which is no wonder as I have absolutely no idea what I am doing... 😉

And actually, I do not want to copy and delete not only everything beginning with _"(feat"_, but also everything beginning with _"(ft."_ - how cant i put this together into only one string?

I would reallly appreciate it if somebody please could help me?

---

<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: [April 8, 2020, 8:41am UTC](https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473/2 "2020-04-08T08:41:00Z")

</div>

There are so many threads about this topic ...  
see e.g. this one

> [@Replace multiple tag fields, remove words](https://community.mp3tag.de/t/replace-multiple-tag-fields-remove-words/43670/2):
>
> I guess this one is the swiss-army-knife for removing featuring slight_smile

---

<div class="post-metadata">

### Author: ![olum](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/o/ecc23a/32.png) [@olum](https://community.mp3tag.de/u/olum)
#### Post date: [April 8, 2020, 1:36pm UTC](https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473/3 "2020-04-08T13:36:44Z")

</div>

Thanks but sorry, I can`t find the solution there neither.

I found a post with the same basic question in German:

> [@feat entfernen](https://community.mp3tag.de/t/feat-entfernen/17628):
>
> Hallo zusammen Ich möchte gerne eine Aktion haben die alles ab einer bestimmten Zeichenkette im Dateiname entfernt. z.B. Born To Run (feat. Tyler Glenn).mp3 ersetzen durch: Born To Run.mp3 jedoch allgemein da das feat ja auch ohne Klammer stehen kann oder z.B. nur ft. da steht. Also eigentlich nur das Zeichen was alles folgende mit in begreift in der ersetzen Aktion.

**"Ich möchte gerne eine Aktion haben die alles ab einer bestimmten Zeichenkette entfernt."**

... But - as far as I understand - the offered solution is not solving the problem.

---

<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: [April 8, 2020, 1:45pm UTC](https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473/4 "2020-04-08T13:45:48Z")

</div>

then see here:

> [@Featuring & all derivatives](https://community.mp3tag.de/t/featuring-all-derivatives/9445):
>
> I'm trying to ... Remove any brackets round the featuring/feat/ft entry Change the wording to always be "feat." Move the entry from the 'Title' field to the 'Artist' field I found an answer (in bits) in German but it seems to have lost something in translation. Couldn't find an English answer. Here's the conversion......... Regular expression \_ALL: \((feat[^\)]\*)\) -\> $1 Replace \_ALL: FT. , ft. , FT , ft. , FEAT , ft. , FEAT. , ft. , FEATURING , ft. , Ft , ft. , ft , ft. , Feat , ft. , fea…

Please: use the search word "feat" and go through the various suggestions.

---

<div class="post-metadata">

### Author: ![olum](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/o/ecc23a/32.png) [@olum](https://community.mp3tag.de/u/olum)
#### Post date: [April 9, 2020, 7:46am UTC](https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473/5 "2020-04-09T07:46:55Z")

</div>

Thank you.

And yes, I thought I got it with this link, buter after doing some testing an then finally renaming everything I saw following bug:

original:

```
Artist: Söhne Mannheims
Title: Gesucht und gefunden

```

changed to:

```
Artist: Söhne Mannheims funden
Title: Gesucht und gefunden

```

Obviously there should not have been any action, as there was no "feat." or so in the title.

**PLEASE: COULD YOU TELL ME WHERE IS THE BUG IN FOLLOWING ACTION?**

ACTION: FORMAT TEXT FIELD  
FIELD: "ARTIST"  
STRING: "**%artist% $mid(%title%,$strchr(%title%,'feat.'),$len(%title%))**"

I know that it happend as of the "und" in the title, but I don`t understand what part of the string is causing it. 🤔

---

<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: [April 9, 2020, 7:55am UTC](https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473/6 "2020-04-09T07:55:28Z")

</div>

the problem is the function $strchr() which should really be $strstr().  
$strchr() returns the position of a single character (in this case "f") ... which leads to "funden".

---

<div class="post-metadata">

### Author: ![olum](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/o/ecc23a/32.png) [@olum](https://community.mp3tag.de/u/olum)
#### Post date: [April 9, 2020, 11:12am UTC](https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473/7 "2020-04-09T11:12:32Z")

</div>

> [@ohrenkino](#):
>
> strstr

Great, that works now. 😊 👍

One last thing:

The final deletion action:

```
FIELD: "TITLE"
REGULAR EXPRESSION: "^(.+)( feat.+)"
REPLACE WITH: "$1"

```

deletes also everything beginning with "feather", for instance. How can that be avoided?

---

<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: [April 9, 2020, 11:17am UTC](https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473/8 "2020-04-09T11:17:50Z")

</div>

if you have always "feat." then use  
` feat\..*`  
Otherwise you would need the unification expression from the "swiss army knife" link.

---

<div class="post-metadata">

### Author: ![olum](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/o/ecc23a/32.png) [@olum](https://community.mp3tag.de/u/olum)
#### Post date: [April 9, 2020, 11:33am UTC](https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473/9 "2020-04-09T11:33:22Z")

</div>

> [@ohrenkino](#):
>
> feat..\*

Thank you very much! 👏

**So there is now the step-by-step solution, creating a new action with 4 parts:**

ACTION - ACTION - NEW

NAME: "Switch of Co-Artists from TITLE to ARTIST"

OK

_1. REPLACE WITH REGULAR EXPRESSION_  
FIELD: "TITLE"  
REGULAR EXPRESSION: "(ft. | ft. | ft | f. | (featuring | featuring | (feat. | (feat | feat. | feat | ft.| vs. | vs | vs.| versus "  
REPLACE WITH: " feat. "

OK - NEW

_2. FORMAT TEXT FIELD:_  
FIELD: "ARTIST"  
STRING: %artist% $mid(%title%,$strstr(%title%,' feat.'),$len(%title%))

OK - NEW

_3. REPLACE WITH REGULAR EXPRESSION_  
FIELD: "TITLE"  
REGULAR EXPRESSION: "^(.+)( feat..\*)"  
REPLACE WITH: "$1"

OK - NEW

_4. REPLACE_  
FIELD: "ARTIST"  
ORIGINAL: " " _[2 empty spaces]_  
REPLACE WITH: " " _[1 empty space]_

OK - OK

Afterwards, you have to filter the title tag also individually for at least  
" und " | " and " | " y " | " with " | " mit " | " con " | "," | "@"  
as they often are followed by co-artists (but not always - that is why you cannot do it automatically)

---

<div class="post-metadata">

### Author: ![olum](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/o/ecc23a/32.png) [@olum](https://community.mp3tag.de/u/olum)
#### Post date: [April 9, 2020, 11:49am UTC](https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473/10 "2020-04-09T11:49:14Z")

</div>

… and if you want to have replaced all this "feature" and "versus" stuff with just an "&", you only add following three action parts between part 3 and part 4:

_REPLACE WITH REGULAR EXPRESSION_  
FIELD: "ARTIST"  
REGULAR EXPRESSION: "(ft. | ft. | ft | f. | (featuring | featuring | (feat. | (feat | feat. | feat | ft.| vs. | vs | vs.| versus "  
REPLACE WITH: " & "

OK - NEW

_REPLACE_  
FIELD: "ARTIST"  
ORIGINAL: "("  
REPLACE WITH: ""

OK - NEW

_REPLACE_  
FIELD: "ARTIST"  
ORIGINAL: ")"  
REPLACE WITH: ""

OK

---

<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: [April 9, 2020, 4:09pm UTC](https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473/11 "2020-04-09T16:09:10Z")

</div>

Even though you found a solution (so many ways lead to Rome), it may be more concise to use an action of the type "Guess value" and an auxiliary field to move the featured name around.  
This thread describes such a way:

> [@Artist Vs Artist to Artist Featuring Artist](https://community.mp3tag.de/t/artist-vs-artist-to-artist-featuring-artist/16967):
>
> All, First time poster here so please be gentle I need some help on writing an action to move vs artists and "and" artists from the artist field into the title field inside of brackets with "Featuring". In some cases i already have a featuring artist in the title field and in others not. Please see following examples: Case 1 (no featuring artist present initially) Example 1 What I have: Artist: DJ Fresh vs TC Title: Make U Bounce I need: Artist: DJ Fresh Title: Make U Bounce (Featuring…

The guessing pattern would be:  
`%artist% (feat. %feat_artist%)`  
This would also save you to remove the leftover brackets and spaces.

---

<div class="post-metadata">

### Author: ![Buzko](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/b/8797f3/32.png) [@Buzko](https://community.mp3tag.de/u/Buzko)
#### Post date: [April 13, 2020, 4:48am UTC](https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473/12 "2020-04-13T04:48:05Z")

</div>

Thank you so much for sharing your solution, @olum!

I did run into some issues implementing it, though. I think Actions 2 and 3 assume that there is nothing in the Title field to the right of the " feat." except for the featured artist string. Unfortunately, some of my tracks with featured artists have text like remix name (or whatever) afterwards. The current form of Actions 2 and 3 will move that text into the Artist field as well as deleting it from the Title field.

After some fiddling, I've found the following to work for removing variations on "feat." (the first if "feat." is surrounded by brackets, the second not):

_REPLACE WITH REGULAR EXPRESSION_  
FIELD: "TITLE"  
`REGULAR EXPRESSION: "(.*) \(([Ff]t\. |[Ff]eat\. |[Ff]eatures |[Ff]eaturing )(.*?)\)(.*)"`  
` REPLACE WITH: "$1$4"`

_REPLACE WITH REGULAR EXPRESSION_  
FIELD: "TITLE"  
`REGULAR EXPRESSION: "(.*) ([Ff]t\. |[Ff]eat\. |[Ff]eatures |[Ff]eaturing )(.*?)($|( \((.*)))"`  
`REPLACE WITH: "$1$4"`

I'm sure there's a more elegant way of constructing this.

If I understand the Guess Value suggestion correctly, it would be implemented like:

_GUESS VALUES_  
`SOURCE FORMAT: "%title%`  
`GUESSING PATTERN: "%dummy%(feat. %featartist%)%dummy%"`

_FORMAT VALUE_  
`FIELD: ARTIST`  
`FORMAT STRING: %artist% & %featartist%`

Is that right?

Is it possible to use regex just for searching, rather than search and replace?

---

<div class="post-metadata">

### Author: ![Buzko](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/b/8797f3/32.png) [@Buzko](https://community.mp3tag.de/u/Buzko)
#### Post date: [April 13, 2020, 5:16am UTC](https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473/13 "2020-04-13T05:16:58Z")

</div>

> _FORMAT VALUE_  
> `FIELD: ARTIST`  
> `FORMAT STRING: %artist% & %featartist%`

Note that this will incorrectly insert " & " into ARTIST even if there was no FEATARTIST found in the previous steps. To avoid this, instead use:

_FORMAT VALUE_  
`FIELD: ARTIST`  
`FORMAT STRING: $if(%featartist%,%artist% & %featartist%,%artist%)`

---

<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: [April 13, 2020, 7:42am UTC](https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473/14 "2020-04-13T07:42:48Z")

</div>

If you modify the format string as follows:  
Format string: `%artist%[& %featartist%]`  
it will do the same as the longish $if() check.

---

<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: [May 13, 2020, 7:42am UTC](https://community.mp3tag.de/t/copy-and-delete-featuring-between-tag-fields/48473/15 "2020-05-13T07:42:49Z")

</div>

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