Как вы управляете изображениями адресной книги с помощью AppleScript?

Как проверить, есть ли у человека аватарка? Как вы его отключаете? Как загрузить аватарку из файла? Из интернета, фейсбука, граватара? Какие типы изображений может читать AppleScript? Можно ли скопировать существующий аватар в буфер обмена с помощью AppleScript?

ИЗМЕНИТЬ

Хорошо, я знаю, как проверить, есть ли у человека аватарка

on run
    using terms from application "Address Book"
        my hasImage(person (random number from 1 to length of (get people of application "Address Book") of application "Address Book") of application "Address Book")
    end using terms from
end run

on hasImage(myPerson)
    using terms from application "Address Book"
        try
            set garbage to image of myPerson
            garbage
            true
        on error number -2753
            false
        end try
    end using terms from
end hasImage

person Zygmunt    schedule 20.11.2010    source источник
comment
Обратите внимание, что вы можете сами ответить на свой вопрос. Ответ выше должен быть опубликован как таковой.   -  person outis    schedule 20.11.2010


Ответы (1)


> Как проверить, есть ли у человека аватар?

Вам не нужен обработчик ошибок. Просто используйте image of [somebody] is missing value, где [somebody] — это спецификатор человека из адресной книги.

tell application "Address Book"
    image of some person is missing value
end tell

Использование:

tell application "Address Book"
    set somebody to some person
    if image of somebody is missing value then
        display dialog name of person & " doesn't have an image."
    else
        display dialog name of person & " has an image."
    end if
end tell

> Как его сбросить?

Чтобы удалить изображение человека, установите его на missing value.

> Как загрузить аватарку из файла?

Чтобы загрузить изображение из файла, прочитайте его как данные TIFF:

tell application "System Events"
    set imgfile to file "AENewman.jpg" of folder "friends" of pictures folder
end tell
set imgfd to open for access imgfile
set img to read imgfd as "TIFF"

tell application "Address Book"
    set myFriend to item 1 of ¬
        (people whose first name is "Alfred" and last name is "Newman")
    set (image of myFriend) to img
end tell

close access imgfd

> Из интернета, фейсбука, граватара?

Вы можете использовать сценарии доступа к URL (в /System/Library/ScriptingAdditions/URL Access Scripting.app, если хотите просмотреть словарь сценариев), чтобы загрузить изображение в файл, а затем загрузить его, как указано выше.

on setABImage for somebody from |url|
    tell application "System Events" to set tempFile to ¬
        make new file at end of temporary items folder of user domain
    set tempPath to path of tempFile
    tell application "URL Access Scripting" to download |url| ¬
        to tempPath replacing yes
    set imgfd to open for access tempFile
    tell application "Address Book" to set (image of somebody) ¬
        to (read imgfd as "TIFF")
    close access imgfd
    tell application "System Events" to delete tempFile
end setABImageURL

> Какие типы изображений поддерживает AppleScript?

Image Events может читать форматы PICT, Photoshop, BMP, QuickTime Image, GIF, JPEG, MacPaint, JPEG2, SGI, PSD, TGA, Text, PDF, PNG и TIFF. Я ожидаю read поддерживает то же самое. Обратите внимание, что типы изображений в команде read указываются как OSTypes. Адресная книга поддерживает только формат TIFF.

> Можно ли скопировать существующий аватар в буфер обмена с помощью AppleScript?

Вы можете настроить буфер обмена практически на что угодно, используя set the clipboard to, хотя вам может понадобиться предложение as, чтобы установить в буфер обмена содержимое, а не ссылку.

tell application "Address Book" to set the clipboard to ¬
    the image of item 1 of (person whose name is "Alfred E Newman") as data
person outis    schedule 20.11.2010
comment
outis действительно знает свой AppleScript. Это было очень полезно и хорошо отформатировано. Спасибо! - person duma; 25.09.2013