Scripting Picard
Pourquoi mon script ne s’exécute-t-il pas ?
Si votre script ne semble pas s’exécuter ou affiche une erreur dans l’éditeur, vérifiez les problèmes courants suivants :
Le script est-il activé ?
Assurez-vous que le script est activé dans les options de script. Si le script n’est pas activé, il ne s’exécutera pas automatiquement. Vous pouvez lancer le script manuellement à partir du menu contextuel de la piste ou de l’album, mais il ne s’exécutera pas automatiquement lorsque vous chargez des fichiers ou effectuez d’autres actions.Y a-t-il une erreur de syntaxe dans le script ?
Si le script contient une erreur de syntaxe, il ne s’exécutera pas et un message d’erreur peut s’afficher dans l’éditeur. Vérifiez attentivement le script afin de détecter toute erreur de syntaxe, comme des parenthèses manquantes, des noms de fonctions incorrects ou tout autre problème susceptible d’empêcher son exécution.Toutes les fonctions utilisées dans le script sont-elles valides ?
Si votre script utilise une fonction invalide ou inexistante, il ne s’exécutera pas. Assurez-vous que toutes les fonctions utilisées sont valides et présentes dans Picard. Ce problème peut survenir si la fonction provient d’un plugin désactivé ou si son nom est mal orthographié.Tous les caractères réservés ont-ils été correctement échappés ?
Si votre script inclut des caractères réservés tels que des virgules, des parenthèses ou d’autres caractères spéciaux dans un argument, assurez-vous de les échapper correctement. Si vous souhaitez inclure une virgule dans la valeur d’un argument, vous devez l’échapper avec une barre oblique inverse (par exemple :\,) afin d’éviter qu’elle ne soit interprétée comme un séparateur entre les arguments. Il en va de même pour les autres caractères réservés pouvant figurer dans la valeur d’un argument. Par exemple, si vous souhaitez vérifier si le nom de l’artiste est « 100 % », vous devez utiliser$eq(%artist%,100 \%).Si les caractères réservés ne sont pas correctement échappés, le script peut ne pas s’exécuter ou produire des résultats inattendus. Ce problème est fréquent lors du développement de scripts avec l’IA, car celle-ci inclut souvent des caractères réservés dans les arguments de valeur sans les échapper.
L’un des problèmes les plus courants liés à l’échappement incorrect des caractères réservés survient lors de l’utilisation des fonctions d’expression régulière
$rsearch()et$rreplace(). Ces fonctions peuvent s’avérer particulièrement complexes car la syntaxe des expressions régulières inclut elle-même des caractères réservés ; il est donc parfois nécessaire d’échapper ces caractères à la fois pour la syntaxe des expressions régulières et pour la syntaxe du script. Par exemple, si vous souhaitez remplacer du texte entre crochets (« Certains [texte ci-joint] ») dans le titre d’un morceau par le texte entre parenthèses (« Some (enclosed text) »), l’expression régulière Python correspondante serait :re.sub(r'\[([^\]]*)\]', r'(\1)', "Some [enclosed text]")
Il vous faudrait utiliser quelque chose comme :
$set(title,$rreplace(%title%,\\[\([^\\]]*\)\\],\(\\1\)))
Les caractères réservés sont : la virgule (
,), les parenthèses ((et)), la barre oblique inverse (\), le signe dollar ($) et le signe pourcentage (%). Assurez-vous de vérifier que les valeurs des arguments de votre script contiennent bien des caractères réservés et échappez-les correctement pour garantir son bon fonctionnement.
Pourquoi les correspondances ne fonctionnent-elles pas dans mes scripts ?
Si vos scripts contiennent des vérifications telles que $eq(%artist%,Mon artiste), mais qu’elles ne semblent pas fonctionner, consultez les problèmes courants suivants :
Utilisez-vous la syntaxe correcte ?
Assurez-vous d’utiliser la balise ou la variable et la valeur correctes dans le bon ordre, et qu’il n’y a pas de fautes de frappe.Utilisez-vous la balise ou le nom de variable correct ?
Assurez-vous d’utiliser la balise ou le nom de variable correct dans votre script. Par exemple, si vous souhaitez vérifier le nom de l’artiste, vous devez utiliser%artist%et non%artist name%ou toute autre variante.La balise ou la variable que vous vérifiez est-elle réellement renseignée ?
Si la balise ou la variable que vous vérifiez est vide ou non renseignée, la correspondance échouera. Assurez-vous qu’elle possède une valeur avant l’exécution du script. Cela peut poser problème si la balise ou la variable est renseignée par un autre script, mais que le script effectuant la correspondance s’exécute avant l’autre. Dans ce cas, vous devrez peut-être modifier l’ordre d’exécution de vos scripts ou ajouter une vérification pour vous assurer que la balise ou la variable est renseignée avant l’exécution de la correspondance.L’orthographe et la ponctuation sont-elles correctes ?
En général, les tests de correspondance sont sensibles à la casse ; assurez-vous donc que l’orthographe et la casse de la valeur que vous comparez correspondent exactement à la valeur de la balise ou de la variable.Utilisez-vous l’opérateur correct ?
Assurez-vous d’utiliser l’opérateur approprié pour votre correspondance. Par exemple, si vous souhaitez vérifier si une étiquette ou une variable contient une certaine valeur, vous devez utiliser$in(%nom_de_l'étiquette%,valeur)au lieu de$eq(%nom_de_l'étiquette%,valeur).Y a-t-il des espaces en début ou en fin de chaîne, ou des guillemets inutiles dans l’argument de valeur ?
Si la valeur contient des espaces en début ou en fin de chaîne, ou si elle est placée entre guillemets, la correspondance risque de ne pas fonctionner comme prévu. Ce problème est fréquent lors de l’utilisation de l’IA pour développer des scripts, car celle-ci introduit souvent des espaces supplémentaires, par exemple après la virgule séparant les arguments, ou des guillemets autour de la valeur. Picard considérera ces deux éléments comme faisant partie de l’argument. Par exemple, si votre script vérifie si l’artiste est « Mon Artiste », mais que la vérification est$eq(%artist%,« Mon Artiste »)ou$eq(%artist%, Mon Artiste), la correspondance échouera. La syntaxe correcte est$eq(%artist%,Mon Artiste), sans guillemets ni espaces supplémentaires.