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

5 ИИ-навыков, которые работодатели ждут от кандидатов

Поваренная книга донора. 15 простых и полезных рецептов, которые поддержат организм до и после сдачи крови

Поваренная книга донора. 15 простых и полезных рецептов, которые поддержат организм до и после сдачи крови

Косметический ремонт за выходные: 6 вещей в квартире, которые можно обновить без грязи и пыли

Косметический ремонт за выходные: 6 вещей в квартире, которые можно обновить без грязи и пыли

Большая батарея, мощное железо и яркий экран: делимся впечатлениями о новом iQOO Z11

Большая батарея, мощное железо и яркий экран: делимся впечатлениями о новом iQOO Z11

Реклама
Комментарии
Евгений Степанищев
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
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 мая
«Горящая изба»
Советы
Я проверила 6 популярных лайфхаков с мицеллярной водой, и вот что работает на самом деле
Я проверила 6 популярных лайфхаков с мицеллярной водой, и вот что работает на самом деле
0
6 мая
Советы
Советы
Как сдерживать беспорядок в доме с помощью метода пяти вещей
Как сдерживать беспорядок в доме с помощью метода пяти вещей
0
25 апреля
Советы
Советы
7 бытовых вещей, которые стоит убрать подальше от детей и животных
7 бытовых вещей, которые стоит убрать подальше от детей и животных
0
20 апреля
Советы
Советы
Как выбрать моющий пылесос для небольшой квартиры: характеристики, на которые реально стоит смотреть
Как выбрать моющий пылесос для небольшой квартиры: характеристики, на которые реально стоит смотреть
17 апреля
«Горящая изба»
Советы

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

Аватар автора комментария
Amina Markova2 часа назад

0 / 0

Получилось очень вкусно: насыщенный вкус. Большое спасибо за рецепт
Ужин за 20 минут: аппетитная гречка с сосисками на сковороде
Аватар автора комментария
Dmitry Sizonov3 часа назад

0 / 0

У меня есть гораздо более старый FE. Очень приятный телефон. Но вот я прочитал новость, за модель с 128 Гб эта цена - лютый оверпрайс. Да и вообще это мало, очень мало. То ли ситуация на рынке памяти настолько плоха, то ли Samsung совсем жмотится. Но за эти деньги покупать так мало памяти - неразумно.
Смартфон Samsung Galaxy S26 FE показали на качественных рендерах
Аватар автора комментария
Dmitry Sizonov3 часа назад

0 / 0

Я вам сейчас открою одно явление, о котором вы, конечно, даже не задумывались. Вы смотрите на экран телефона только когда он горит. Поэтому, как бы он ни был заляпан (а сколько-то заляпан он почти всегда), вы этого не замечаете. И чем же отличается регистратор-зеркало от телефона? А тем, что его экран под стеклом почти всегда выключен. И поэтому вы все отпечатки будете наблюдать практически всегда. Если вам нравится натирать зеркало заднего вида тряпкой после каждого тычка - я вас не отговариваю.
Надо брать: сенсорный видеорегистратор-зеркало с камерой заднего вида
Аватар автора комментария
Veyla 8884 часа назад

0 / 0

Почему не "Люблю тебя, чувак" 2009г?
Журналисты выбрали 25 лучших фильмов о мужской дружбе
Поваренная книга донора. 15 простых и полезных рецептов, которые поддержат организм до и после сдачи крови

Поваренная книга донора. 15 простых и полезных рецептов, которые поддержат организм до и после сдачи крови

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