- PVSM.RU - https://www.pvsm.ru -

Как сделать автозагрузку скриншотов на FTP в OS X или история, о том, как мы не ищем легких путей

Всем привет!

Как известно, программисты люди такие, что легких путей не ищут. Недавно у меня возникла потребность в автоматической загрузке свеже-сделанных скриншотов на свой ftp (именно свой и никакой другой). Долгие поиски софта, решающую задачу, для OS X по интернету привели меня в небольшую депрессию. Платный софт я даже не искал, ибо не хочу платить за функции, которые и сам могу написать, а бесплатные программы поражали меня, до самых костей, своей кривостью: скрины загружались не с первого раза, иногда загружалось только половина скрина и вообще, с моей склонностью к перфекционизму, снимать скриншот какого-либо окна и не видеть на нем прекрасной, красивой тени, какую оставляет стандартная утилита OS X — это ад. Поэтому было принято решение занять субботний вечер решением этой задачи собственноручно.

Не долго думая, я вспомнил про изумительную фичу ОС от Apple — Automator и решил автоматизировать загрузку файлов на FTP и рассказать об автоматоре хабрасообществу и неведающим о нем apple-юзерам, поэтому готового файла, который можно просто запустить и все произойдет не будет, будет инструкция и объяснение что к чему, дабы научить пользоваться утилитой и вдохновить других на автоматизацию действий у себя в системе.

Под катом терия, практика и много картинок.

Automator — Эдакая обертка для shell script в *nix от Apple, позволяет автоматизировать все на свете, абсолютно любое движение пользователя. Когда то давно я им пользовался для сборки своего дипломного проекта на Node-Webkit, автоматор позволил мне по нажатию комбинации горячей клавиши пересобрать проект, запаковать его в *.nw архив и тут же его запустить.

Немного теории

В Автоматоре есть несколько типов скриптов, которые можно создать:
Как сделать автозагрузку скриншотов на FTP в OS X или история, о том, как мы не ищем легких путей
1. Workflow — Простой исходник действия, которого мы будем программировать.
2. Application — Тотже workflow, только его можно запускать и он будет автономно работать в вашей OS X
3. Service — Все тоже самое, только скрипт будет доступен во вкладке «Service» тех программ, которые вы выберете при создании скрипта (на эту штуку можно будет потом повесить горячие клавиши)
4. Printing Plugin — Workflow, который будет доступен в окне печати
5. Folder Action — хук, который будет запускаться сразу, как обновится папка (добавится, удалится файл)
6. Celendar Alarm — тут говорить нечего, итак понятно: создаем workflow, который срабатывает по ивенту в календаре (собственно cron задача)
7. Image Capture Plugin — workflow, который доступен в окне получения изображения с камеры (принимает снятое изображение на вход)

А теперь немного практики

Понятно, что нам нужно отлавливать действие создания скриншота и сразу после него — загружать скриншот на сервер, поэтому наш выбор типа скрипта — Folder Action.
По умолчанию, все скриншоты создаются в папке рабочего стола и ясно, что нельзя вешать хук для загрузки файла на фтп на рабочий стол, чтобы не хламить свой сервер, поэтому нам придется немного перенастроить стандартную утилиту создания скриншотов:

  1. Открываем Terminal
  2. Создаем папку screenshots в папке ~/Pictures и направляем туда все скриншоты, которые будет создавать утилита:

    mkdir ~/Pictures/screenshots && defaults write com.apple.screencapture location ~/Pictures/screenshots

Теперь наши скриншоты будут создаваться в этой папке.

Переходим в сам Automator и делаем следующее:

  1. Создаем Finder Action
  2. В открытом окне мы видим меню с коллекцией действий и рабочее пространство. Нам необходимо только 2 действия: «Run Shell Script» и «Display Notification», они находятся в разделе «Utilites». Добавим их простым перетаскиванием.
    Как сделать автозагрузку скриншотов на FTP в OS X или история, о том, как мы не ищем легких путей
  3. В селекте в самом верху рабочего пространства выбираем папку, за которой будем следить
    Как сделать автозагрузку скриншотов на FTP в OS X или история, о том, как мы не ищем легких путей
  4. В блоке «Run Shell Script» устанавливаем «Pass input: as argument» Как сделать автозагрузку скриншотов на FTP в OS X или история, о том, как мы не ищем легких путей
  5. В сам блок «Run Shell Script» нужно написать sh скрипт, который будет выгружать файлы на сервер, приводить его листинг тут не буду, ибо тема статьи другая. Вот ссылка на github [1], где можно его получить, читайте коментарии, там указано как его настроить под свой ftp сервер. Скрипт загрузит новый скриншот и скопирует URL на него в буфер обмена.
  6. В блок «Display Notification» можно писать что угодно. Эта функция выведет вам стандартную нотификацию с вашим текстом
    Как сделать автозагрузку скриншотов на FTP в OS X или история, о том, как мы не ищем легких путей
  7. Сохраняем

Это еще не все. Теперь нам надо подвязать хук к папке, для этого нужно нажать правой кнопкой по папке, выбрать пункт Service->Folder Actions Setup… и выбрать скрипт, который мы только что создали
Как сделать автозагрузку скриншотов на FTP в OS X или история, о том, как мы не ищем легких путей
Как сделать автозагрузку скриншотов на FTP в OS X или история, о том, как мы не ищем легких путей

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

PS Хочу узнать нужны ли еще статьи о том что и как можно делать с помощью Apple Automator и о других фичах системы OS X о которых мало говорят?

Автор: toxa_1

Источник [2]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/mac-os-x/50325

Ссылки в тексте:

[1] Вот ссылка на github: https://gist.github.com/aka-toxa/7851913

[2] Источник: http://habrahabr.ru/post/205314/