Automator-Dienst mit einem Python-Skript erstellen?

Ich versuche, einen Automator-Dienst zu erstellen, der auf ausgewählten Text reagiert, Bindestriche in Leerzeichen umwandelt und auch Wortkappen für den gesamten Text erstellt.

Ein Freund hat mir dieses Python-Skript gegeben (ich weiß nichts über Python- oder Shell-Skripte):

#! /usr/bin/python

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

Es funktioniert hervorragend als TextExpander-Snippet, aber ich möchte es auch im Menü "Dienste" verfügbar haben. Ich brauche es nicht, um eine bestimmte Skriptsprache zu verwenden, es muss nur in Automator ausgeführt werden. Mein Programmierkumpel hatte keine Erfahrung mit Automator, also konnte er nicht helfen. Sein Skript erfordert das Kopieren des Textes in die Zwischenablage, führt dann die Formatierung aus und fügt das Ergebnis ein. Ich möchte dies einfach auf den ausgewählten Text ausführen können und mich nicht mit der Zwischenablage befassen müssen (zumindest manuell).

Die besondere Verwendung dafür ist das Umbenennen von Foto-Uploads auf Flickr, da Flickr den Dateinamen verwendet, um den Fotonamen zu generieren. Beim Exportieren von Bildmaterial über Photoshop oder Illustrator mit „Für Web speichern“ sind Kleinbuchstaben und Bindestriche meine Standardeinstellungen. Ich möchte in der Lage sein, den Flickr-Titel hervorzuheben und dann den Dienst auszuführen, um den Dateinamen in einen korrekt formatierten Titel umzuformatieren.

Antworten (1)

Das ist nicht allzu schwierig, man muss nur die richtige Magie kennen. Ich werde es dir zeigen.

  1. Öffnen Sie Automator, und wenn Sie aufgefordert werden, einen Typ für Ihr Dokument auszuwählen, wählen Sie Service . Wenn Sie nicht dazu aufgefordert werden, drücken Sie einfach ⌘N, um eine neue Automator-Datei zu erstellen.
  2. Stellen Sie sicher, dass oben im Bedienfeld ganz rechts das Kontrollkästchen Ausgabe ersetzt ausgewählten Text aktiviert ist und das erste Dropdown-Menü auf text eingestellt ist :Diensteingangseinstellungen
    • Sie können den Teil einer beliebigen Anwendung in eine bestimmte Anwendung ändern, wenn Sie möchten, dass sie nur in diesem Programm funktioniert.
  3. Suchen Sie in der Aktionsbibliothek im linken Bereich nach Run Shell Script und doppelklicken Sie darauf, um es dem Workflow hinzuzufügen.
  4. Ändern Sie das Shell- Dropdown auf /usr/bin/python und stellen Sie sicher, dass Pass input auf stdin eingestellt ist .
  5. Löschen Sie den vorhandenen Text im Skriptfeld und ersetzen Sie ihn durch den folgenden Code.
  6. Speichern Sie es unter einem aussagekräftigen Namen. Automator speichert es im ~/Library/Services/Ordner.
  7. Optional: Gehen Sie zu den Tastatureinstellungen und suchen Sie Ihren Dienst im Abschnitt „Dienste“ der Registerkarte „Tastaturkürzel“ . Dort können Sie ihm eine systemweite Verknüpfung zuweisen.

Skriptcode

import sys

for f in sys.stdin:
    print f.replace('-', ' ').replace('%', ' ').replace('&', ' and ').replace('#', ' ').title(),
danke, das hat perfekt funktioniert! Ich habe ein begrenztes Verständnis von AppleScript, aber keines mit Shell-Skripten.