Сокращение ссылок через 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"

Комментарии 9

Григорий № 1
Скажите где найти для goo.gl такой скрипт?
Евгений Степанищев (bolknote.ru) автор № 2
kenzoev № 3
Здравствуйте!

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

Помогите отладить, пожалуйста.
Евгений Степанищев (bolknote.ru) автор № 4
Добрый вечер!

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

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

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

./bitly.sh /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 № 6
Комментарий для Евгения Степанищева:

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

Поправил скрипт. Обратные слеши куда-то пропали.
Boojin № 8
Здравствуйте!
Скрипт больше не работает, видимо, что-то обновилось у bitly.com
Помогите разораться.
Евгений Степанищев автор № 9
Восемь лет прошло, наверняка у них всё кардинально изменилось. Возьмите любую другую реализацию, наверняка их море в интернете, особенно на Пайтоне и под Ноду.