6 votes

Créer un service Automator avec un script Python ?

Je suis en train de créer un service Automator qui agira sur le texte sélectionné, convertissant les tirets en espaces, et mettant également des majuscules à tous les mots du texte.

Un ami m'a donné ce script python (je ne connais rien au python ou au shell scripting) :

#! /usr/bin/python

cliptext = "%clipboard"
print cliptext.replace('-', ' ').replace('%', ' ').replace('&', ' and ').replace('#', ' ').title()

Cela fonctionne très bien en tant que snippet TextExpander, mais j'aimerais également le rendre disponible dans le menu Services. Je n'ai pas besoin qu'il utilise un langage de script spécifique, il doit juste fonctionner dans Automator. Mon ami codeur n'avait aucune expérience avec Automator donc il ne pouvait pas aider. Son script nécessite de copier le texte dans le presse-papiers, puis exécute le formatage et colle le résultat. J'aimerais juste pouvoir exécuter ceci sur le texte sélectionné et ne pas avoir à gérer le Presse-papiers (au moins manuellement).

L'utilisation particulière de ceci est de renommer les téléversements de photos sur Flickr, puisque Flickr utilise le nom de fichier pour générer le nom de la photo. Lors de l'exportation d'œuvres d'art via Photoshop ou Illustrator en utilisant Save For Web, les minuscules et les tirets sont mes paramètres par défaut. Je veux pouvoir mettre en surbrillance le titre Flickr, puis exécuter le Service pour reformater le nom de fichier en un titre correctement formaté.

8voto

Ged Byrne Points 481

Ce n'est pas trop difficile à faire, il suffit juste de connaître la bonne magie. Je vais vous guider à travers cela.

  1. Ouvrez Automator, et lorsque vous êtes invité à choisir un type pour votre document, sélectionnez Service. Si vous n'êtes pas invité, appuyez simplement sur N pour créer un nouveau fichier Automator.
  2. En haut du panneau le plus à droite, assurez-vous que Remplacer le texte sélectionné par la sortie est cochée, et que le premier menu déroulant est réglé sur texte : paramètres d'entrée du service
    • Vous pouvez changer la partie any application pour une application spécifique si vous voulez que cela fonctionne uniquement dans ce programme.
  3. Dans la Bibliothèque d'actions dans le panneau de gauche, trouvez Exécuter un script Shell et double-cliquez dessus pour l'ajouter au flux de travail.
  4. Changez le menu déroulant Shell en /usr/bin/python, et assurez-vous que Passage d'entrée est réglé sur stdin.
  5. Supprimez le texte existant dans la zone de script, et remplacez-le par le code ci-dessous.
  6. Enregistrez-le avec un nom descriptif. Automator le sauvegardera dans le dossier ~/Library/Services/.
  7. Optionnel : Allez dans les Préférences Clavier, et trouvez votre service dans la section Services de l'onglet Raccourcis clavier. Vous pouvez lui assigner un raccourci système à cet endroit.

Code du script

import sys

for f in sys.stdin:
    print f.replace('-', ' ').replace('%', ' ').replace('&', ' and ').replace('#', ' ').title(),

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X