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

в 14:21, , рубрики: apple, applescript, diy или сделай сам, FTP, mac os x, OS X, shell scripting, метки: , , ,

Всем привет!

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

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js