Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

Сокращение ссылок через bit.ly из bash

На «Макрадаре» появилась статья про сокращение ссылок через bit.ly через «Автоматор», хорошая штука, иногда бывает нужно, когда кривой парсер какого-нибудь сайта не принимает какую-то ссылку, но сам скрипт (в примере «Автоматор» запускает его через «баш») мне не понравился.

Во-первых, в нём куча ошибок, во-вторых, мне не нравится идея хранить в скрипте пароль. На самом деле можно после регистрации на bit.ly зайти на специальный урл, и, после ввода своего пароля, получить специальный токен, который можно уже сохранить в скрипте.

Вот мой вариант:

TOKEN=<ваш токен, полученный по инструкции выше>
URL="$1"

[[ "$URL" =~ ^https?:// ]] || URL="http://$URL"

path="${URL#*//*/}"
host="${URL:0:${#URL}-${#path}}"
path=$(echo -n "$path" | hexdump -ve '1/1 "x%02X"' | tr x %)

curl 'https://api-ssl.bitly.com/v3/shorten' \
     --data "access_token=$TOKEN" \
     --data 'format=txt' \
     --data "longUrl=$host$path"
8 комментариев
Григорий 2014

Скажите где найти для goo.gl такой скрипт?

Евгений Степанищев (bolknote.ru) 2014

Комментарий для Григорий:

http://goggle.com/

kenzoev 2016

Комментарий для Евгения Степанищева:

Здравствуйте!

Евгений,
хочу воспользоваться Вашей наработкой,
да вот незадача,
https://www.dropbox.com/s/961mqnnl2h7v90c/Screenshot%202016-03-13%2012.46.09.png?dl=0
Процесс:
https://www.dropbox.com/s/m018yuadd9oizwd/Screenshot%202016-03-13%2012.46.39.png?dl=0

Помогите отладить, пожалуйста.

Евгений Степанищев (bolknote.ru) 2016

Комментарий для kenzoev:

Добрый вечер!

Вы запустите его «башем» (bash) из терминала, посмотрите на ошибку.

kenzoev 2016

Комментарий для Евгения Степанищева:

Вот чего пишет:

./bitly.sh http://bolknote.ru/all/3838#n46645
{ «data»: [ ], «status_code»: 500, «status_txt»: «MISSING_ARG_ACCESS_TOKEN» }./bitly.sh: line 13: -​-​data: command not found
./bitly.sh: line 14: -​-​data: command not found
./bitly.sh: line 15: -​-​data: command not found

kenzoev 2016

Комментарий для Евгения Степанищева:

Кажется разобрался. Вопрос был в аргументе -​-​data,
который начинался с новой строки.
Если записать этот аргумент без переноса на новую строку, все работает.
Спасибо за подсказку запуска из терминала.
И за этот замечательный скрипт :)

Евгений Степанищев (bolknote.ru) 2016

Комментарий для kenzoev:

Поправил скрипт. Обратные слеши куда-то пропали.

Boojin 2021

Здравствуйте!
Скрипт больше не работает, видимо, что-то обновилось у bitly.com
Помогите разораться.

Евгений Степанищев 2021

Восемь лет прошло, наверняка у них всё кардинально изменилось. Возьмите любую другую реализацию, наверняка их море в интернете, особенно на Пайтоне и под Ноду.