Scripts

Picard gebruikt twee soorten scripts: het bestandsnamenscript en tagscripts. De opties hiervoor zijn te vinden op de pagina’s ‘Bestandsnamen’ en ‘Scripts’ in ‘Opties ‣ Opties …’ . Alle scripts worden geschreven in de Picard-scripttaal. Scripts worden vaak op het forum van MetaBrainz besproken. Je vindt daar ook een discussie speciaal over bestandsnamen en scriptfragmenten.

Bestandsnamenscripts

Multiple file naming scripts can be defined in a user’s settings, although only one is selected at a time for use. File naming scripts can vary from a simple one-line script such as %album%/%title% to a very complex script using different file naming formats based on different criteria. In all cases, the files will be saved using the text output by the script.

File naming scripts are managed using the Bewerker voor bestandsnamenscripts which can be opened from the “File Naming” section of the “Options ‣ Options…” menu, or directly from the “Options ‣ Open file naming script editor…” menu item. The current file naming script can also be selected directly from the “Options ‣ Select file naming script” menu.

Notitie

Het bestandsnamenscript heeft alleen invloed op de bestandsnamen, niet op de tags die naar bestanden worden geschreven.

Tagscripts

There can be multiple tagging scripts defined in a user’s settings. Individual scripts can be enabled or disabled, and the order of execution of the scripts can be set. Whenever a script is run automatically (i.e.: when an album is loaded), it is processed once for each track in the album that triggered the run. For example, if there are two tagging scripts enabled (A and B) and an album with three tracks is loaded, the scripts will be processed in the following order:

  1. Script A op nummer 1;

  2. Script A op nummer 2;

  3. Script A op nummer 3;

  4. Script B op nummer 1;

  5. Script B op nummer 2;

  6. Script B op nummer 3.

Wijzigingen in de metadata worden niet door meerdere nummers gedeeld, dus je kan geen informatie uit het ene nummer gebruiken om een ander nummer te taggen.

Tags die door de tagscripts worden gemaakt of gewijzigd, worden naar de metadata van de opgeslagen bestanden geschreven, tenzij de naam van de tag met een laag streepje (_) begint. Deze ‘verborgen’ tags worden meestal gebruikt voor het opslaan van tijdelijke variabelen, zodat die variabelen later voor andere tag- en bestandsnamenscripts kunnen worden gebruikt. Tagscripts worden voor elk nummer één keer uitgevoerd en gebruiken daarbij de metadata van dat nummer.

Je kan tagscripts ook handmatig uitvoeren door met rechts op een uitgave of nummer in het rechter deelvenster te klikken. Als een script vanaf een uitgave wordt uitgevoerd, wordt het voor elk nummer van die uitgave uitgevoerd. Als een script vanaf een nummer wordt uitgevoerd, wordt het alleen voor dat nummer uitgevoerd.

Voorbeelden van tagscripts

De volgende voorbeelden laten zien hoe je tagscripts voor bepaalde gebruiksscenario’s kan gebruiken. Zie Picard-scripttaal voor een uitgebreide beschrijving van de variabelen en functies die in deze voorbeelden worden gebruikt.

De verduidelijking naar de titel van het album verplaatsen

Voeg de verduidelijking van een uitgave aan de titel toe:

$set(album,%album%$if(%_releasecomment%, \(%_releasecomment%\)))

De taal van de uitgave als taal gebruiken

De variabele %_releaselanguage% wordt gebruikt voor de taal waarin de titels van de nummers zijn geschreven, terwijl de variabele %language% eigenlijk is bedoeld voor de taal van de liedtekst. Het volgende script zorgt dat %_releaselanguage% wordt gebruikt als %language% leeg is.

$if($not(%language%),$set(language,%_releaselanguage%))

De oorspronkelijke uitgavedatum gebruiken

Standaard schrijft Picard de tag date met de uitgavedatum van de specifieke uitgave die je tagt en de tag originaldate met de datum van de eerste uitgave in dezelfde uitgavegroep. Bijvoorbeeld als je een heruitgave uit 2020 hebt van een album dat oorspronkelijk in 1992 uitkwam. In dat geval wordt date ingesteld op ‘2020’ en originaldate op ‘1992’. Als je liever altijd de oorspronkelijke uitgavedatum gebruikt als primaire datum in de tags van je bestanden, kan je het volgende script gebruiken:

$set(date,$if2(%originaldate%,%date%))

Het gebruik van $if2 zorgt dat als originaldate leeg is, toch date wordt gebruikt.

Daarnaast heeft Picard de variabele %_recording_firstreleasedate% waarmee wordt gezocht naar de eerste uitgavedatum van de opname (die voor elk nummer van de uitgave kan verschillen). Als je liever die datum gebruikt, kan je het volgende script gebruiken:

$set(date,$if2(%_recording_firstreleasedate%,%originaldate%,%date%))

En als je date wil blijven gebruiken voor de uitgavedatum van de specifieke uitgave die je tagt, maar de eerste uitgavedatum van de opname wil gebruiken voor originaldate:

$set(originaldate,$if2(%_recording_firstreleasedate%,%originaldate%))

De sorteernaam van het album instellen

Picard vult de tag albumsort standaard niet in. Met het volgende script kan je de tag instellen en de voorvoegsels ‘The’ en ‘A’ naar het einde van de sorteernaam verplaatsen:

$set(albumsort,$swapprefix(%album%))

Hiermee wordt bijvoorbeeld de sorteernaam van de uitgave ‘The Best of Muddy Waters’ ingesteld op ‘Best of Muddy Waters, The’.

‘Compilatie’ voor uitgaven van meerdere artiesten op ‘1’ instellen.

Standaard wordt de tag compilation alleen voor uitgaven van Diverse Artiesten op 1 ingesteld. Met het volgende script wordt dit gedaan voor alle uitgaven met meer dan één artiest (zoals in Picard 1.2 en eerder standaard was):

$if(%_multiartist%,$set(compilation,1))

Gastartiesten uit de uitgaveartiest verwijderen

Hiermee worden gastartiesten altijd uit de uitgaveartiest verwijderd:

$set(albumartist,$rreplace(%albumartist%,\\s+feat\\..*,))

Gastartiesten van de artiest naar de titel verplaatsen

Volgens de richtlijnen van MusicBrainz zijn gastartiesten een deel van de artiestennaam (zoals ‘Artiest A feat. Artiest B’. Sommige gebruikers voegen die informatie liever aan de titel van de uitgave of het nummer toe. Het volgende script verplaatst gastartiesten naar de titel van het nummer:

$set(_feat_title,$rsearch(%artist%,\\s+\\\(?\(f\(ea\)?t\\.[^\)]*\)))
$set(artist,$rreplace(%artist%,\\s+\\\(?f\(ea\)?t\\.[^\)]*\\\)?,))
$set(title,$if(%_feat_title%,%title% \(%_feat_title%\),%title%))

Voor de artiest en titel van de uitgave kan je hetzelfde doen:

$set(_feat_album,$rsearch(%albumartist%,\\s+\\\(?\(f\(ea\)?t\\.[^\)]*\)))
$set(albumartist,$rreplace(%albumartist%,\\s+\\\(?f\(ea\)?t\\.[^\)]*\\\)?,))
$set(album,$if(%_feat_album%,%album% \(%_feat_album%\),%album%))

De oorspronkelijke bestandsnaam behouden

De tag originalfilename is bedoeld voor de bestandsnaam die het bestand eerst had. Standaard schrijft of wijzigt Picard deze tag niet. Als je deze informatie wil opslaan, kan je het volgende script gebruiken:

$set(originalfilename,$if2(%originalfilename%,%_filename%.%_extension%))

Hiermee blijft de tag originalfilename behouden als die er al was. Maar als de tag nog niet bestond, wordt hij ingesteld en opgeslagen met de huidige bestandsnaam. Omdat dit wordt gedaan voordat het bestand wordt opgeslagen, blijft de naam van het bestand voordat Picard het wijzigde behouden.