Лайфхакер
Лайфхакер
Лучшее
Новости
Жизнь
Рецепты
Здоровье
Кино
Технологии
Покупки
Лучшее
Новости
Жизнь
Рецепты
Здоровье
Кино
Технологии
Покупки
Куда поехать на выходные
Распродажа 11.11
✍️ Написать
Добрые новости
Есть мнение
Норм или стрём
Личный опыт
Объясняем за минуту
МакрадарСоветы
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
Это интересно
Обзор TCL TAB A1 Plus NXTPAPER — нового планшета c «бумажным» экраном для работы и развлечений

Обзор TCL TAB A1 Plus NXTPAPER — нового планшета c «бумажным» экраном для работы и развлечений

Реклама
Няня и социальный контракт: что нужно знать о господдержке многодетных семей в 2026 году  

Няня и социальный контракт: что нужно знать о господдержке многодетных семей в 2026 году  

Не Питером единым: 10 мест в Ленобласти, которые стоит посетить 

Не Питером единым: 10 мест в Ленобласти, которые стоит посетить 

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. Добавлено: я дополнил сценарий конструкцией, которая добавляет этот префикс, если его не было. Если в этом была проблема, то теперь она должна быть устранена.
Что вы могли пропустить
OnePlus раскрыла точные даты выхода Android 17 на некоторых устройствах
OnePlus раскрыла точные даты выхода Android 17 на некоторых устройствах
0
6 ноября
Советы
Советы
3 способа аккуратно сложить простыню на резинке
3 способа аккуратно сложить простыню на резинке
4 ноября
«Горящая изба»
Советы
Астрономы обнаружили крупный ледяной объект за Плутоном
Астрономы обнаружили крупный ледяной объект за Плутоном
0
30 октября
Новости
Советы
Как заточить нож дома, чтобы он резал даже помидоры
Как заточить нож дома, чтобы он резал даже помидоры
28 октября
«Горящая изба»
Советы
Как выбрать кухонный нож: 3 совета от Samura
Как выбрать кухонный нож: 3 совета от Samura
0
27 октября
Советы
Советы
Экологичность на автопилоте: как заботиться о природе, если у вас мало времени
Экологичность на автопилоте: как заботиться о природе, если у вас мало времени
0
26 октября
Советы
Советы
Пока ждёте GTA 6: 30 игр на PS5 для двоих
Пока ждёте GTA 6: 30 игр на PS5 для двоих
0
25 октября
Советы
Советы
«Крёстные отцы ИИ» и 400 учёных потребовали запереть мощные нейросети в «песочницах»
«Крёстные отцы ИИ» и 400 учёных потребовали запереть мощные нейросети в «песочницах»
0
15 октября
Новости
Советы
Смартфоны Samsung могут получить Galaxy OS — новую оболочку на базе ИИ
Смартфоны Samsung могут получить Galaxy OS — новую оболочку на базе ИИ
0
14 октября
Советы
Советы
5 простых способов почистить чайник от накипи
5 простых способов почистить чайник от накипи
13 октября
«Горящая изба»
Советы
Как постирать куртку в стиральной машине и не испортить вещь
Как постирать куртку в стиральной машине и не испортить вещь
9 октября
«Горящая изба»
Советы
Как прочистить унитаз от засора
Как прочистить унитаз от засора
0
28 сентября
Ликбез
Советы
Шестилетняя девочка из Китая установила рекорд по сборке кубика Рубика
Шестилетняя девочка из Китая установила рекорд по сборке кубика Рубика
0
25 сентября
Советы
Советы
Какой обогреватель для дома выбрать, чтобы не переплачивать по счетам
Какой обогреватель для дома выбрать, чтобы не переплачивать по счетам
15 сентября
«Горящая изба»
Советы
Съезжаем со съёмной квартиры: чек-лист уборки, которая поможет вернуть депозит
Съезжаем со съёмной квартиры: чек-лист уборки, которая поможет вернуть депозит
0
7 сентября
Советы
Советы

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

Аватар автора комментария
Антон Хохлов1 час назад

0 / 0

Разбежавшись прыгну со скалы Вот я был и вот меня не стало И когда об этом вдруг узнаешь ты Тогда поймешь кого ты потеряла. Из песни слов не выкинешь, я скорее отношусь к песням, как к произведению, а не как призыв к действию. Автор делится переживаниями через песни, не все переживания нам близки. Поп-музыка и поэзия строятся на гиперболах и драме, потому что спокойные, здоровые отношения редко становятся основой для ярких хитов.
10 токсичных цитат из песен о любви, которые только кажутся романтичными
Аватар автора комментария
Алексей Хромов2 часа назад

+1 / 0

Изображение
10 токсичных цитат из песен о любви, которые только кажутся романтичными
Аватар автора комментария
Наталья Копылова2 часа назад

0 / 0

видимо, что-то от сильного шторма до урагана
10 токсичных цитат из песен о любви, которые только кажутся романтичными
Аватар автора комментария
Наталья Копылова2 часа назад

0 / 0

Чем больше тут в ветке комментариев, тем я больше верю этому человеку: единственная причина ходить с ним на свидания - пожрать. Конечно, это надо очень проголодаться... Но у людей разные обстоятельства бывают.
Вместо флирта — игра в «Сапёра»: как онлайн-знакомства превратили первые свидания в поле битвы
Что в сумке? Как изменилось то, что мы носим с собой

Что в сумке? Как изменилось то, что мы носим с собой

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