Can we get Nested Actions?

Currently the only Actions available are the predefined Case Conversion etc. I have several simple Action Groups for things like deleting the leading space in _ALL, removing - in TITLE, or reversing names in ARTIST. What I'd like to be able to do is reuse these Action Groups within a new Action Group.

For instance, I want to rename ARTIST from "Rich, Buddy And His Orchestra" and make the following changes:
move " And His Orchestra" to BAND
replace " And" with " &"
reverse ARTIST so "Rich, Buddy" becomes "Buddy Rich"
remove the leading space from " & His Orchestra"

I already have Action Groups for removing leading space and reversing the ARTIST name. It would be great if I could use the already created Action Groups in the new Action Group. This would allow me to write the initial code such as the REGEX for reversing names once and then reuse it whenever I need it rather than having to rewrite the code each time.

Even better would be if we could use the scripting functions in creating Action Groups. But that may be more power than I can safely use... :w00t:

Wishin' and Hopin'

Use the "Utils" menu (in the "Actionsgroup" dialog corner down left) and create/save/retrieve your own special setup of actiongroups.


1 Like

Thanks for the response. While the configurations in UTILS are interesting, they do not offer the flexibility or usefulness of nested functions. Further, the order of Action Groups is not saved in a configuration making the configuration less powerful than it could be.

Rick Dulas

Yes I see what you mean.

The concept of actionsgroup mta-files and metagroup mtg-files is just a vehicle not a fitting solution.

So what should it be?

  1. User can create a user defined action (UDA) by picking an action type out of the pool of predefined generic action types, then filling in the appropriate values, then storing this one UDA into a folder in the filesystem using a descriptive name (maybe somewhat automatically named).

One UDA --> one (ini-) file, e. g. file extension '.mta' (human readable).

UDA object has the methods: new UDA, delete UDA, rename UDA (*1).

  1. In order to perform a complex task the user can compose a set of UDA's by picking UDA's out of the pool of UDA's, then store this UDA-group list into a folder in the filesystem using a descriptive name.

One UDA-group --> one (ini-) file, e. g. file extension '.mtg' (human readable).

UDA-group object is an orderded list of UDA's and has the methods: new UDA-group, delete UDA-group, rename UDA-group (*2), insert UDA, delete UDA, (manually) order UDA entries in current UDA-group list.

  1. User can create more complex workflow by defining a meta UDA-group (similar to 'Utils' now) by picking UDA-group's out of the pool of UDA-groups.

An 'utils' meta UDA-group object is just an orderded list of UDA-groups and has the methods: new meta-UDA-group, delete meta-UDA-group, rename meta-UDA-group, insert UDA-group, delete UDA-group, (manually) order UDA-group entries in current meta-UDA-group list.

One meta-UDA-group --> one (ini-) file, e. g. file extension '.mtm' (human readable).

  1. To perform a quick action the application should offer three (sortable, searchable) picklists, each containing all known
  • UDA's
  • UDA-group's
  • meta-UDA-group's.

(*1), (*2): Renaming causes a broken reference into the pointerlists on higher level. If an UDA resp. UDA-group has been renamed, then all references must be updated automatically within related UDA-group's resp. meta-UDA-group's.


Yes!! This is exactly what I had envisioned. The UDAs would be building blocks that could be assembled into a UDA group. Then as you say, these UDA Groups could be further aggregated into Meta-UDAs. This approach would give the user a great tool to clean up and organize tags.

If we could get conditional logic added to the pool of predefined generic action types then the user would have a very powerful tool for tag management. For instance, an "If/Then" action type would allow the user to compare tags and then have the script take action. This action type would have the following format:

IF: [picklist of tag fields (artist, title, etc.)]
CONDITION: [=, !=, contains, ...]
FORMAT_STRING: [picklist of tag fields (artist, title, etc.)] or [text string]
THEN: [picklist of predefined generic action types (REGEX, format_value, IF/THEN, etc.)]

This would be really cool!

Thanks for looking into the the idea of UDAs. I think you are on to a winning idea.

Rick Dulas

Although this is a real old post, I have the exact same request to be able to use actions groups within other action groups.

For example, I have an action group that cleans up tags and formats them appropriately. It would be great if additional action groups could reference this instead of remember to run that action group first or worse duplicating the actions the new action group.

You can select action groups by using the checkboxes in front of their names to call them in different sets.
You can also modify the sequence by moving each entry to its required place.
This is sort of a meta sequence.

Ah, I've only just realised that and noticed the Utils option to save the selections.
Is it possible to get the Utils option via the toolbar or is it only available on the Action Groups window?

No toolbar, just the Utils option

I was reminded of this feature request after creating a new action that performs a task I need all actions I've created in the past to use.

Currently the only ways to accomplish this are:

  • Manually edit the actions file, adding the same action to every existing action. Not a very modular approach, especially if anything needs changing.
  • Always click both (or more) actions from the Actions menu, making sure not to forget each time. Not 100% human error proof.
  • Open the Actions window each time I want to apply a selection of actions, using a saved preset. Downside is this is isn't as quick as selecting it from a menu.

Would be nice to have a directory of Action 'snippets', which could be linked within existing actions using a new action type. I can understand the Utils menu approach, but selecting Actions from the main menu saves time and that extra step.

Yes, quite.
And unless you cannot get a list, where you called the included action, you still have to check every calling action if the changes you made don't mess up the context of the other actions.

You can save certain settings as configuration. If you rename that file so that it tells you for which purpose you intended a this particular setup.

What I would like to see sometimes is some kind of "merge actions" feature: once you have tested an action group and that should be executed in the middle of another action group, it would be nice, if you wouldn't have to type in everything again but simply tell MP3tag: insert the actions from action group xy below the currently selected action in this action group.