Transnomino Automation

Transnomino icon

How Transnomino supports automation at the command line and Apple Script

IMPORTANT NOTICE:
Automation using Apple Script has been temporarily removed in Transnomino 9.0

To achieve full Swift 6.0 Strict Concurrency Compliance, the AppleScript interface had to be removed due to incompatibility. However, don't worry—automation support is planned to return in the future. If you were using AppleScript with Transnomino, please let me know how you used it. Your feedback will help prioritize its return.

Command Line Support

Transnomino can be launched from the command line. It optionally accepts the following command line arguments:

-d path

Specifies the Path to the directory to open for renaming. It needs to be a full path and it needs to be enclosed in double-quotes in case the path contains spaces. You can refer to your home directory with the ~ character.

To add multiple directories, specify each directory in a separate -d argument.

Examples:

-d ~/Pictures

-d ~/Pictures -d "/Volumes/LocalNas/Some Directory With Spaces/"

-r file

Specifies a Recipe file to open.

Example:

-r "~/Recipes/photos.recipe"

-r json

Specifies a complete contents of a Recipe file as a JSON string. The JSON string must be enclosed in single quotes and in case the Recipe JSON string contains any single quotes characters, these single quotes must be escaped by: '"'"'.

Example:

-r '{"recipe_format_version":"3.14", "transformers": [{"title":"Replace", "disabled":false, "transformScope":"filename", "type":"simple", "id":"transformer_171098B693A", "properties":{"simpleFindText":"this", "simpleReplaceText":{ "properties":[ {"type":"string","value":"that"} ],"object":"TokenString"}, "simpleWildcards":"0", "simpleCaseInsensitive":"0"}}] }'

Example:

open -a Transnomino --args -d "~/Pictures" -r "~/Recipes/photos.recipe"

Folder Automation

Let Transnomino monitor a designated folder and automatically launch with a recipe when any files are dropped in that folder.

Example of an automated folder
How to set this up

We need to create a Folder Action Script, a Folder and a Recipe and then bind these three together.

Step 1 - Create Folder Action Apple Script

Create a new Apple Script that can be attached to a specific folder as a Folder Action Script. This step only needs to be done one time.

Launch the "Script Editor" utility found in Applications/Utilities and paste the below Apple Script code into a new document. Compile the script (Command-K) and save it as "rename-with-transnomino" in: "~/Library/Scripts/Folder Action Scripts"

The Apple Script Editor
              
                on adding folder items to theAttachedFolder after receiving theNewItems
                tell application "Finder" to set thePath to POSIX path of theAttachedFolder
                return do shell script ¬
                "open -a Transnomino --args -d \"" & thePath & "\" -r \"" & thePath & ".recipe\""
                end adding folder items to
              
            
Step 2 - Create a folder

Create a new folder that will be the folder Transnomino will monitor. For this example, create a new folder named "Drop Files Here" on your Desktop.

The Drop Files Here folder
Step 3 - Create a Folder Recipe

Create a new Recipe that Transnomino should use when files are dropped into the monitored folder.
Save it as a hidden file named ".recipe" in the "Drop Files Here" folder.

Transnomino Recipe
Step 4 - Attach the script to the folder

If the previous steps are done correctly, you can now launch the "Folder Action Setup" utility and attach the "Drop Files Here" folder to the "rename-with-transnomino" script.

Folder Action Setup initial screen Folder Action Setup selecting the script Folder Action Setup should look like this

Apple Script Support

Transnomino can be controlled by Apple Script as well.

open recipe v

Opens a recipe from either a recipe file or by passing a complete JSON string of the contents of a recipe file.

v - The path to the recipe file or the JSON string of the contents of a recipe file

open directory v

Opens a directory with files to rename.

v - The directory string with files to rename.

clear transformers

Clears the list of transformers, which is required to do before adding new ones using add transformer.

add transformer v

Adds a new transformer with the details as specified in the JSON argument.

v - The JSON string describing the transformer type and its properties. This structure is similar as to the transformer structure as used in the recipe files.

rename v

Rename all files on disk. Renaming will only proceed if none of the files have validation errors.

v - Boolean force flag, when set it indicates to continue renaming when one or more files have validation errors.

file n

A file item, n specifying the index of the file to query.

  • id - The identifier used by the application.
  • original path - The original path of the file.
  • original name - The original filename of the file.
  • original ext - The original extension of the file.
  • transformed path - The transformed path of the file.
  • transformed name - The transformed filename of the file.
  • transformed ext - The transformed extension of the file.
  • errors - A list of validation error messages for this file.

validationResult

A property containing the latest validation results.

  • total count - The total number of loaded files.
  • error count - The total number of files in error.
  • rename count - The total number of files that will be renamed.
Example Script

The following script opens transnomino, clears the existing transformer and adds a new transformer that will replace the text "DCS" from filenames with "IMG". It opens a directory at: "/Users/bastiaan/demo/Photos" and checks the validation results of those files. In case there are no errors, it calls rename without force to apply the renaming and quit.

              
                on stringlist(thelist)
                set str to "
                "
                repeat with listitem in thelist
                set str to str & listitem & "
                "
                end repeat
                return str
                end stringlist

                tell application "Transnomino"
                clear transformers

                open directory "/Users/bastiaan/demo/Photos"

                add transformer "{\"type\": \"simple\",\"transformScope\": \"filename\",\"properties\":
                {\"simpleWildcards\": true,\"simpleFindText\": \"DSC\",\"simpleReplaceText\": {\"properties\":
                [{\"type\": \"string\",\"value\": \"IMG\"}]}}}"

                # Wait until validation results are available
                set totalcount to 0
                repeat while totalcount = 0
                set totalcount to get total count of validation result
                delay 1
                end repeat
                log "Total number of files: " & totalcount

                set renamecount to get rename count of validation result
                log "Total files to be renamed: " & renamecount

                set errorcount to get error count of validation result
                log "Total files with errors: " & errorcount

                if errorcount = 0 and renamecount > 0 then
                rename without force
                set filenames to my stringlist(get transformed full path of files whose errors is {})
                log "Filenames:
                " & filenames
                else
                set allerrors to my stringlist(get errors of files whose errors is not {})
                log "Errors:
                " & allerrors
                end if

                quit
                end tell