Changing Field Name also changes field name in actions

I think this is a bit out there but i think this could be massively helpful.

My idea was if i change the field name of something in the tag pannel it would be very nice if that field name, present anywhere in the actions already created by me would change to match the new updated name of the field.

I have a field called samples. Through some mp3tag magic the info from this field gets worked & then added to the end of my lyrics.

Recently ive decided to change where the information from the samples field ends up. Im using a new music app that reads alot more metadata so im making use of it.

In the place of the samples id like to instead place different info from a field called "definitions"

These are words used in the lyrics that are uncommon or slang that ive quickly searched & jotten down the meanings of.

In truth the way the samples field currently works (with my created actions) is how id like the definitions field to function.

Currently my options are to use tag mapping settings to have mp3tag read one field as another. I feel like this could easily get a bit covoluted though

I could also just change the display name for this field in my tag pannel (though this would make looking at the extended tags a bit confusing)

Or I simply need to make edits to each of my original actions.

I like the simple solution of editing my actions as this would leave me with the least ammount of confusion but i do wish there was an easier eay to handle it.

If mp3tag had this ability or maybe a buit in text editor similar to notepad+ where i could import all the individual actions within an action grouop & do a find & replace that would be a HUGE help.

This would render any third party action or action supplied here in the forum useless as th field names would not match any more.
Also, it would be virtually impossible to detect whether a field name represents a user-defined field or is the modified standard name.
E.g. if I, as a German speaking person, do not like TITLE any more but want it to be TITEL ... would TITEL be a typo? A user-defined field?

So, the only way would be, as you have found out:

Yeah i figured that would be a bit of a stretch. Could it be possible to export and import action groups similar to the way you can export & import user defined values for fields in the tag panel?

If I could get an action group exported to a text file i could then use notepad to do a find & replace across that whole document then import the altered file & thus the new action group is ready failry quickly.

The actions themselves are plain text files - with a little bit of extra encoding for special characters.
You could have a look at them in the configuration folder.

It is strongly not advised to mess with the actions outside MP3tag's action editor.
So anything like

is completely at your own risk.

And if all this is a bit much: it may be easier to modify the workflow that led to this requirement.

Yeah. I'd want a safer method to edit with, ideally.

Honestly I'm not sure how to safeguard against things like this as I hadn't planned on making any changes until this new music player came along. Its just so massively different from my last player I dont really see a way to future proof my action groups for changes quite like this.

Though this does give me some ideas of partial future proofing which may save me a bit of time reworking actions if something like this were to re-occur

If you know how to script you could write something that creates/recreates the Mp3tag actions for you and uses a variable for each field. That way you'd only have to change these variables and let the script (re)create the actions for you, minimizing the risk of accidentally changing something else.
Here's how I create 4 mp3tag actions with user-defined filenames and fields in lyrict if you're looking for inspiration.

# Create mp3tag actions to backup existing embedded lyrics, import external lyrics and delete the lyrics backups
def mp3tag_create_actions(action_folder, overwrite_actions, extensions):
    class Mp3tagAction:
        action_list = []
        def __init__(self, name, content):
            self.name = name
            self.path = os.path.join(action_folder + name + ".mta")
            self.content = content
            Mp3tagAction.action_list.append(self)
        def create(self):
            choice = ""
            if os.path.isfile(self.path) and not overwrite_actions:
                return
            if not overwrite_actions:
                choice = input(f"Create a mp3tag action called '{self.name}' in:\n{action_folder}? (y/n): ")
            if choice == "y" or overwrite_actions:
                try:
                    with open(self.path, "w", encoding="utf-8") as action:
                        action.write(self.content)
                except PermissionError:
                    print(f"{self.path}.mta cannot be created, ensure that you have write permissions and try again.")
                    sys.exit(1)
                print(f"{self.path} saved.")
            else:
                return
                
    backup_tags = f"{import_synced_tag}_BU;{import_unsynced_tag}_BU"
    backup_tag_synced = f"{import_synced_tag}_BU"
    backup_tag_unsynced = f"{import_unsynced_tag}_BU"

    backup_action = Mp3tagAction(tag_backup_name, f"[#0]\nT=5\n1={import_synced_tag}\nF={backup_tag_synced}\n\n[#1]\nT=5\n1={import_unsynced_tag}\nF={backup_tag_unsynced}\n")
    delete_backup_action = Mp3tagAction(remove_backup_name, f"[#0]\nT=9\nF={backup_tags}\n")
    import_synced_action = Mp3tagAction(import_synced_name, f"[#0]\nT=14\nF={import_synced_tag}\n1=%_filename%.lrc\n")
    import_unsynced_action = Mp3tagAction(import_unsynced_name, f"[#0]\nT=14\nF={import_unsynced_tag}\n1=%_filename%.txt\n")
    
    [action.create() for action in Mp3tagAction.action_list]

However that's probably harder/more work than manually changing the actions in Mp3tag. Just thought I'd let you know that it exists as an option.

A little update. I copied my save configuration to another device. Using notepad ++ i performed a find & replace in one of my actions, then saved the file under a new name. After this I installed mp3tag on the device & then replaced the default configuration files with my saved ones.

The new action appears in the action menu as expected & so far, works as expected.

There is one change i could not make in notepad though.

I wanted to swap 🆂 with 🅳 but these characters are not writen as they appear on your display now they are "codes" in the text files for actions so ill likely have to manually change those using the action editor in mp3tag.

That's a small change though The find & replace saved me the bulk of the effort in changing this action as I replaced over 91 instances of a string in one click.

So you wanna have your own like urban dictionary fun fact slang translator?

This is what im hearing.

Originally I was adding samples & interpolations to the bottom of my lyrics fields. I like knowing what earlier projects were sampled in the making of the music.

I switched to Symfonium as my main player though & It gave me the space to move those tags somewhere where they are more usable. So now at the end of my lyrics I have annotations in the form of “Definitions” & “References” these are two tags I use to give a bit more context to lyrics from time to time. Occasionally i listen to non-english music so I define some words if I can’t get my hands on properly translated lyrics & there are plenty of songs that make references to things I don’t know so sometimes I’ll save brief descriptions of those as they can change your view of the music / message.

Music made before my time often has sayings, references & depictions of places or events that I don’t know very well because I didn’t experience it or study it. In a broader, more modern example if I was someone who did not know what Netflix was or didn’t know how Netflix used to be (mailed movies) then a reference to Netflix in a song might be lost on me completely.

In regards to the topic of this thread I was just dreading the bulk changes needed for my actions to work in a new capacity. I’ve changed my workflow a bit so information is sort of calculated in one place & then sent to it’s final destination rather than calculated at it’s final destination. So now I can take calculated info & simply change it’s address at will if needed.