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



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

На вход службы «Автоматора» подается текстовый фрагмент — выделенная в тексте длинная веб-ссылка. Первым действием отправляем эту ссылку службе сокращения ссылок 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), и сразу проверьте ее работоспособность: введите в любое текстовое поле какой-угодно веб-адрес (например, http://macradar.ru/tips/automator-podschet-obema-teksta-v-lyuboj-mak-programme/), выделите его, щелкните на нем правой кнопкой мыши и в контекстном меню выберите команду Сократить ссылку (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 в качестве посредника. Если вам такой вариант также подходит, то в итоге у вас должна получиться вот такая служба:

Сокращенный вариант службы «Автоматора».