Move "Featuring" from Artist to Title

Maybe I misunderstand the situation ... back to your example ...

After applying the given proposal using action "Import tag fields " there is no more " feat. ..." in the ARTIST tag-field.

DD.20131218.1800.CET

How could I combine all the cases into one action?

If %artist% OR %albumartist" HAS: "feat." OR "Feat." OR "feat" OR "feat." OR "&" OR "and" ..... Then MOVE: "anything with feat/and/& .... and anything after this to the %title% in the "()"

could someone explain me please step by step how can I write this script. I want understand how it works :slight_smile:

Thank you so much!

At first we need to determine which cases may occur.
Please edit and complete the following list of possible cases and give for each case an example for the wanted result.
Consider also possible brackets "[({<])}>".

ALBUMARTIST or                                                                  
ARTIST before ...            ARTIST after ...    TITLE after ...                
=============================================================================== 
a ft b                   ==>                                                    
a ft. b                  ==>                                                    
a feat b                 ==>                                                    
a feat. b                ==>                                                    
a featuring b            ==>                                                    
                         ==>                                                    
a ft b & c               ==>                                                    
a ft. b & c              ==>                                                    
a feat b & c             ==>                                                    
a feat. b & c            ==>                                                    
a featuring b & c        ==>                                                    
                         ==>                                                    
a ft b and c             ==>                                                    
a ft. b and c            ==>                                                    
a feat b and c           ==>                                                    
a feat. b and c          ==>                                                    
a featuring b and c      ==>                                                    
                         ==>                                                    
a ft b & c and d         ==>                                                    
a ft. b & c and d        ==>                                                    
a feat b & c and d       ==>                                                    
a feat. b & c and d      ==>                                                    
a featuring b & c and d  ==>                                                    
                         ==>                                                    
a ft b, c & d            ==>                                                    
a ft. b, c & d           ==>                                                    
a feat b, c & d          ==>                                                    
a feat. b, c & d         ==>                                                    
a featuring b, c & d     ==>                                                    
                         ==>                                                    
a ft b, c and d          ==>                                                    
a ft. b, c and d         ==>                                                    
a feat b, c and d        ==>                                                    
a feat. b, c and d       ==>                                                    
a featuring b, c and d   ==>                                                    

DD.20131225.1513.CET

Hey guys, I was reading throug thie thread and tried some of the examples, but nothing is working for me, or I'm too stupid.

So here is my problem. This ist what I have:

  • Escape By Night - Shadows & Mist (feat. Felicia Farerre)

And this ist what I want:

  • Escape By Night feat. Felicia Farerre - Shadows & Mist (feat. Felicia Farerre)

I can't figure out, how I should do it. Please help me.
Kind regards.

At first please explain, where is the text string stored 'what you have'?
Is it the filename?
Is it one or more tag-fields of which name?
How do you usually construct this text string, from what tag-fields?

DD.20140123.2120.CET

If the text string resides in the filename, then you can use the converter "Filename - Filename" ...

Convert | Filename - Filename | ALT+3
Old filename pattern:
%1 - %2 (feat. %3)
New filename pattern (formatstring):

%1' feat. '%3' - '%2' (feat. '%3')'

Preview
Escape By Night feat. Felicia Farerre - Shadows & Mist (feat. Felicia Farerre).mp3

If the text string resides in a tag-field, then you may use the action "Guess values".

If the text string resides in two tag-fields, then you may use some trick from this thread, which also applies the action "Guess values".

Old tag-field values: Escape By Night Part1 Shadows & Mist (feat. Felicia Farerre) Part2 (Part3) New tag-field values: Part1 Part3 Escape By Night feat. Felicia Farerre Part2 (Part3) Shadows & Mist (feat. Felicia Farerre)

DD.20140123.2347.CET

[EN]:

Thanks for your fast respond. All I have are the filenames. No tag is filled yet. If I use your example, it is working nearly right, but there will be an apotstrophe left at the end of the filename.
[DE]:
Danke für deine schnelle Antwort. Alles was ich habe sind die Dateinamen. Die Tags sind nicht ausgefüllt. Wenn ich dein Beispiel nutze, dann klappt es soweit gut, allerdings bleibt ein Apostroph am Ende des Dateinamens.

Filename
3LAU, Paris & Simo - Escape (feat. Bright Lights) (Faraway Skies Remix)

Wanted filename
3LAU, Paris & Simo feat. Bright Lights - Escape (Faraway Skies Remix)

Any suggestions?
Irgendwelche Vorschläge?

/Edit: I just used to leave the apostrophe and everything is ok.

Old filname pattern
%1 - %2 (feat. %3) (%4) (%5)

New filename pattern
%1 feat. %3 - %2 (%4) (%5)

Before:
Daft Punk - Get Lucky (feat. Pharrell Williams) (Daughter Cover) (Pretty Pink Edit)
After:
Daft Punk feat. Pharrell Williams - Get Lucky (Daughter Cover) (Pretty Pink Edit)

I can only recommend to fill the tags - if the filenames already have so much information then it should be easy to copy that information from the filename to the tags - see Convert>Filename - Tag.
The good thing about separating information into fields is that you get structured information instead of a single amourphous string.
Also, the filename has several restrictions in respect to illegal characters as well as total length.
So, before you fiddle around with the filename, fill the tags first.

This is AWESOME looking, I only have one problem, 1. I have no idea how to implement it (as in, where exactly is this Guess Value option) and 2. Is there a way to do it without the parenthesis enclosing the "Feat."?

All or any help is welcome...

-chris

See the help: https://docs.mp3tag.de/actions

I apologize for reviving this thread. I've adapted your regex to my specific situation but i can't get it to parse capital letters such as follows:

I have:

ARTIST: SIS
TITLE: Sombra india feat. eduardo castillo (Eduardo Castillo remix)

I want:

ARTIST: SIS feat. Eduardo Castillo
TITLE: Sombra india (Eduardo Castillo remix)

My regex:

Action: Guess Values
Source Format: %artist% $regexp(%title%,(.*)\s(feat\.)\s(.*)\s(\(.*\)),feat. $caps2($3) +++ $1 $4)
Guessing Pattern: %artist% +++ %title%

It doesn't return "eduardo castillo" in uppercase letters. Where did i go wrong?

You have mixed something into the $regexp() function, which might be not allowed ... or does not work per se, ... which is here ... the function $caps2().

You may do what you want in a following second step ...

Action "Format value"
Tag-Field : ARTIST
Formatstring: $regexp(%ARTIST%,'^(.+\sfeat.\s)(.*)$','$1')$regexp($regexp(%ARTIST%,'^(.+\sfeat.\s)(.*)$','$2'),'\b\w*\b','\u$0')
... or ...
Formatstring: $regexp(%ARTIST%,'^(.+\sfeat.\s)(.*)$','$1')$caps2($regexp(%ARTIST%,'^(.+\sfeat.\s)(.*)$','$2'))

From: "SIS feat. eduardo castillo"
To : "SIS feat. Eduardo Castillo"

DD.20151017.1444.CEST

I've filled the source field with $regexp(%ARTIST%,'^(.+\sfeat.\s)(.*)$','$1')$caps2($regexp(%ARTIST%,'^(.+\sfeat.\s)(.*)$','$2')) and %artist% +++ %title% as the guessing pattern but the engine didn't output the desired result. Should it be done in two separate actions? Or there's something wrong in the guessing pattern perhaps?

As I said, my proposal works as the second step in your workflow.

  1. Guess the values from ARTIST and TITLE.
  2. Then additional formatting on the tagfield ARTIST.

DD.20151019.0925.CEST

Much appreciated for the clarification! :slight_smile:

I hope it is okay that I post on such an old thread, as I feel this is related, and it is the first thing to come up in a google search.

I was wondering how I would move the ENTIRE artist field to the title.

I have:
Arist: Benny Dayal, Anushka Manchanda, Shefali Alvaris
Title: Ek Main Aur Ekk Tu

I want:
Arist: %albumartist% (Or leave it blank.)
Title: Ek Main Aur Ekk Tu (Feat. Benny Dayal, Anushka Manchanda, Shefali Alvaris)

Thank you!!

EDIT:
I was over thinking things. I got it. For anyone as dumb as me:






Regex is making my head hurt. I've just wasted two hours trying to figure it out, but failed. :frowning:

What I'm trying to do is create a couple of Actions to populate Multiple Artists from Title and vice versa.

Source
Title: SongTitle (ft ArtistOne & ArtistTwo)
Artist: AlbumArtist

Desired Result
Title: SongTitle (feat. ArtistOne & ArtistTwo)
Artist: AlbumArtist;ArtistOne;ArtistTwo

  1. I want to standardize all the different capitalizations/versions of Ft., Featuring, FT, feat, etc. and standardize it to "feat." in the title.

  2. I want to copy the featured artists from the Title and add it to the Artist field separated by ";" but make sure the primary/album artist is listed first.

Can someone please help?

There are so many suggestions in this thread - which one did you try, what was the outcome, where are you stuck?

  1. Action "Format value"
    Field: TITLE
    Formatstring: $replace(%TITLE%,'(ft ','(feat. ','(featuring ','(feat. ','(FT ','(feat. ')

  2. Action "Format value"
    Field: ARTIST
    Formatstring: %ARTIST%[';'$replace($regexp(%TITLE%,'^.+?\(feat\.\s(.+?)\)$','$1'),' & ',';')]

DD.20160603.1240.CEST

I kept using the "GUESS VALUE" function, which I think was the problem since I wanted to copy values rather than move them.

I solved it using your examples.

I use this to first standardize to "(feat. Artist1, Artist2 & Artist3)" in the Title:
Action: Format Value
Field: TITLE
Format string: $regexp(%TITLE%,'^(.+?)\s+[[({<]?\s*(?:featuring|feat\.?|ft\.?|with\.?)\s*([^])}>]+)[])}>]?(.*)$','$1 (feat. $2$3)',1)

Then transfer from all artists in the title to the Artist field:
Action: Format Value
Field: ARTIST
Format string: %ALBUMARTIST%[';'$replace($regexp(%TITLE%,'^.+?\(feat\.\s(.+?)\)$','$1'),' & ',';')]

Then this last function if there are more than three Artists that is separated by commas:
Action: Replace
Field: ARTIST
Original: ', '
Replace with: ';'

THANK YOU both so much!

Hi, old topic, I know, but I wanted to know how I could use Guess Values to move the features from the title tag to the artist tag.

Before
TITLE: Groovy Tony / Eddie Kane (feat. Jadakiss)
ARTIST: ScHoolboy Q

All titles have the features in parenthesis.

After
TITLE: Groovy Tony / Eddie Kane
ARTIST: ScHoolboy Q feat. Jadakiss

All tags have the parenthesis around the features removed.