Créez vos propres actions


Cet article est destiné aux développeurs ou aux utilisateurs avancés qui possèdent des notions de programmation.

Une action personnalisée ?

Dans CoolTweak, une action personnalisée se résume à l'appel d'un script ou d'un éxécutable en lui transmettant des paramètres.
Cette action est désignée comme une commande.

Par défaut, CoolTweak lance la commande avec ses paramètres, attend que le processus associé se termine puis enchaine avec l'action suivante.

Il y a évidemment de nombreuses options pour ajuster ce mécanisme (quels paramètres transmettre ? Doit on attendre, si oui combien de temps ? doit on recharger le fichier après son traitement ?) mais le principe est très simple.

Et techniquement ?

Lorsque l'on parle de script, il s'agit d'un script DOS (batch), de VBScript ou de Powershell.
CoolTweak permet également d'appeler n'importe quel éxécutable (exe ou autre) en lui transmettant des paramètres.

Cette variété au niveau des technologies supportées vous permet de coder dans votre langage de prédilection et aussi de pouvoir appeler des libraries tierces facilement (comme par exemple ImageMagick ou ffmpeg pour ne citer qu'elles).

Il y a deux types de commandes

Les deux permettent de lancer un script/exécutable mais la première permet de lancer une seule fois l'action sur tous les fichiers et l'autre permet de lancer l'action autant de fois qu'il y a de fichiers à traiter.

1

Les commandes d'événement

Il s'agit des commandes qui peuvent être lancées une fois (seulement) avant le début des traitements et/ou une fois après la fin des traitements.
Ces commandes peuvent prendre en paramètre la liste de tous les fichiers à traiter (avant le début) ou traités (après la fin).
Elles sont donc utiles pour réaliser des traitements qui nécessitent de connaitre l'ensemble des fichiers (création d'un zip, création d'un gif animé, upload FTP des fichiers traités, etc).

2

Les commandes personnalisées

Il s'agit de commandes qui ne prennent qu'un seul fichier en paramètre et qui sont lancées en parallèle lors des traitements.
La commande est lancée sur chaque fichier à traiter et il est possible d'en enchainer plusieurs à la suite.
Elles sont faites pour traiter un fichier à la fois, sans avoir conscience du reste de l'ensemble des fichiers à traiter.

Le cycle de vie d'un traitement

Le schéma ci-dessous résume les grandes étapes du traitement des fichiers.

Fichiers originaux
Evénement "Avant"
Commande d'événement
Action #1
Action #n
Déplacement, renommage
 
Action #1
Action #n
Déplacement, renommage
 
Action #1
Action #n
Déplacement, renommage
 
Traitement en parallèle des fichiers
(commandes personnalisées)
Evénement "Après"
Commande d'événement
Fichiers traités

  1. Les traitements sont lancés sur un ensemble de fichiers.
  2. Si elle est définie, la commande d'événement "Avant les traitements" est lancée, elle prend en paramètre l'ensemble des fichiers à traiter.
  3. A partir de là, les traitements principaux débutent, ils sont réalisés en parallèle (plusieurs fichiers en même temps).
    C'est à ce moment que des commandes personnalisées peuvent être éxécutées sur chaque fichier.
    Avant la première action, une copie du fichier en cours de traitement est réalisée. Il s'agit du fichier temporaire de travail.
    C'est cette copie qui est transmise à chaque action et chaque action peut modifier le contenu de ce fichier avant sa transmission à l'action suivante.
  4. Quand toutes les actions ont été réalisées sur un fichier, le fichier temporaire de travail est déplacé et renommé en fonction des options de sortie prédéfinies.
    Par défaut, il sera placé dans un dossier "Cooltweak" avec le même nom de fichier que le fichier original.
  5. Quand tous les fichiers ont été traités, la commande d'événement "Après les traitements" est lancée si elle est définie.
    Elle prend en paramètre l'ensemble des fichiers traités (c'est à dire dans leur dossier de sortie).
  6. A la fin de l'éxécution de cette commande, tous les traitements sont considérés comme terminés par CoolTweak.

Les commandes personnalisées en détail

Les commandes personnalisées réalisent des traitements sur un fichier en particulier.
Dans cette section nous allons voir comment créer une commande personnalisée et ajuster ses options.

Créer une commande personnalisée pas à pas

1

Lancez l'éditeur de menu de CoolTweak en faisant un clic droit sur n'importe quel fichier ou dossier et en sélectionnant le menu "Personnaliser mes actions".

2

Une fois l'éditeur de menu affiché, créez un nouveau menu en cliquant sur le bouton "Créer un Menu" sous la liste des menus déjà existants.

Nous aurions aussi pu ajouter une commande personnalisée à un menu déjà existant mais ici nous préférons créer un menu tout neuf.

3

Sélectionnez l'action "Exécuter une commande personnalisée" qui se trouve dans la catégorie "Tweak pour les utilisateurs avancés".

Validez en cliquant sur le bouton OK, un nouveau menu est immédiatement créé et il contient une seule action, une commande personnalisée vide.

4

Renommez le menu qui vient d'être créé comme vous voulez en cliquant sur son nom par défaut "Nouveau menu".

Configurer les commandes personnalisées

Voici les options de configuration principales d'une commande personnalisée

  • Type de commande

    Choisissez la nature de votre commande, est ce un script (donc un fichier texte avec des instructions à réaliser) ou au contraire unexécutable (fichier binaire).

  • Contenu à exécuter

    Dans le cas des scripts, il vous est possible de choisir si leur contenu est chargé depuis un fichier externe ou s'il est stocké directement dans CoolTweak.

  • Chemin du script

    Pour les scripts stockés dans un fichier externe ou les exécutables, il s'agit du chemin vers le fichier correspondant.

    Pour les scripts DOS, il est également possible de saisir directement le nom d'une commande (par exemple, echo ou xcopy)

  • Paramètres d'appel

    Il s'agit des éventuels paramètres qui seront transmis à votre script/exécutable quand il sera lancé.
    Ces paramètres peuvent contenir des variables dont la syntaxe est {MaVariable} dont la valeur sera remplacée juste avant l'appel.
    Pour obtenir la liste complète des variables disponibles, cliquez sur le champ.

  • Délimiteur pour les chemins

    Il s'agit de l'option qui permet de définir sous quelle forme sont exprimés les chemins lorsqu'il sont transmis en paramètre depuis une variable.
    Par défaut, on utilise les backslashes.

  • Attendre la fin de la commande avant de continuer

    Si cette option est cochée alors CoolTweak attendra la fin du processus associé à la commande avant de poursuivre (mode synchrone).
    Dans le cas contraire (mode asynchrone), l'action est lancée mais CoolTweak continue immédiatement vers l'action suivante sans se préoccuper de l'état d'avancement de l'action courante.

    Attention, certaines possibilités (rechargement du fichier, timeout de la commande) ne sont possible que si l'action est synchrone.

  • Rechargement du fichier

    A la fin de l'éxécution de la commande, il est possible que le fichier temporaire de travail ait été modifié, vous pouvez alors définir s'il doit être rechargé par CoolTweak (c'est à dire prendre en compte ses modifications) ou pas.

    Si vous les souhaitez, vous pouvez recharger le fichier depuis son emplacement courant, depuis un chemin prédéfini ou depuis ce que votre script/exécutable à renvoyé.

  • Options de sortie

    Par défaut, la commande est considérée comme échouée si elle ne peut pas être lancée ou si elle écrit des données sur la sortie standard d'erreur.
    Dans ce cas, les traitements s'arrêtent et le traitement complet du fichier est en erreur.

    Il existe une option pour ne pas tenir compte de l'état final de la commande, de même pour ignorer l'écriture sur la sortie standard d'erreur.
    Au contraire, il est possible de faire échouer la commande si jamais elle ne renvoi pas un code de retour ou un contenu (sur la sortie standard) prédéfini.

  • Outils de debug

    Lorsque vous êtes en phase de développement, vous pouvez activer la fonctionnalité de log qui trace des informations précieuses sur le déroulement de la commande dans un ou plusieurs fichiers de log.

    Le chemin du fichier peut être absolu (tous les traitements seront inscrits dedans) ou relatif en contenant des variables (un fichier de log par fichier traité).
    Cette fonctionnalité est très pratique pour débusquer les problèmes mais pour des raisons de performance, désactivez la quand votre commande est au point.

    Lors des developpements, vous pouvez testez très simplement votre commande grâce au bouton "Tester ces réglages", sélectionnez un fichier puis validez.
    Le fichier de log apparaitra automatiquement avec tous les détails sur le traitement ainsi que les fichiers traités.

Enregistrez vos changements et c'est prêt, vous pouvez désormais appeler votre commande sur n'importe quel fichier ou dossier avec un simple droit.

Variables des commandes personnalisées

Les paramètres transmis à votre commande sont essentiels car ils permettent de lui donner quel fichier elle doit traiter et d'autres informations sur son exécution.
CoolTweak propose tout un lot de variables (aussi appelées macros) prédéfinies dont la syntaxe est du type {MaVariable} et qui seront remplacées par leur valeur réelle juste avant l'appel de la commande.

Cliquez sur le champ des paramètres de la commande pour afficher toutes les variables possibles dans le contexte courant.

  • {FilePath} Chemin du fichier courant
  • {FileName} Nom du fichier courant
  • {FileNameWithoutExtension} Nom (sans extension) du fichier courant
  • {FileNameExtension} Extension du fichier courant (ex: .jpg)
  • {FileDirectoryPath} Dossier contenant le fichier courant
  • {FileFormat} Format du fichier courant
  • {FileMimeType} Type mime du fichier courant
  • {FileMediaType} Catégorie du fichier courant
  • {FileDefaultExtension} Extension par défaut associée au format du fichier courant (ex: .jpg)
  • {FileIndex} Indice du fichier dans les traitements (démarre à 0)
  • {FileCount} Le nombre total de fichiers à traiter
  • {OperationId} Identifiant de l'opération courante
  • {OutputFilePath} Chemin du fichier final (à la fin des traitements)
  • {OutputFileName} Nom du fichier final (à la fin des traitements)
  • {OutputFileNameWithoutExtension} Nom (sans extension) du fichier final (à la fin des traitements)
  • {OutputFileNameExtension} Extension du fichier final (à la fin des traitements,ex: .jpg)
  • {OutputFileDirectoryPath} Dossier contenant le fichier final (à la fin des traitements)
  • {OriginalFilePath} Chemin du fichier original
  • {OriginalFileName} Nom du fichier original
  • {OriginalFileNameWithoutExtension} Nom (sans extension) du fichier original
  • {OriginalFileNameExtension} Extension du fichier original (ex: .jpg)
  • {OriginalFileDirectoryPath} Dossier contenant le fichier original
  • {ParamLogFilePath} Chemin de l'éventuel fichier de log (si défini)
  • {ParamIsAsync} Commande est elle exécutée de manière asynchrone ou pas ?
  • {ParamIsAdminMode} Commande est elle lancée en mode Administrateur ou pas ?
  • {ParamPathDelimiter} Le délimiteur utilisé dans les variables de chemin
  • {EngineLabel} Nom du moteur de traitement
  • {EngineVersion} Version du moteur de traitement
  • {ImageWidth} Largeur de l'image (en pixel)
  • {ImageHeight} Hauteur de l'image (en pixel)
  • {ImageHorizontalResolution} Résolution horizontale de l'image (en dpi)
  • {ImageVerticalResolution} Résolution verticale de l'image (en dpi)
  • {ImageFrameCount} Nombre de frames de l'image
  • {ImageMetaAuthors} Auteurs de l'image (si disponible)
  • {ImageMetaCameraMaker} Fabriquant de l'appareil photo (si disponible)
  • {ImageMetaCameraModel} Modèle de l'appareil photo (si disponible)
  • {ImageMetaComment} Commentaire de l'image (si disponible)
  • {ImageMetaCopyright} Copyright de l'image (si disponible)
  • {ImageMetaKeywords} Mots clé de l'image (si disponible)
  • {ImageMetaRating} Note de l'image (si disponible)
  • {ImageMetaSubject} Sujet de l'image (si disponible)
  • {ImageMetaTitle} Titre de l'image (si disponible)
  • {ImageMetaExposureTime} Durée d'exposition de l'image (si disponible)
  • {ImageMetaFNumber} Ouverture de l'image (si disponible)
  • {ImageMetaFocalLength} Distance focale de l'image(si disponible)
  • {ImageMetaIsoSpeed} Sensibilité ISO de l'image(si disponible)
  • {ImageMetaProgramMode} Programme de l'appareil (si disponible)
  • {ImageMetaGpsLatitude} Latitude GPS (si disponible)
  • {ImageMetaGpsLongitude} Longitude GPS (si disponible)

Les commandes d'événement en détail

Les commandes d'événement fonctionnent globalement comme les commandes personnalisées et possèdent les même options.
Leur grande différence est qu'elles ne se lancent qu'une seule fois et peuvent prendre en paramètre les chemins de tous les fichiers à traiter.
Dans cette section nous allons voir où se trouvent les commandes d'événement et ajuster leurs options.

Activer une commande d'événement

Actuellement, il y a deux événements possibles pour les commandes d'événement:
- "Avant les traitements" qui est lancé juste avant le début de la première action à réaliser.
- "Après les traitements" qui est lancé une fois que tous les fichiers ont été traités et déposés dans leur dossier de sortie.

Lorsque vous êtes dans l'éditeur de menu de CoolTweak, les commandes d'événement sont activables depuis l'onglet "Options de sortie" de chaque menu, dans la sous catégorie "Evénements".

Cochez la case qui correspond à l'événement que vous voulez traiter pour faire apparaitre ses options.

Les options de paramétrage des commandes d'événement sont très similaires à celles des commandes personnalisées.
Il existe juste quelques possibilités supplémentaires sur le formattage des chemins des fichiers à transmettre en paramètre.

Dans cet exemple, le paramètre transmis sera la variable {FilePathes} qui correspond à la liste des chemins des fichiers à traiter.

  • Préfixe des chemins

    Un préfixe est une chaine de caractères personnalisée qui va être placée avant le chemin de chaque fichier.

  • Suffixe des chemins

    Un suffixe est une chaine de caractères personnalisée qui va être placée après le chemin de chaque fichier.

  • Séparateur entre 2 chemins

    Un séparateur est une chaine de caractères personnalisée qui va être placée entre deux chemins de fichier.

  • Quelques exemples pour mieux comprendre

    Vous traitez 2 fichiers: fichier1.jpg et fichier2.jpg:

    Si préfixe = " (guillemet) et que vous laissez suffixe et séparateur vides:
    {FilePathes} = "fichier1.jpg"fichier2.jpg

    Si suffixe = " (guillemet) et que vous laissez préfixe et séparateur vides:
    {FilePathes} = fichier1.jpg"fichier2.jpg"

    Si séparateur = , (virgule) et que vous laissez préfixe et suffixe vides:
    {FilePathes} = fichier1.jpg,fichier2.jpg

    Si préfixe = " (guillemet), suffixe = " (guillemet) et séparateur = , (virgule):
    {FilePathes} = "fichier1.jpg","fichier2.jpg"

    Si préfixe = %, suffixe = $ et séparateur = *:
    {FilePathes} = %fichier1.jpg$*%fichier2.jpg$

Variables des commandes d'événement

Les paramètres transmis à votre commande sont essentiels car ils permettent de lui donner quel fichier elle doit traiter et d'autres informations sur son exécution.
CoolTweak propose tout un lot de variables (aussi appelées macros) prédéfinies dont la syntaxe est du type {MaVariable} et qui seront remplacées par leur valeur réelle juste avant l'appel de la commande.

Cliquez sur le champ des paramètres de la commande pour afficher toutes les variables possibles dans le contexte courant.

  • {FilePathes} Les chemins complets de tous les fichiers à traiter
  • {FileCount} Le nombre total de fichiers à traiter
  • {FileDirectoryPathes} Les chemins de tous les les dossiers contenant les fichiers à traiter
  • {FileDirectoryCount} Le nombre de dossiers parent distincts
  • {EngineLabel} Nom du moteur de traitement
  • {EngineVersion} Version du moteur de traitement
  • {ParamLogFilePath} Chemin de l'éventuel fichier de log (si défini)
  • {ParamIsAsync} Commande est elle exécutée de manière asynchrone ou pas ?
  • {ParamIsAdminMode} Commande est elle lancée en mode Administrateur ou pas ?
  • {ParamPathDelimiter} Le délimiteur utilisé dans les variables de chemin
  • {ParamPathPrefix} Le texte à ajouter avant chaque chemin de fichier
  • {ParamPathSuffix} Le texte à ajouter après chaque chemin de fichier
  • {ParamPathSeparator} Le texte à ajouter entre 2 chemins de fichier

Maintenant c'est à vous de jouer !

Voilà, vous savez tout sur la manière d'exécuter vos propres actions depuis CoolTweak, il ne tient plus qu'à vous d'automatiser vos traitements et de constuire votre boite à outils idéale.

CoolTweak aime les développeurs, n'hésitez pas à faire des retours et des suggestions pour améliorer les commandes personnalisées, toutes les idées sont toujours les bienvenues.

Pour continuer le tour d'horizon et trouver un peu d'inspiration, consultez les exemples d'intégration de libraries tierces avec CoolTweak qui traitent des cas très concrets.

Utiliser ImageMagick dans CoolTweak

Exemple d'intégration

Cet article présente des exemples pratiques d'intégration de la librarie de traitement d'images ImageMagick.

A la fin de cet article vous saurez lancer et enchainer des traitements avec ImageMagick depuis CoolTweak.

Utiliser ffmpeg dans CoolTweak

Exemple d'intégration

Cet article présente des exemples d'intégration de la librarie populaire de traitement de vidéos ffmpeg.
Convertir, pivoter, extraire l'audio ou des images d'une vidéo n'aura plus aucun secret pour vous.

A la fin de cet article vous saurez lancer des traitements avec ffmpeg depuis CoolTweak.