Как бы я написал следующий яблочный скрипт в Obj-C AppScript? ASTranslate не помогал = ( - PullRequest
0 голосов
/ 29 апреля 2010

Инструмент перевода не может перевести этот рабочий код.Я скопировал его из рабочего скрипта.

set pathToTemp to (POSIX path of ((path to desktop) as string))

-- change jpg to pict
tell application "Image Events"
    try
        launch
            set albumArt to open file (pathToTemp & "albumart.jpg")
            save albumArt as PICT in file (pathToTemp & "albumart.pict")
            --the first 512 bytes are the PICT header, so it reads from byte 513
            --this is to allow the image to be added to an iTunes track later.
            set albumArt to (read file (pathToTemp & "albumart.pict") from 513 as picture)
        close
    end try
end tell

Код берет изображение jpg, преобразует его в файл PICT, а затем читает файл без заголовка (первые 512 байт).Позже в сценарии к треку iTunes будет добавлено albumArt.

Я попытался перевести код (без комментариев), но ASTranslate заморозил на добрые 2 минуты, прежде чем дать мне следующее:

Untranslated event 'earsffdr'

#import "IEGlue/IEGlue.h"
IEApplication *imageEvents = [IEApplication applicationWithName: @"Image Events"];
IELaunchCommand *cmd = [[imageEvents launch] ignoreReply];
id result = [cmd send];

#import "IEGlue/IEGlue.h"
IEApplication *imageEvents = [IEApplication applicationWithName: @"Image Events"];
IEReference *ref = [[imageEvents files] byName: @"/Users/Doom/Desktop/albumart.jpg"];
id result = [[ref open] send];

#import "IEGlue/IEGlue.h"
IEApplication *imageEvents = [IEApplication applicationWithName: @"Image Events"];
IEReference *ref = [[imageEvents images] byName: @"albumart.jpg"];
IESaveCommand *cmd = [[[ref save] in: [[imageEvents files] byName: @"/Users/Doom/Desktop/albumart.pict"]] as: [IEConstant PICT]];
id result = [cmd send];

'crdwrread'

Traceback (most recent call last):
  File "objcrenderer.pyc", line 283, in renderCommand
KeyError: 'crdwrread'


'cascrgdut'

Traceback (most recent call last):
  File "objcrenderer.pyc", line 283, in renderCommand
KeyError: 'cascrgdut'


'crdwrread'

Traceback (most recent call last):
  File "objcrenderer.pyc", line 283, in renderCommand
KeyError: 'crdwrread'


Untranslated event 'rdwrread'

OK

Понятия не имею, как это понять.

Спасибо за любую помощь!

1 Ответ

1 голос
/ 01 мая 2010

read - команда стандартных дополнений; ASTranslate не поддерживает скриптовые дополнения, только скриптовые приложения, поэтому вам придется переводить его самостоятельно.

Используйте ASDictionary для экспорта словаря стандартных дополнений в HTML и создания клея objc-appscript (SAGlue). Затем вы можете использовать - [SAApplication init], чтобы создать новый экземпляр SAApplication и отправить ему команду read.

В качестве альтернативы, вы можете полностью пропустить Стандартные дополнения и использовать NSData, чтобы прочитать и нарезать файл на части и создать NSAppleEventDescriptor самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...