Современные операционные системы предлагают довольно большой набор различных встроенных инструментов и настроек, позволяющих более гибко организовать работу, избегая различных рутинных операций. Но все равно найдется еще тысяча мелких действий, которые не были учтены разработчиками. И тут на помощь нам приходят множественные скриптовые языки, в которых зачастую проблема решается на раз-два-три. Но сегодня мы рассмотрим еще одно решение с несколько иным подходом, на случай если, например, в программе не предусмотрен консольный режим. Этим решением является программа, входящая в состав стандартной поставки 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 получает на вход изображение.

Automator_workflow_types

В статье мы рассмотрим несколько довольно интересных юз-кейсов, которые могут пригодиться любому пользователю OS Х или подтолкнут читателей на написание новых рецептов.

 

Объединение нескольких PDF-файлов

В стандартной библиотеке автоматора есть ряд действий с PDF-документами. Что ж, оформим небольшой воркфлоу, который позволит в будущем объединять несколько отдельных файлов в один.

Оформим его в виде отдельного приложения, выбрав соответствующий тип в первом диалоге автоматора. Далее последовательно перетащим в наш скрипт такие действия: Ask for Finder Items — диалог выбора файлов, Combine PDF Pages — собственно действие компоновки в один файл и Open Finder Items — действие, открывающее сохраненный PDF-файл в дефолтном ридере.

Вот и все, можно запустить скрипт, нажав на кнопку Run в правом верхнем углу окна автоматора.

Combine_pdfs

 

Шаринг скриншотов

Этот рецепт позволит тебе автоматом синхронизировать и расшаривать скриншоты, которые ты делаешь. В OS X уже встроены механизмы снятия скриншота (сочетания клавиш <⌘ + ⇧ + 3> для снятия снимка со всего экрана и <⌘ + ⇧ + 4> для снимка области экрана или окна приложения). Также функции синхронизации присутствуют во многих облачных хранилищах, например Dropbox. Поэтому нам остается только немного их подружить.

Создадим новый воркфлоу с типом Folder Action. Необходимо будет выбрать папку, в которую макось сохраняет скриншоты, по умолчанию это ~/Desktop. Как только в папку будет добавляться какой-либо файл, будет вызываться наш воркфлоу, поэтому создадим фильтр, чтобы исключить расшаривание остальных файлов. Для этого добавим действие Filter Finder Items. По умолчанию все снимаемые скриншоты называются следующим образом «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/XXXXXXX/"$(basename $1)
final=`echo $combined | sed 's/ /%20/g'`
echo -ne ${final} | pbcopy
afplay /System/Library/Sounds/Hero.aiff

Заметь, что вместо [user_id] тебе нужно будет подставить свой идентификатор из семи цифр в дропбоксе. Как его найти? Самый простой вариант — зайти залогиненным на сайт дропбокса и в яваскриптовой консоли браузера набрать:

console.log(Constants.uid)

Опционально можно еще добавить нотификэйшн. Тут возможно два варианта: либо использовать действие, которое идет вместе с Growl’ом, либо скачать и установить бесплатное действие, позволяющее показывать уведомления в теперь уже стандартном центре уведомлений OS X (is.gd/mgqFro).

Готово. Теперь сохраняем наш воркфлоу (автоматор положит его в ~/Library/Workflows/Applications/Folder Actions/) и наслаждаемся работой.

ScreenShot_Sharing

 

Do Not Disturb по календарю

В последней версии операционки от Apple был представлен новый центр сообщений с возможностью отключения всплывающих аллертов до определенного времени. Эта функция получила название Do Not Disturb. Она позволяет до конца текущего дня отключить все отвлекающие факторы. Но что, если ты хочешь, чтобы эта функция включалась по расписанию? Этот воркфлоу придет тебе на помощь.

Для начала создадим новый Calendar Workflow, так как мы хотим уже потом в календаре настроить расписание запуска нашего скрипта.

Добавим действие Run AppleScript и в поле скрипта заменим следующим содержанием:

do shell script "defaults write ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist doNotDisturb -boolean true"
set theDate to quoted form of (do shell script "date +\"%Y-%m-%d %I:%M:%S +0000\"")
do shell script "defaults write ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist doNotDisturbDate -date " & theDate
do shell script "killall NotificationCenter"

Этот скрипт пишет в настройки центра уведомлений о включении DND, а потом перезапускает его, чтобы новые настройки возымели эффект.

Enable_DND

Готово, теперь сохраняем наш воркфлоу. Автоматор сам поместит его в нужное место на диске для данного типа, ~/Library/Workflows/Applications/Calendar, запустит приложение Calendar и создаст в нем событие, в котором уже можно будет настроить время запуска, периодичность и так далее. Сохраняем событие и наслаждаемся тишиной и спокойствием в нужные часы.

Кстати, если тебе нужен аналогичный скрипт, который, наоборот, отключает DND, то придется создать второй воркфлоу, такого же типа, но со следующим скриптом:

do shell script "defaults write ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist doNotDisturb -boolean false"
try
do shell script "defaults delete ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist doNotDisturbDate"
end try
do shell script "killall NotificationCenter"

После этого также необходимо будет настроить расписание его включения.

 

PopClip и Alfred

Помимо автоматора, пользователям OS X доступны и другие средства автоматизации. Одно из них — PopClip, небольшое приложение, позволяющее производить различные манипуляции с выделенным текстом, второе — Alfred, приложение, функциональностью напоминающее стандартный Spotlight, с кучей различных дополнений, позволяющих переключать музыку в iTunes, выдавать результат поиска в Wolfram Alpha или писать простенький To-Do-список.

 

PopClip

Сайт программы: pilotmoon.com/

PopClip — утилита платная, но стоит всего 4,99 доллара. Впрочем, попробовать ее можно бесплатно, с ограничением на 150 запусков. После установки в системе и запуска программы, при выделении текста будет появляться небольшой pop-up, позволяющий произвести различные операции с выделением, подобно тому как это происходит с редактируемым текстом в iOS. По умолчанию это поиск выделенного текста в Google, стандартные операции: вырезать, копировать, вставить, а также, если было выделено одно слово, поиск его значения в словаре.

popclip

Но вся мощь PopClip кроется в множественных и качественных его дополнениях (pilotmoon.com/popclip/extensions). Там есть и переводы выделения в верхний регистр, и шаринг ссылки через Droplr, и создание твита. Кроме того, без лишних сложностей ты можешь расширить библиотеку расширений чем-то самописным, набросав скрипт на любимом ЯП и оформив его в виде экстеншна. Подробности по оформлению и примеры можно найти в гитхабе проекта github.com.

 

Alfred

Cайт программы: www.alfredapp.com

alt

Альфред доступен в двух вариантах: простом и расширенном. Первый распространяется бесплатно, второй можно приобрести за 15 фунтов стерлингов. Программа реализована в виде небольшого всплывающего окна с текстовым поисковым полем, появляющегося по нажатию хоткея (по умолчанию — <Alt + Space>). По мере ввода символов в текстовое поле альфред, подобно Spotify, подбирает релевантные варианты (поиск приложений, файлов, подсчет математического выражения…). Powerpack добавляет целый ряд полезных возможностей, позволяющих, например, проиграть найденный альбом (если по запросу были найдены музыкальные треки) в iTunes, отправить найденные файлы по e-mail, а также подключить различные экстеншны, написанные на shell, AppleScript, а также workflow автоматора. На сайте разработчиков есть специальный раздел посвященный дополнениям support.alfredapp.com.

Довольно продвинутые ресурсы, на которых собрано большое количество материала по автоматору:

Также есть твиттер робота Отто (персонажа из логотипа автоматора)

 

Заключение

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

 

1 комментарий

  1. 02.04.2015 at 23:17

    Срочный вопрос: наводим мышку на фото и правой открыли окно — поделится — твитер и прочее…

    нажимаем еще — нет в окне — одноклассники ВК и прочих соц сетей! Как добавить ссылки и соц сети?:)

    Готов купить бутылку и бутерброд за помощь!!!:)

    djaydi33@yahoo.com

Оставить мнение

Check Also

Хакер ищет авторов. Читатель? Хакер? Программист? Безопасник? Мы тебе рады!

Восемнадцать лет мы делаем лучшее во всем русскоязычном пространстве издание по IT и инфор…