JXA получить размер и контрольную сумму файла?

Я использую JXA (javascript для автоматизации) на своем Mac, чтобы попытаться автоматизировать загрузку снимков экрана iTunes Connect. Из-за этого я хочу автоматизировать захват каждого изображения и его загрузку, но для того, чтобы iTunes Connect разрешил это (с помощью iTMSTransporter), мне нужно отредактировать файл XML и добавить размер каждого изображения в битах, а также получить контрольную сумму ( тип="md5").

Я знаю, что могу сделать это вручную, но я хочу автоматизировать это, так как это сэкономит мне много времени в долгосрочной перспективе, с множеством разных скриншотов для каждой локализации.

Я использовал JXA для захвата изображений и получения их размеров, но не могу понять размер и контрольную сумму. Может быть, кто-то может помочь? Или, если JXA не используется, может быть, есть какой-то другой сценарий, который может запускать JXA (например, сценарий оболочки, с которым у меня пока нет опыта), или, может быть, какой-то сценарий, который я мог бы просто запустить заранее и экспортировать XML в файл вручную. Оттуда я мог бы использовать JXA для анализа этого файла.

Вот что у меня есть до сих пор для того, что нужно, чтобы получить файл изображения:

desktopPath = finder.desktop.url();
desktopPath = desktopPath.substring(7, desktopPath.length);
var imagePath = Application('System Events').folders.byName(desktopPath + '/myImage.png');

imageEvents = Application("Image Events");
imageEvents.launch();
imageEvents.name();

img = imageEvents.open(Path(imagePath));
// now I don't know what to do with the image as the documentation is quite difficult for me to understand

person Kjell Connelly    schedule 28.02.2015    source источник


Ответы (1)


Я понял. Мне пришлось использовать сценарии оболочки для доступа к этой информации. Не знаю, есть ли другой способ, но этот способ сработал...

// to get the size (newString is the path (as a string) to the file I am getting the size for
var theSize = app.doShellScript("stat -f%z " + newString.replace(" ", "\\ "));

// to get the MD5 checksum (newString is again the path (as a string) to the file I am getting the checksum for
var md5String = newString;
md5String = md5String.replace(" ", "\\ ");
var checksum = app.doShellScript("md5 " + md5String);
checksum = checksum.replace(/\/$/, "").split(' ').pop();
// I popped because I had to format the returned string so it's just the MD5 and not the file path as well. Maybe there is an easier way in shell script, but I'm a newbie to shell scripting
person Kjell Connelly    schedule 28.02.2015