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

Хотя описанный ранее алгоритм сокращения ссылок через «Автоматор», с технической точки зрения, работает без нареканий, на практике с ним могут возникать проблемы. Например, социальная сеть Facebook довольно часто не пропускает ссылки на goo.gl, считая их потенциально опасными. Поэтому пришлось озадачиться «планом Б», в котором главную роль играет другой веб-сервис — Bitly.com.

С этой службой проблем на «Фейсбуке» уже не возникает, однако в «план Б» вносится важный пункт — обязательная регистрация на Bitly.com. С одной стороны, это немного дополнительной возни, но благодаря этому у вас появляется преимущество: все сокращаемые через службу «Автоматора» ссылки будут сохраняться под вашей учетной записью на Bitly. К тому же Bitly, в отличие от Goo.gl, поддерживает родную «сокращалку» Facebook — on.fb.me. ;)

Зарегистрировавшись, перейдите страницу bitly.com/a/settings/advanced. Внизу щелкните на ссылке Show legacy API key и отметьте для себя текстовое поле Login — его содержимое вам скоро понадобится.

Теперь можно приступать к созданию службы в «Автоматоре». В готовом виде она выглядит так:

Служба Automator.

Как видите, это консольный bash-сценарий, который принимает на обработку выделенный в тексте текст (веб-ссылку) и заменяет его на сокращенный веб-адрес (все это определено в «шапке» процесса). Вот его полный текст:

encodedURL=$(echo -n "$1" | sed 's/ /%20/g;s/!/%21/g;s/"/%22/g;s/#/%23/g;s/$/%24/g;s/&/%26/g;s/'''/%27/g;s/(/%28/g;s/)/%29/g;s/:/%3A/g')
userID=<ID>
userPASS=<Пароль>

if [[ $encodedURL != http* ]];
then
    encodedURL="http://$encodedURL"
fi

accessToken=$( 
    curl "https://api-ssl.bitly.com/oauth/access_token" 
    --request "POST" 
    --user "$userID:$userPASS" 
)

curl "https://api-ssl.bitly.com/v3/shorten" 
    --data "access_token=${accessToken}" 
    --data "format=txt" 
    --data "longUrl=$encodedURL" 

Весь код можно разделить на три условные части:

  1. Сначала задаем три переменных: входящую веб-ссылку (с ASCII-преобразованием), а также ваши Bitly-идентификатор (помните, текстовое поле Login, о котором речь шла чуть выше?) и Bitly-пароль. Не забудьте вместо <ID> и <Пароль> подставить свои значения.
  2. Далее, используя переменные с идентификатором и паролем, через систему безопасности Bitly.com получаем так называемый маркер доступа.
  3. Наконец, используя сгенерированный маркер доступа, посредством консольной команды curl отправляем исходный веб-адрес и получаем ее сокращенный вариант, который Automator подставляет в текст.

Теперь остается только сохранить службу под удобным для вас названием — и проверить ее работоспособность в любом текстовом поле.

P. S. В комментариях к предыдущей статье о сокращении ссылок через Automator называется универсальная веб-служба Shrt.org.ua, которая значительно упрощает алгоритм и позволяет работать с любой из нескольких десятков веб-сокращалок безо всяких регистраций и аутентификаций. Однако поскольку этот проект поддерживается энтузиастами, в его работе случаются сбои — досадно, когда нужно быстро сократить ссылку, видеть сообщение о недоступности службы.

P. P. S. О том, что такое Automator и чем он полезен Мак-пользователям, всегда можно узнать из материала на «МакРадаре».

Добавлено: Читатель Евгений Степанищев, проходя мимо указал не неточности в изложенном выше коде сценария и предложил свой, более лаконичный и универсальный вариант. Сценарий Евгения подойдет всем, кто сталкивается в работе с веб-ссылками, содержащими в себе нелатинские символы (например, адреса с поисковыми запросами на русском языке, ссылки на русские статьи в «Википедии» и т. д.). Большое спасибо за участие.