Лайфхакер
Лайфхакер
Лучшее
Новости
Жизнь
Рецепты
Здоровье
Кино
Технологии
Покупки
Лучшее
Новости
Жизнь
Рецепты
Здоровье
Кино
Технологии
Покупки
Куда поехать на выходные
Добрые новости
Стыдные вопросы
Есть мнение
Норм или стрём
Личный опыт
Объясняем за минуту
МакрадарСоветы
16 января 2013

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

Фото автора Alexander Zhurovich
Alexander Zhurovich

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 и чем он полезен Мак-пользователям, всегда можно узнать из материала на «МакРадаре».

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

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

Если нашли ошибку, выделите текст и нажмите Ctrl + Enter
Это интересно
3 причины, почему с дачи мы всегда возвращаемся с полным багажником

3 причины, почему с дачи мы всегда возвращаемся с полным багажником

Зачем проходить диспансеризацию и оплатит ли её работодатель

Зачем проходить диспансеризацию и оплатит ли её работодатель

Диспансеризация для женщин: всё, что нужно знать

Диспансеризация для женщин: всё, что нужно знать

«Неловко спросить». Вопросы о благотворительности, которые вы стеснялись задать

«Неловко спросить». Вопросы о благотворительности, которые вы стеснялись задать

Реклама
Комментарии
Авторизуйтесь, чтобы оставить комментарий
Евгений Степанищев
16.01.13 16:36
Мне кажется, неправильный способ экранирования. Вот этот лучше: xxd -p | sed 's/n//g;s/(..)/%1/g'
Alexander Zhurovich
16.01.13 16:49
Правильный, ибо работает. А вы свой проверили? Строку INVALID_URI не получаете?
Евгений Степанищев
16.01.13 22:16
Ну так кодируйте только нужную часть, а не всё вообще. Вы уверены, что у вас там всё работает? Китайские символы нормально придут, например? Вы кодируете не всё, что по стандарту положено, а только очень небольшой набор символов.
Alexander Zhurovich
16.01.13 22:18
Китайские? На китаеязычных читателей МакРадара я как-то не расчитывал. :( Но ваш вариант у меня не работает. Почему бы?
Евгений Степанищев
16.01.13 23:07
Я же объяснил почему: кодируйте только нужную часть URL, домен кодировать не нужно. Ну ок, не рассчитывали вы на китаеязычных читателей (хотя почему нужно быть китайцем, чтобы встретить в интернете URL на китайском — загадка). Но, вы свой-то пример запускали? Что со ссылками, которые начинаются с https? Зачем у вас первый доллар в строке №7? Почему в пятой строке у вас квадратные скобки не двойные? В одинарных у вас будет точное сравнение, а не по подсроке. Почему в первой строке у вас echo без -n, вы получите ещё и ненужный перевод строки. Идею с проверкой на существование переменной accessToken я не понял. Вероятно, я чего-то не знаю. Разве «автоматор» каждый раз не пускает новый шелл для каждого запуска команды? Разве переменные будут жить между сеансами?
Alexander Zhurovich
16.01.13 23:30
Евгений, я понял, что вы дока в баше. Давайте вы напишете правильный сценарий, а я его вставлю вместо своего — с благодарственной подписью.
Евгений Степанищев
17.01.13 08:50
Я вот такой написал: http://bolknote.ru/2013/01/16/~3838, но ваш он не заменит — я отказался от имени пользователя и пароля, может многие это посчитают вкусовщиной, но мне некомфортно, что у меня пароль внутри скрипта.
Alexander Zhurovich
17.01.13 10:32
О, спасибо. Конечно, ваш скрипт изящнее, виден большой опыт. Хотя он в гораздо большей степени для гиков, в нем интересно покопаться. Такой вопрос вдогонку: вы сначала советовали команду xxd, а потом решили воспользоваться командой hexdump. Почему?
Евгений Степанищев
17.01.13 13:10
Я как-то не сообразил, что мы про Мак говорим сначала, я обычно, когда предлагаю вариант, стараюсь, чтобы везде работало :) С hexdump работать проще, но он есть по-умолчанию, только в BSD-системах, xxd же, если мне не изменяет память, есть везде. А потом я сообразил, что это «Мак» и не к чему так извращаться :)
Alexander Zhurovich
17.01.13 14:32
Понятно. :) Еще раз спасибо за помощь. Теперь знаю, к кому обращаться за консультацией. А то Гугл временами не очень помогает с поиском ответов на вопросы.
Евгений Степанищев
17.01.13 15:28
Обращайтесь, если что :) У меня даже несколько игр на баше есть :)
Rostyslav Pelekhovych
16.01.13 17:48
возвращает "UNKNOWN_ERROR"
Alexander Zhurovich
16.01.13 18:41
Давайте анализировать, что вы не так сделали. 1. Зарегистрированы на Bitly.com? 2. Идентификатор вашей учетной записи правильно скопирован? 3. В код сценария нужные данные правильно вставлены (без треугольных скобок)?
fk
16.01.13 20:05
Возвращает INVALID_URl
Alexander Zhurovich
16.01.13 20:20
Тот же список вопросов и к вам (см. предыдущий комментарий). Сценарий работает, поэтому давайте определим, что из указанного в статье вы пропустили мимо внимания.
Alexander Zhurovich
16.01.13 20:22
К тому же ссылка должна содержать префикс http:// — иначе также будет выдано сообщение INVALID_URI. Добавлено: я дополнил сценарий конструкцией, которая добавляет этот префикс, если его не было. Если в этом была проблема, то теперь она должна быть устранена.
Что вы могли пропустить
Шестилетняя девочка из Китая установила рекорд по сборке кубика Рубика
Шестилетняя девочка из Китая установила рекорд по сборке кубика Рубика
0
25 сентября
Советы
Советы
Какой обогреватель для дома выбрать, чтобы не переплачивать по счетам
Какой обогреватель для дома выбрать, чтобы не переплачивать по счетам
15 сентября
«Горящая изба»
Советы
Съезжаем со съёмной квартиры: чек-лист уборки, которая поможет вернуть депозит
Съезжаем со съёмной квартиры: чек-лист уборки, которая поможет вернуть депозит
0
7 сентября
Советы
Советы
Что купить в первую очередь, если вы съезжаете от родителей
Что купить в первую очередь, если вы съезжаете от родителей
0
30 августа
Советы
Советы
Как сделать съёмную квартиру уютнее
Как сделать съёмную квартиру уютнее
0
18 июля
Советы
Советы
Как стирать постельное бельё, чтобы оно хрустело как в отеле
Как стирать постельное бельё, чтобы оно хрустело как в отеле
14 июля
«Горящая изба»
Советы
Чем смазать дверь, чтобы она не скрипела
Чем смазать дверь, чтобы она не скрипела
0
11 июля
Ликбез
Советы
Плачу на ретро: Collider выбрал 10 культовых фильмов 80‑х, о которых все забыли
Плачу на ретро: Collider выбрал 10 культовых фильмов 80‑х, о которых все забыли
0
24 июня
Кино
Новости
Что надо знать про ортопедическую подушку, чтобы спать сном младенца
Что надо знать про ортопедическую подушку, чтобы спать сном младенца
24 июня
«Горящая изба»
Советы
15 насекомых, которые живут с нами дома
15 насекомых, которые живут с нами дома
0
22 июня
Ликбез
Советы
Как избавиться от чешуйницы в квартире
Как избавиться от чешуйницы в квартире
0
11 июня
Ликбез
Советы
Какого специалиста вызвать, если в доме что-то сломалось
Какого специалиста вызвать, если в доме что-то сломалось
0
7 июня
Советы
Советы
15 бытовых устройств, которые выгоднее взять в аренду или купить совместно с друзьями 
15 бытовых устройств, которые выгоднее взять в аренду или купить совместно с друзьями 
0
26 мая
Советы
Советы
Как правильно мыть аэрогриль
Как правильно мыть аэрогриль
0
9 мая
Ликбез
Советы
Классные способы отстирать шторы в стиральной машине и не испортить их
Классные способы отстирать шторы в стиральной машине и не испортить их
8 мая
«Горящая изба»
Советы

Новые комментарии

Аватар автора комментария
Avan Soulse47 минут назад

0 / 0

Канадцы прям наделали шуму со своими хоррорами. А для меня К востоку от Эдема наиболее занимателен, был приятно удивлён увидеть его первым в списке 👍
15 сериалов октября, которые не стоит пропускать
Аватар автора комментария
Areaddna4 часа назад

0 / 0

Танцы это как новая жизнь, все воспринимается иначе и на позитивном уровне. Сама испытала такое когда начала заниматься k-pop в школе танцев Divadance divadance.ru
Почему вам обязательно стоит попробовать заняться танцами
Аватар автора комментария
Ivan Anatolyevich4 часа назад

0 / 0

Автор ничего тяжелее чле... авторучки в своих руках не держала и не в курсе, что у 2/3 китайского инструмента ни параметры силы, ни параметры батарей не соответствуют действительности, а порой часть ячеек просто наполнена песком...
Обновляем домашнюю мастерскую: 10 хороших инструментов с AliExpress
Аватар автора комментария
~ TAO5 часов назад

0 / 0

В таких статьях нужны фотографии...
Для работы и чила: ещё 9 дофаминовых гаджетов и аксессуаров
ИГРА: Снова в школу! Найдите всё, что пригодится для учёбы

ИГРА: Снова в школу! Найдите всё, что пригодится для учёбы

Лайфхакер
Информация
О проектеРубрикиРекламаРедакцияВакансииО компании
Подписка
TelegramВКонтактеTwitter (X)PinterestYouTubeИнициалRSS
Правила
Пользовательское соглашениеПолитика обработки персональных данныхПравила применения рекомендательных технологийПравила сообществаСогласие на обработку персональных данныхСогласие для рекламных рассылокСогласие для информационной программы
18+Копирование материалов запрещено.
Издание может получать комиссию от покупки товаров, представленных в публикациях