Scripting
Scripts are used to control some aspects of the operation of Picard.
There are two types of scripts used in Picard: the file naming script and tagging scripts. These are managed from the “File Naming” and “Scripting” sections of the
menu.Scripts are often discussed in the MetaBrainz Community Forum, and there is a thread specific to file naming and script snippets.
See also
Please refer to the section on Scripts in Extending Picard for additional details about the two types of scripts, including how and when each of the scripts are executed.
Syntax
The syntax is derived from Foobar2000’s titleformat.
There are three base elements: text, variable and function. Variables consist of
alphanumeric characters enclosed in percent signs (e.g.: %artist%
). Functions
start with a dollar sign and end with an argument list enclosed in parentheses (e.g.:
$lower(...)
).
Note
When entering input strings into Picard scripts you have to escape a backslash “\”,
dollar sign “$”, comma “,” and the left and right parentheses “(” and “)” in order to force
Picard to not interpret them as part of the script command. This is done by inserting
a backslash before the character to be escaped. For example, to set a tag value to ($1,000,000)
it would have to be entered as $set(test_tag,\(\$1\,000\,000\))
.
Note
Usually you can access the values of a tag by the proper variable name. For example, if your tag
is called “rerecorded” you can use %rerecorded%
. But the hyphen is not a valid character for a
script variable, so %re-recorded%
gives a syntax error. In cases like this you need to use
$get(re-recorded)
.
Metadata Variables
See Tags & Variables for the list of the variables provided by Picard.
Picard’s variables can be either simple variables containing a single text string, or multi-value variables containing multiple text strings. In scripts, multi-value variables are automatically converted to a single text string by joining the values with a semicolon “;”, except when used with special multi-value functions.
Scripting Functions
The full list of available scripting functions is available, either sorted alphabetically or grouped by function type.