Automator: Быстрое сокращение длинных ссылок в тексте

Мне нередко приходится вставлять длиннющие веб-адреса, например, в подписи к картинкам на Фейсбуке* или в сообщения друзьям по Скайпу. Хотя ограничений по количеству символов в этих случаях у меня нет, длинные ссылки некрасиво выглядят и могут «ломать» внешний вид всего текста. Лучше такие «сосиски» сокращать: выделил длинную ссылку, щелкнул по ней правой кнопкой мыши, в контекстном меню выбрал команду Сократить ссылку — и заменил длинный адрес коротким. И для этого не нужны никакие специальные утилиты — с помощью «Автоматора» сделать такую сокращалку самостоятельно проще простого.


Как это должно работать

На вход службы «Автоматора» подается текстовый фрагмент — выделенная в тексте длинная веб-ссылка. Первым действием отправляем эту ссылку службе сокращения ссылок Google (goo.gl) — для этого используется специальная консольная команда, описанная в руководстве для разработчиков Google (см. пример с командой curl). В ответ на отправленный запрос получаем набор из трех строковых пар-значений. Во второй паре хранится уже готовая короткая ссылка.

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

Как это выглядит на деле

Создайте в «Автоматоре» новую службу. В заголовке установите параметры так, чтобы служба получала «выбранные текст (text) в любой программе (any application)». Очень важно, чтобы был включен параметр Выходные данные заменяют выделенный текст (Output replaces selected text) — только так служба сможет заменить выделенную вами ссылку на сокращенный URL.

Под заголовок перетащите из библиотеки действие Запустить AppleScript (Run AppleScript) и введите внутри него следующий код (именно он будет отправлять запрос на goo.gl и получать от него ответ):
on run {input, parameters}
set result to (do shell script "curl https://www.googleapis.com/urlshortener/v1/url -H 'Content-Type: application/json' -d '{"longUrl": "" & input & ""}'") --Подробности по адресу: http://goo.gl/KDQv1
return result
end run

Вторым перетащите из библиотеки действие Извлечь данные из текста (Extract Data from Text) и в выпадающем списке Извлечь выберите пункт URL-адреса (URLs).

Последнее действие — еще один AppleScript-сценарий с таким кодом:
on run {input, parameters}
repeat with i in input
set shortened to (i as text)
exit repeat
end repeat
return shortened
end run

Именно оператор return shortened передаст на выход сокращенную ссылку, которая служба вставит в ваш текст вместо выделенного ранее длинного веб-адреса.

Сохраните службу, задав ей имя, например, Сократить ссылку (Shorten URL), и сразу проверьте ее работоспособность: введите в любое текстовое поле какой-угодно веб-адрес, выделите его, щелкните на нем правой кнопкой мыши и в контекстном меню выберите команду Сократить ссылку (Shorten URL) — через мгновение должен произойти требуемый фокус-покус. :)

Обновление

Отличную подсказку дал в комментариях DmitriyLyalyuev, посоветовав использовать службу shrt.org.ua. Благодаря тому, что она сразу возвращает готовый результат (сокращенную ссылку) без лишних для нашего случая данных, созданную службу «Автоматора» можно значительно упростить — убрать второе и третье действия, а в первое ввести следующий код:
on run {input, parameters}
set result to (do shell script "curl 'http://shrt.org.ua/--?url=" & input & "&s=goo.gl'") --Подробности по адресу: http://shrt.org.ua
return result
end run

Здесь также выполняется обращение к Goo.gl (хотя можно использовать любую другую сокращалку, указанную в списке поддерживаемых), но через Shrt.org.ua в качестве посредника. Если вам такой вариант также подходит, то в итоге у вас должна получиться вот такая служба:


*Деятельность Meta Platforms Inc. и принадлежащих ей социальных сетей Facebook и Instagram запрещена на территории РФ.

Это упрощённая версия страницы.

Читать полную версию
Если нашли ошибку, выделите текст и нажмите Ctrl + Enter
DmitriyLyalyuev
24.09.12 17:29
Шик, блеск, красота. :)
Alexander Zhurovich
24.09.12 17:31
Состояние сферичности в вакууме достигнуто. :)
Smut
27.09.12 04:10
Было бы замечательно если бы скрипт копировал в коцне ссылку в буфер обмена, подскажите что для этого нужно пожалуйста.
Alexander Zhurovich
05.10.12 15:04
Добавить перед последним оператором AppleScript-кода такую строку: set the clipboard to result
Читать все комментарии