¿Crear un servicio de Automator con un script de Python?

Estoy tratando de crear un Servicio de Automator que actuará sobre el texto seleccionado, convirtiendo guiones en espacios y también haciendo letras mayúsculas para todo el texto.

Un amigo me dio este script de python (no sé nada sobre python o shell scripting):

#! /usr/bin/python

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

Funciona muy bien como fragmento de TextExpander, pero también me gustaría tenerlo disponible en el menú Servicios. No necesito que use ningún lenguaje de secuencias de comandos específico, solo necesita ejecutarse dentro de Automator. Mi compañero de codificación no tenía experiencia con Automator, por lo que no podía ayudar. Su secuencia de comandos requiere copiar el texto en el portapapeles y luego ejecuta el formato y pega el resultado. Me gustaría poder ejecutar esto en el texto seleccionado y no tener que lidiar con el Portapapeles (al menos manualmente).

El uso particular de esto es cambiar el nombre de las fotos cargadas en Flickr, ya que Flickr usa el nombre del archivo para generar el nombre de la foto. Cuando exporto ilustraciones a través de Photoshop o Illustrator usando Guardar para Web, las minúsculas y los guiones son mi configuración predeterminada. Quiero poder resaltar el título de Flickr y luego ejecutar el Servicio para reformatear el nombre del archivo a un título con el formato correcto.

Respuestas (1)

Esto no es demasiado difícil de hacer, solo necesitas saber la magia correcta. Te guiaré a través de él.

  1. Abra Automator y, cuando se le solicite que elija un tipo para su documento, seleccione Servicio . Si no se le solicita, simplemente presione ⌘N para crear un nuevo archivo de automatización.
  2. En la parte superior del panel más a la derecha, asegúrese de que Salida reemplaza el texto seleccionado esté marcado y que el primer menú desplegable esté configurado en texto :configuración de entrada de servicio
    • Puede cambiar cualquier parte de la aplicación a una aplicación específica si solo desea que funcione en ese programa.
  3. En la Biblioteca de acciones en el panel izquierdo, busque Ejecutar script de shell y haga doble clic en él para agregarlo al flujo de trabajo.
  4. Cambie el menú desplegable Shell a /usr/bin/python y asegúrese de que la entrada Pass esté establecida en stdin .
  5. Elimine el texto existente en el cuadro de script y reemplácelo con el código a continuación.
  6. Guárdelo con un nombre descriptivo. Automator lo guardará en la ~/Library/Services/carpeta.
  7. Opcional: vaya a Preferencias de teclado y busque su servicio en la sección Servicios de la pestaña Métodos abreviados de teclado . Puede asignar un acceso directo para todo el sistema allí.

Código de secuencia de comandos

import sys

for f in sys.stdin:
    print f.replace('-', ' ').replace('%', ' ').replace('&', ' and ').replace('#', ' ').title(),
gracias, esto funciono perfectamente! Tengo una comprensión limitada de AppleScript, pero ninguno con scripts de shell.