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

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

Эта куртка от российского производителя — самое то для нашей зимы

Эта куртка от российского производителя — самое то для нашей зимы

Машинка для удаления катышков

Спасаем вещи машинкой для удаления катышков с восторженными отзывами

Nahodki AliExpress: samye interesnye i poleznye tovary nedeli

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

10 инструментов, которые значительно подешевели на AliExpress в январе

10 инструментов, которые значительно подешевели на AliExpress в январе

11 уютных платьев для суровой зимы

11 уютных платьев для суровой зимы

15 товаров дешевле 1 000 рублей, которые нравятся покупателям на AliExpress

15 товаров дешевле 1 000 рублей, которые нравятся покупателям на AliExpress

Самый популярный мультитул на AliExpress отдают со скидкой 50%

Самый популярный мультитул на AliExpress отдают со скидкой 50%

Недорогой трёхканальный видеорегистратор стал ещё дешевле на AliExpress

Недорогой трёхканальный видеорегистратор с AliExpress стал ещё дешевле

Это интересно
3 главных мифа о работниках старшего поколения 

3 главных мифа о работниках старшего поколения 

Мой особенный друг: как взять из приюта питомца с особыми потребностями и не пожалеть

Мой особенный друг: как взять из приюта питомца с особыми потребностями и не пожалеть

Что такое «Редуксин Форте» и как он работает

Что такое «Редуксин Форте» и как он работает

Где в России покататься на коньках

Самый большой или самый длинный? 7 главных катков России

Комментарии
Евгений Степанищев
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
24 января
Советы
Советы
Как отстирать гуашь с одежды
Как отстирать гуашь с одежды
0
19 января
Ликбез
Советы
Почему запотевают очки и как это исправить
Почему запотевают очки и как это исправить
0
18 января
Советы
Советы
Как убрать клей и суперклей с одежды, рук и других поверхностей
Как убрать клей и суперклей с одежды, рук и других поверхностей
0
13 января
Ликбез
Советы
Как склеить пазлы, чтобы повесить их на стену
Как склеить пазлы, чтобы повесить их на стену
0
8 января
Ликбез
Советы
Как открыть шампанское голыми руками и не только
Как открыть шампанское голыми руками и не только
0
28 декабря 2025
Ликбез
Советы
Сеть центров «Небо» запустила первую в России фиджитал-платформу для детей и подростков
Сеть центров «Небо» запустила первую в России фиджитал-платформу для детей и подростков
0
25 декабря 2025
Пресс-релизы
Советы
8 правил уборки, которые можно нарушать
8 правил уборки, которые можно нарушать
0
20 декабря 2025
Советы
Советы
Как подобрать шапку по форме лица
Как подобрать шапку по форме лица
0
11 декабря 2025
Как выбрать
Покупки
Как красиво сложить салфетки на праздничный стол
Как красиво сложить салфетки на праздничный стол
0
5 декабря 2025
Ликбез
Советы
И дом цел, и кошка счастлива. Как сделать жильё комфортным и безопасным для питомца
И дом цел, и кошка счастлива. Как сделать жильё комфортным и безопасным для питомца
0
22 ноября 2025
Советы
Советы
Какую гирлянду выбрать для дома и улицы
Какую гирлянду выбрать для дома и улицы
0
16 ноября 2025
Ликбез
Советы
Слепота к беспорядку: почему мы не замечаем бардак в доме и как это исправить
Слепота к беспорядку: почему мы не замечаем бардак в доме и как это исправить
0
15 ноября 2025
Советы
Советы
5 советов, как сделать прихожую удобной и стильной
5 советов, как сделать прихожую удобной и стильной
0
11 ноября 2025
Колонка
Советы
Как почистить латунь
Как почистить латунь
0
8 ноября 2025
Ликбез
Советы

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

Аватар автора комментария
Fedos Matros25 минут назад

0 / 0

Чт о б ы ч то что бы что штобы што
Создатель криптовалюты Ethereum Виталик Бутерин назвал приложения, которыми заменил сервисы Google
Аватар автора комментария
Alexander31 минуту назад

0 / 0

когда от конфиденциальности ваших данных будут зависеть миллионы долларов - поймёте.
Создатель криптовалюты Ethereum Виталик Бутерин назвал приложения, которыми заменил сервисы Google
Аватар автора комментария
Анастасия Наумцева49 минут назад

0 / 0

Была уверена, что не смотрела этот мультфильм, пока не включила трейлер
Почему «Принца Египта» интересно смотреть до сих пор
Аватар автора комментария
Алексей Михайлов2 часа назад

0 / 0

Правильно. Отеческая забота - она такая... Лучше уж вообще без нее. Спокойнее.
Большинство россиян удовлетворены мерами поддержки семей с детьми
Добро пожаловать в научную фантастику! Как технологии меняют современные компании и жизнь их клиентов

Добро пожаловать в научную фантастику! Как технологии меняют современные компании и жизнь их клиентов

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