1 votos

Detectar si un elemento del portapapeles es un dato de imagen utilizando AppleScript

Esto comenzó porque Quería poder pegar capturas de pantalla o imágenes copiadas desde Safari en las carpetas del Finder . Estos son los pasos para llegar a donde estoy:

  1. Instalar pngpaste utilizando brew install pngpaste .

  2. Hacer Automático Acción rápida y configurarlo como:

enter image description here

osascript -e 'set formattedDate to (do shell script "date +'%Y-%m-%dat%H-%M-%S%p'")' -e 'tell application "Finder" to set thePath to the quoted form of (POSIX path of (insertion location as alias) & formattedDate & ".png")' -e 'if ((clipboard info) as string) contains TIFF picture then do shell script "/usr/local/bin/pngpaste " & thePath' -e 'if ((clipboard info) as string) does not contain TIFF picture then tell application "System Events" to keystroke "v" using control down'
  1. Guardar y cerrar.
  2. Reasignar la pasta por defecto:

enter image description here

  1. Asignar pasta por defecto al servicio de activación:

enter image description here

EL PROBLEMA: No importa el tipo de archivo que tenga en el portapapeles, el script siempre lo detecta como TIFF y lo pega como PNG. ¿Cómo puedo arreglar esto?

2voto

user3439894 Puntos 5883

Tener que escribir y mantener un osascript comando como usted tiene no es realmente la mejor manera de ir en este caso de uso IMO.

Utilizando un Ejecutar AppleScript acción , en lugar de un Ejecutar Shell script acción , lo siguiente ejemplo AppleScript código resolverá el problema que tiene actualmente, y hace que el código mucho más fácil de leer y editar:

on run {input, parameters}

    set cbInfoAsString to (clipboard info) as string

    if cbInfoAsString does not contain "«class furl»" and ¬
        cbInfoAsString contains "TIFF picture" then

        set formattedDate to do shell script ¬
            "date -j '+%Y-%m-%d at %I.%M.%S %p'"

        tell application "Finder" to set thePath to ¬
            (insertion location as alias) & ¬
            formattedDate & ".png" as string

        do shell script "/usr/local/bin/pngpaste " & ¬
            the quoted form of the POSIX path of thePath

    else if cbInfoAsString contains "«class furl»" then

        tell application "System Events" to ¬
            keystroke "v" using control down

    end if

end run

Notas:

  • POSIX path forma parte de Adiciones estándar no Buscador y no debe estar envuelto dentro de un tell declaración de Buscador .
  • Si no se establece el fecha con el date comando Utiliza el -j opción .
  • He modificado su date comando para usar Tiempo de 12 horas como típicamente Tiempo de 24 horas no utiliza AM/PM y he añadido modificaciones adicionales para hacerlo más legible, y en línea con el sistema por defecto utilizado con las capturas de pantalla.
  • Si quieres Tiempo de 24 horas entonces utiliza por ejemplo "date -j '+%Y-%m-%d at %H.%M.%S'"
  • Tal y como está codificado, si hay algo más que un archivo(s)/carpeta(s) o simplemente un imagen El script no intentará procesar texto si eso es lo que hay en el portapapeles.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X