Move "Featuring" from Artist to Title

as the referred post does not show any brackets I doubt that you had a look at the link. Please check again.

Begin Action Group Test_2013#20131217

Action #1
Actiontype 7: Import tag fields (guess values)
Source format __: $replace(%ARTIST%,' feat. ',' feat. feat. ')
Guessing pattern: %ARTIST% feat. %COMMENT%
End Action Group Test_2013#20131217 (1 Action)

DD.20131217.2222.CET

It works! Thank you. but I have now:

Artist: 2pac'

with a apostrophe

Ok, it works.

Now you have a new problem?
Please describe or illustrate the new situation.

DD.20131218.1340.CET

sry my fault! anything is OK! Thank you very much!

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: