La nueva aplicación Photos.app no viene con soporte para Automator (aunque hay acciones de terceros disponibles) . Sin embargo, tiene soporte básico para AppleScript, incluido el soporte para importar una lista de archivos.
Sin embargo, no puedo hacer que esta acción funcione correctamente. Cualquier intento de usarlo, como a través del siguiente script simple
tell application "Photos"
set theList to {"/Full/Path/To/Some/Photo.jpg"}
import theList
end tell
hará que Photos.app informe que "no se pudieron recuperar metadatos" del archivo porque es posible que no sea una foto (sin embargo, el mismo archivo se puede importar manualmente ). Investigaciones posteriores revelan que el enfoque automatizado está fallando debido a la falta de permiso para leer el archivo .
Desde Console.app:
4/11/15 9:07:49.333 AM sandboxd[253]: ([3934]) Photos(3934) deny file-read-data /Full/Path/To/Some/Photo.jpg
(seguido de una serie de mensajes de error similares). Las acciones de Automator de terceros que vinculé anteriormente tienen el mismo problema, por lo que vale.
¿Cómo puedo otorgar el permiso adecuado a Photos.app o al flujo de trabajo de ejecución de AppleScript/Automatización para realizar esta importación? Tenga en cuenta que el "permiso" parece ser algo diferente a (o además de) los permisos de archivo habituales, porque configurar el archivo y la carpeta para que todos "lean/escriban" (la opción nuclear) no cambia el comportamiento.
Basado en esto de un antiguo Applescript Release Notes sobre sandboxing...
Al enviar comandos a una aplicación de espacio aislado, como TextEdit en OS X Mountain Lion, los parámetros que se refieren a archivos deben ser de un tipo de archivo explícito y no una cadena simple, o la aplicación de destino no podrá acceder al archivo. Por ejemplo, el archivo "Macintosh HD:Users:me:sample.txt", el archivo POSIX "/Users/me/sample.txt" o el resultado de elegir archivo serían aceptables, pero la cadena "/Users/me/ muestra.txt" no lo haría.
&
Nota: Como se mencionó anteriormente en Compatibilidad, las aplicaciones de espacio aislado no podrán acceder a los archivos a los que se hace referencia en los comandos que usan una ruta de cadena. Cualquier parámetro o propiedad en su aplicación que se refiera a archivos debe declararse como tipo archivo y no como texto. Apple Event Manager agregará extensiones de espacio aislado a los eventos que tengan parámetros similares a archivos, pero solo si el parámetro es de un tipo similar a un archivo reconocido: typeAlias, typeFileURL, cFile, etc. Sin estas extensiones, no se podrá acceder al archivo desde el entorno limitado de la aplicación de destino y es probable que el comando falle.
Parecería que la 'solución' es para POSIX file
evitar el problema de la zona de pruebas
Después de un poco de martillazos sobre cómo hacer que Applescript funcione con POISIX file
una lista, se me ocurrió esto...
modificado
set theList to {"/Volumes/Downloads/ScreenShot.png", "/Volumes/Downloads/ScreenShot2.png", "/Volumes/Downloads/ScreenShot3.png"}
set l to {}
repeat with f in theList
set l to l & (POSIX file f)
end repeat
tell application "Photos" to import l
No es perfecto, ya que cada importación es nueva, pero funciona.
Ahora funciona en una importación.
También puede insertar esta línea en cualquier lugar antes de la línea de exportación en su código:
open for access file f
Esto pareció hacer el truco para mí.
Tetsujin
usuario3259
Tetsujin
Tetsujin
usuario3259
Tetsujin
IconoDaemon