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

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

Настолько хорошие куртки и плащи, что про них пишут в отзывах целые&nbsp;книги

Настолько хорошие куртки и плащи, что про них пишут в отзывах целые книги

Chto podarit&#039; muzhchine na Novyj god: 120 interesnyh idej

Что подарить мужчине на Новый год: 120 интересных идей

Chto komanda Lajfhakera pokupaet na rasprodazhe 11.11

Что команда Лайфхакера покупает на распродаже 11.11

Надо брать: мини-ПК с Intel Core i7 со скидкой 61%

Надо брать: мини-ПК с Intel Core i7 со скидкой 61%

Утеплённые кроссовки от Baasploa, которые не подведут зимой

Утеплённые кроссовки от Baasploa, которые не подведут зимой

Эти товары быстро расхватают 11.11: добавляйте в корзину сейчас, чтобы урвать

Эти товары быстро расхватают 11.11: добавляйте в корзину сейчас, чтобы урвать

6 комплектов термобелья для защиты от проклятого холода

6 комплектов термобелья для защиты от проклятого холода

Механическая клавиатура Aula F75, которую купили 21 тысячу раз на AliExpress

Механическую клавиатуру Aula F75 отдают за полцены на AliExpress

Это интересно
Ребёнок в машине: 6 главных ошибок, которые допускают родители

Ребёнок в машине: 6 главных ошибок, которые допускают родители

Нейросети меняют рынок труда. Что нужно сделать сегодня, чтобы оставаться востребованным завтра

Нейросети меняют рынок труда. Что нужно сделать сегодня, чтобы оставаться востребованным завтра

Коля идёт на смену! Как проходит первый день новичка на складе Ozon&nbsp;

Коля идёт на смену! Как проходит первый день новичка на складе Ozon 

7 фактов о детском пюре «ФрутоНяня», которые стоит знать родителям

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
11:00
Ликбез
Советы
«Трикладушку» Galaxy Z TriFold от Samsung впервые показали на видео
«Трикладушку» Galaxy Z TriFold от Samsung впервые показали на видео
0
6 ноября
Новости
Советы
Как почистить кулер для воды в домашних условиях
Как почистить кулер для воды в домашних условиях
0
2 ноября
Ликбез
Советы
Правда ли контейнер пылесоса надо чистить сразу после уборки
Правда ли контейнер пылесоса надо чистить сразу после уборки
0
25 октября
Советы
Советы
Как отличить хрусталь от стекла
Как отличить хрусталь от стекла
0
24 октября
Ликбез
Советы
Как избавиться от запаха канализации
Как избавиться от запаха канализации
0
18 октября
Ликбез
Советы
3 вопроса, чтобы расхламить шкаф с одеждой без лишних усилий
3 вопроса, чтобы расхламить шкаф с одеждой без лишних усилий
0
12 октября
Советы
Советы
Нейлон или полиэстер — что лучше для куртки
Нейлон или полиэстер — что лучше для куртки
0
11 октября
Ликбез
Советы
Как это сделать: научить ребёнка говорить «нет» незнакомцам в интернете
Как это сделать: научить ребёнка говорить «нет» незнакомцам в интернете
0
7 октября
Советы
Советы
Как выбрать одеяло для комфортного сна
Как выбрать одеяло для комфортного сна
0
4 октября
Ликбез
Советы
Где растёт клюква и когда её собирать
Где растёт клюква и когда её собирать
0
30 сентября
Ликбез
Советы
Как защитить ребёнка в интернете: 3 совета для дальновидных родителей
Как защитить ребёнка в интернете: 3 совета для дальновидных родителей
0
30 сентября
Советы
Советы
Apple объяснила царапины на iPhone 17 Pro: это не дефект, а следы от MagSafe-стойки
Apple объяснила царапины на iPhone 17 Pro: это не дефект, а следы от MagSafe-стойки
0
25 сентября
Новости
Советы
Чем отмыть руки от грецкого ореха
Чем отмыть руки от грецкого ореха
0
23 сентября
Ликбез
Советы
О чём стоит знать до рождения ребёнка? Рассказывают опытные родители
О чём стоит знать до рождения ребёнка? Рассказывают опытные родители
0
17 сентября
Советы
Советы

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

Аватар автора комментария
Алексей Хромов3 минуты назад

0 / 0

Другой фильм на другую тему от другого режиссёра? Ну да
Во-первых, это красиво. Почему вам стоит посмотреть «Франкенштейна» Гильермо дель Торо
Аватар автора комментария
Петя Иванов20 минут назад

0 / 0

Рассматриваю подобное, чтобы можно было в пути из любой точки делать свою работу. Но Intel N150, ну камон) ГПД сильно дороже, но там и задачи можно решать любые. А зачем нужно это, хз.
Альтернатива ноутбуку и планшету: представлен карманный ПК OmniOne 5.7 с сенсорным дисплеем
Аватар автора комментария
Valeriy24 минуты назад

0 / 0

Да: хрущениал - брежневиал - горбаль - кравчукиал - дважды кучмениал - ни разу не ющениал - потом извените янукиал - не любил но порохиал - ни секундочки хотя сериальчик зачотный ЗЕЛЕНИАЛ - ???
Финансовые привычки миллениалов, которые стоит перенять зумерам (и наоборот)
Аватар автора комментария
Valeriy47 минут назад

0 / 0

неплохая статья ИМХО... А Я 62-ГО ГОДА - тогда кто я? Хрущениал что ли ;-)
Финансовые привычки миллениалов, которые стоит перенять зумерам (и наоборот)
Задача — дойти до школы самому: как подготовить ребёнка и убедиться, что всё будет в порядке&nbsp;

Задача — дойти до школы самому: как подготовить ребёнка и убедиться, что всё будет в порядке  

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