Plugins

Les plugins sont écrits en Python et sont enregistrés dans les hooks appropriés. Chaque plugin a son propre identifiant de version, mais répertorie également les versions d’API de plugin qu’il prend en charge. Lors du chargement d’un plugin, Picard compare d’abord sa liste de versions d’API aux versions prises en charge par le plugin pour s’assurer que le plugin fonctionnera correctement. Les versions de l’API Picard indiquent la version du programme dans laquelle l’API du plugin a été mise à jour pour la dernière fois et toutes les API du plugin avec lesquelles elle est rétrocompatible.

Les hooks sont des connexions aux différents objets de Picard qui appellent un type spécifique de plugin. Pendant le fonctionnement normal de Picard, lorsqu’il rencontre un hook, il récupère d’abord une liste de tous les plugins enregistrés pour ce hook spécifique, puis les exécute séquentiellement dans l’ordre en fonction de la priorité spécifiée lors de l’enregistrement du plugin sur le hook.

Il existe différents types de plugins, notamment:

Processeurs de métadonnées: Ces plugins peuvent accéder et modifier les métadonnées lors de leur chargement depuis MusicBrainz. Ils sont enregistrés avec register_album_metadata_processor() ou register_track_metadata_processor(). Ce sont ce que vous pourriez appeler « automatiques » car ils fonctionnent sans aucune intervention de l’utilisateur. Un exemple est le plugin Classical Extras.

Fournisseurs d’art de couverture: Ces plugins fournissent une autre source d’art de couverture et sont enregistrés avec register_cover_art_provider(). Ils sont également « automatiques » en ce sens qu’ils chargent la pochette d’album sans intervention de l’utilisateur, bien qu’ils doivent être activés par l’utilisateur dans les options de la pochette. Le plugin Fanart.tv en est un exemple.

Fonction de script: Certains plugins fournissent simplement des fonctions de script supplémentaires à utiliser dans « Options ‣ Scripting » ou le script de renommage. Ceux-ci sont enregistrés avec register_script_function(). Keep tag, qui fournit la fonction $keep(), en est un exemple.

Actions du menu contextuel: les plugins peuvent enregistrer des actions qui peuvent être activées manuellement via le menu contextuel. C’est ce que fait le plugin Load as non-album track. Un autre exemple est Generate Cuesheet. Ceux-ci sont enregistrés avec register_album_action(), register_track_action(), register_file_action(), register_cluster_action() ou register_clusterlist_action().

Formats de fichiers: les plugins peuvent également prendre en charge de nouveaux formats de fichiers non encore pris en charge par Picard. Ceux-ci sont enregistrés avec register_format().

Processeurs d’événements: les plugins peuvent s’exécuter automatiquement en fonction de certains déclencheurs d’événements. Ceux-ci sont enregistrés avec file_post_load_processor(), file_post_save_processor(), file_post_addition_to_track_processor(), file_post_removal_from_track_processor() ou album_post_removal_processor().

Notez que les plugins ne sont pas limités à l’un de ces domaines. Un seul plugin pourrait implémenter tout ce qui précède, mais la plupart des plugins existants se concentrent sur un seul.

L’API Plugins API fournit des informations sur les différents plugins hooks disponibles, ainsi que quelques exemples de leur utilisation. Il existe également une liste des plugins disponibles qui ont été soumis au référentiel MusicBrainz Picard affiché sur le site Picard.