Сокращение ссылок через 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"
16 января 2013 14:11

Григорий (инкогнито)
17 мая 2014, 13:57

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

Евгений Степанищев (bolknote.ru)
17 мая 2014, 18:32, ответ предназначен Григорию

http://goggle.com/

kenzoev (инкогнито)
13 марта 2016, 14:04, ответ предназначен Евгений Степанищев (bolknote.ru):

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

Евгений,
хочу воспользоваться Вашей наработкой,
да вот незадача,
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 (bolknote.ru)
13 марта 2016, 20:14, ответ предназначен kenzoev

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

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

kenzoev (инкогнито)
13 марта 2016, 21:15, ответ предназначен bolknote.ru:

Вот чего пишет:
./bitly.sh http://bolknote.ru/2013/01/16/~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 (инкогнито)
13 марта 2016, 21:32, ответ предназначен bolknote.ru:

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

bolknote.ru (bolknote.ru)
14 марта 2016, 07:25, ответ предназначен kenzoev

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

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)