ХАКЕР 04 /171/ 2013 31ПОДНИМИТЕМНЕ ВЕКИМихаил Еловскихwronglink@gmail.comКак заставить Макработать за тебяс помощью Automatorи AppleScriptСовременные операционные системыпредлагают довольно большой наборразличных встроенных инструментови настроек, позволяющих более гибкоорганизовать работу, избегая различныхрутинных операций. Но всеравно найдется еще тысяча мелкихдействий, которые не были учтеныразработчиками. И тут на помощь намприходят множественные скриптовыеязыки, в которых зачастую проблемарешается на раз-два-три. Но сегоднямы рассмотрим еще одно решениес несколько иным подходом, на случайесли, например, в программе не предусмотренконсольный режим. Этимрешением является программа, входящаяв состав стандартной поставкиOS X под названием Automator.Автоматор позволяет легко и быстро создаватьworkflow — по сути, скрипты, которые могут прекрасноинтегрироваться с операционной системой. Отличиеот традиционных bash-, Python-, Lua- и прочих скриптовв том, что вместо традиционного подхода с написаниемкода ты в графическом виде собираешь скриптиз маленьких кирпичиков — событий и действий.В стандартной библиотеке этих базовых компонентовдостаточно для различных случаев жизни, а если необходимо,можно ее существенно расширить, установивпакеты дополнений. Впрочем, обо всем по порядку.При создании нового скрипта автоматор спросито его типе. На выбор предлагается:• Workflow — стандартный файл, запускаемыйлибо из GUI автоматора, либо через консоль командойautomator.• Application — воркфлоу, оформленный в виде отдельногоприложения. Его можно запустить, не заходяв GUI.• Service — специальный тип, позволяющий запускатьскрипты в контексте приложений. После созданияони будут доступны в пункте меню Services.• Print Plugin — эти воркфлоу будут доступны в диалогевыбора принтера. Они принимают на входPDF-версию печатаемого документа.• Folder Action — привязываются к определеннойпапке и запускаются при добавлении файлов в этупапку.• Calendar Alarm — скрипты запускаются по определенномусобытию в календаре.• Image Capture Plugin — интеграция с сервисомзахвата изображения. Workflow получает на входизображение.В статье мы рассмотрим несколько довольно интересныхюз-кейсов, которые могут пригодиться любомупользователю OS Х или подтолкнут читателей на написаниеновых рецептов.
32 PC ZONEХАКЕР 04 /171/ 2013ОБЪЕДИНЕНИЕНЕСКОЛЬКИХ PDF-ФАЙЛОВВ стандартной библиотеке автоматораесть ряд действий с PDF-документами.Что ж, оформим небольшой воркфлоу,который позволит в будущем объединятьнесколько отдельных файлов в один.Оформим его в виде отдельного приложения,выбрав соответствующий типв первом диалоге автоматора. Далее последовательноперетащим в наш скрипттакие действия: Ask for Finder Items —диалог выбора файлов, Combine PDFPages — собственно действие компоновкив один файл и Move Finder Items —действие, сохраняющее полученныйPDF-файл в указанную папку.Вот и все, можно запустить скрипт,нажав на кнопку «Run» в правом верхнемуглу окна автоматора.WWWДовольно продвинутые ресурсы,на которых собрано большое количествоматериала по автоматору:www.automatedworkflows.comautomator.uswww.macosxautomation.comТакже есть твиттер робота Отто (персонажаиз логотипа автоматора):https://twitter.com/MACAUTOMATIONРассмотрим несколько интересных юз-кейсов, которые могут пригодитьсялюбому пользователю OS Х или подтолкнут его на написание новых рецептовШАРИНГ СКРИНШОТОВЭтот рецепт позволит тебе автоматом синхронизировать и расшариватьскриншоты, которые ты делаешь. В OS X уже встроены механизмы снятияскриншота (сочетания клавиш для снятия снимка со всегоэкрана и для снимка области экрана или окна приложения).Также функции синхронизации присутствуют во многих облачных хранилищах,например Dropbox. Поэтому нам остается только немного их подружить.Создадим новый воркфлоу с типом Folder Action. Необходимо будет выбратьпапку, в которую макось сохраняет скриншоты (по умолчанию эта папка— ~/Desktop). Как только в папку будет добавляться какой-либо файл, будетвызываться наш воркфлоу, поэтому создадим фильтр, чтобы исключитьрасшаривание остальных файлов. Для этого добавим действие Filter FinderItems. По умолчанию все снимаемые скриншоты называются следующимобразом «Screen Shot [дата] at [время].png», поэтому зададим в фильтреполя: Name begins with “Screen Shot”, а также: Kind is image. Если необходимо,то ты можешь еще добавить другие параметры, например дату создания,чтобы не трогать старые скриншоты, находящиеся на рабочем столе.Теперь добавим действие Move Finder Items, которое будет перемещатькартинки в соответствующую директорию — ~/Dropbox/Public/. И теперь добавимнебольшой хинт, который будет копировать URL расшаренного скриншотав буфер обмена. Для этого добавим действие Run Shell Script и добавимв него следующее содержание:combined="https://dl.dropbox.com/u/[user_id]/"$(basename $1)final=`echo $combined | sed 's/ /%20/g'`echo -ne ${final} | pbcopyafplay /System/Library/Sounds/Hero.aiffЗаметь, что вместо [user_id] тебе нужно будет подставить свой идентификаториз семи цифр в дропбоксе. Как его найти? Самый простой вариант —зайти залогиненным на сайт дропбокса и в яваскриптовой консоли браузеранабрать:console.log(Constants.uid)Опционально можно еще добавить нотификэйшн. Тут возможно два варианта:либо использовать действие, которое идет вместе с Growl’ом, либо скачатьи установить бесплатное действие, позволяющее показывать уведомленияв теперь уже стандартном центре уведомлений OS X (is.gd/mgqFro).Готово. Теперь сохраняем наш воркфлоу (автоматор положит егов ~/Library/Workflows/Applications/Folder Actions/) и наслаждаемся работой.