Como é que se alimentam de uma lista de arquivos em um aplicativo com appscript e Python?
-
19-09-2019 - |
Pergunta
Tire suas newb anteparos para cima, eu estou prestes a regar-lhe alguns.
Eu estou tentando obter Photoshop CS4 para abrir uma folderful de imagens JPEG com appscript + Python, o que poderia ser descrito como tal no bash:
#!/bin/bash
for F in `ls ~/Desktop/test`; do
open -a "Adobe Photoshop CS4" $F
# proceed to mutilate the image appearance
done
Eu estou falhando na fase ls ~/Desktop/test
. Eu realmente gostaria de perguntar Finder para listar uma pasta para mim, e alimentar o resultado em Photoshop um de cada vez para processá-los.
A JavaScript equivalente com ponte ExtendScript do Adobe seria:
#target photoshop
var folder = Folder("~/Desktop/test");
var images = folder.getFiles();
for (var i=0; i < images.length; i++) {
if (images[i] instanceof File && images[i].hidden == false) {
var doc = app.open(images[i]);
// do something to the image here
doc.close(SaveOptions.DONOTSAVECHANGES);
}
}
Eu posso me obter um objeto document_file
com uma engenhoca terrivelmente boba como x = app('Finder').home.folders['Desktop']().folders['test']().items()[0]
, mas que acaba por ser um objeto muito boba. Tentando app('Adobe Photoshop CS4').open(x)
este objeto irá lançar uma OSERROR: 1230
, com um MESSAGE: File/Folder expected
.
(Uh-oh, este document_file
realmente responde a URL()
, então File.makewithurl(x.URL())
pode ser alimentado em open()
)
Ehm, tendo resolvido que, se existe uma maneira de realmente fazer isso, pedindo localizador para a lista de arquivos em uma determinada pasta, especificado por um caminho UNIX ?
Solução
aberto comando do Photoshop requer um objeto de alias (ou lista de objetos de alias).
from appscript import *
folder = '/path/to/folder'
ps = app('Adobe Photoshop CS4')
for f in app('Finder').items[mactypes.Alias(folder)].files.get(resulttype=k.alias):
ps.open(f)
# do stuff here...