Лайфхакер
Лайфхакер
Лучшее
Рубрики
Рецепты
Подкасты
Сервисы
Колонки
Лучшее
Рубрики
Рецепты
Подкасты
Сервисы
Колонки
Сколько дней до лета
Новости
Здоровье
Спорт и фитнес
Покупки
Технологии
Отношения
Кино
Реклама
МакрадарСоветы
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

Лучшие предложения

Для дома и дачи: 10 лучших аккумуляторных шуруповёртов на любой кошелёк

Для дома и дачи: 10 лучших аккумуляторных шуруповёртов на любой кошелёк

У этих летних дышащих кроссовок от Li-Ning высокий рейтинг и хорошая цена

У этих летних дышащих кроссовок от Li-Ning высокий рейтинг и хорошая цена

Электрическая газонокосилка от Worx

Надо брать: электрическая газонокосилка от Worx со скидкой 56%

10 товаров с маркетплейсов, которые подарят радость на этой неделе

10 товаров с маркетплейсов, которые подарят радость на этой неделе

Nahodki AliExpress: samye interesnye i poleznye tovary nedeli

Находки AliExpress: самые интересные и полезные товары недели

10 пар хороших кроссовок с AliExpress дешевле 5 000 рублей

10 пар хороших кроссовок с AliExpress дешевле 5 000 рублей

Надо брать: разборный мангал с усиленной конструкцией со скидкой 59%

Надо брать: разборный мангал с усиленной конструкцией со скидкой 59%

Велосипед Stern Energy 29&quot;

Велосипед Stern Energy 29" отдают со скидкой 24% в «Спортмастере»

Это интересно
От доставки продуктов до тушения пожаров: как дроны помогают решать повседневные задачи

От доставки продуктов до тушения пожаров: как дроны помогают решать повседневные задачи

Семейный туризм без перегруза: как организовать отдых и куда поехать с детьми в России

Семейный туризм без перегруза: как организовать отдых и куда поехать с детьми в России

3 факта о работе собак-поводырей, которые вы наверняка не знали

3 факта о работе собак-проводников, которые вы наверняка не знали

Мас-рестлинг, хуреш и ещё 5 необычных национальных видов спорта России

Мас-рестлинг, хуреш и ещё 5 необычных национальных видов спорта России

Комментарии
Евгений Степанищев
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
9 мая
Ликбез
Советы
Классные способы отстирать шторы в стиральной машине и не испортить их
Классные способы отстирать шторы в стиральной машине и не испортить их
8 мая
«Горящая изба»
Советы
Я проверила 6 популярных лайфхаков с мицеллярной водой, и вот что работает на самом деле
Я проверила 6 популярных лайфхаков с мицеллярной водой, и вот что работает на самом деле
0
6 мая
Советы
Советы
Как сдерживать беспорядок в доме с помощью метода пяти вещей
Как сдерживать беспорядок в доме с помощью метода пяти вещей
0
25 апреля
Советы
Советы
7 бытовых вещей, которые стоит убрать подальше от детей и животных
7 бытовых вещей, которые стоит убрать подальше от детей и животных
0
20 апреля
Советы
Советы
Как выбрать моющий пылесос для небольшой квартиры: характеристики, на которые реально стоит смотреть
Как выбрать моющий пылесос для небольшой квартиры: характеристики, на которые реально стоит смотреть
17 апреля
«Горящая изба»
Советы
Как пользоваться моющим пылесосом правильно
Как пользоваться моющим пылесосом правильно
0
10 апреля
Ликбез
Советы
Отличные способы покрасить яйца на Пасху, которые работают из года в год
Отличные способы покрасить яйца на Пасху, которые работают из года в год
9 апреля
«Горящая изба»
Советы
В Азии обнаружили неизвестную популяцию древних людей, пережившую ледниковый период
В Азии обнаружили неизвестную популяцию древних людей, пережившую ледниковый период
0
6 апреля
Новости
Советы
Как пользоваться пипидастром
Как пользоваться пипидастром
0
3 апреля
Ликбез
Советы
Как это сделать: превратить упаковку «Золотого яблока» в полезные вещи для дома
Как это сделать: превратить упаковку «Золотого яблока» в полезные вещи для дома
0
2 апреля
Советы
Советы
18 вещей в доме, которые только зря занимают место. Большой чек-лист расхламления на весну
18 вещей в доме, которые только зря занимают место. Большой чек-лист расхламления на весну
1 апреля
«Горящая изба»
Советы
6 способов использовать лимонную кислоту в быту
6 способов использовать лимонную кислоту в быту
0
27 марта
Советы
Советы
Как найти квартиру мечты на Яндекс Недвижимости: 3 совета для общения с ИИ-помощником
Как найти квартиру мечты на Яндекс Недвижимости: 3 совета для общения с ИИ-помощником
0
26 марта
Советы
Советы
3 кухонных прибора, которые помогут прокачать ваши кулинарные способности
3 кухонных прибора, которые помогут прокачать ваши кулинарные способности
0
25 марта
Советы
Советы

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

Аватар автора комментария
Оксана Запевалова14 минут назад

0 / 0

Они очень простые) Ловите: – выбрать вакансию https://job.lifehacker.ru/ – оставить отклик и написать сопроводительное письмо – показать на собеседовании, чем можете быть полезны проекту, и выполнить тестовое – быть талантливым бриллиантиком!
После 300 отказов от рекрутеров девушка записала на видео «крик о помощи» — и нашла работу
Аватар автора комментария
Илья Батурин34 минуты назад

0 / 0

radiant defense советую
«Ты не пройдёшь!»: 20 лучших стратегий в жанре Tower Defense на Android
Аватар автора комментария
Sergey Gorovoy56 минут назад

0 / 0

Юл Бриннер - навсегда!
По «Миру Дикого Запада» выйдет новый фильм — от сценариста «Парка Юрского периода»
Аватар автора комментария
Dmitry Sizonov1 час назад

0 / 0

Да, потому что троллинг, к сожалению - не ваша сильная сторона.
Легендарный Антикитерский механизм «запустили» в симуляции — и он быстро сломался
5 причин купить моющий пылесос для мягкой мебели и ковров Tefal Clean It IZ5020F0

5 причин купить моющий пылесос для мягкой мебели и ковров Tefal Clean It IZ5020F0

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