短縮URLをコマンドで展開 (Ubuntu)

コマンド
$ curl -XPOST -d 'q=source_URL' http://tenkai.idawef.com/tenkai | grep -m1 href | sed -e 's/<[^>]*>//g'
上記の source _URL
に目的の短縮されたURLを書く.例えばこんなふうに
$ curl -XPOST -d 'q=https://t.co/AmEc7sZyJV' http://tenkai.idawef.com/tenkai | grep -m1 href | sed -e 's/<[^>]*>//g'
ちょっと注意で,最後の sed
のところで >
が >
と表示されてるかも.WordPress の SyntaxHighlighter Code というのを使ってるんだけど,このバグ困るなぁ.WordPress のエディタ上では >
って書いてるのに…
API を調べて CURL で POST
まず使ってるサービスは短縮URL展開君.非常にシンプルなサービスでとても使いやすいと思う.Firefox で F12 キーを押して開発者ツールを表示して,このサイトの「展開」ボタンを押したときの挙動を見てみた.http://tenkai.idawef.com/tenkai
というエンドポイントに POST
をしていることが分かる.

何を POST
に乗せてるのかも見れば分かる.パラメータは q
というごくシンプルな名前の変数に展開したいURLを書き込んで送ってるね.

どんな POST
を送ればいいことが分かったら curl
で POST
する方法を調べましょう.このページを参考に,次のようにすれば curl
で POST
ができることが分かる.
curl -XPOST -d 'token=abcdefg12345678' https://xxxxx
レスポンスを整形する
レスポンスも単純なので解析しやすい.レスポンスのHTMLの中で,展開後のURLはリンクに設定されてるので, grep
で href
を 探してやればいい. しかしレスポンスの中には <a href='...'>
が2つ含まれているので選ぶ必要がある.1つ目が欲しい展開後のURL.

grep
で複数ヒットするものがあったときに,指定番目のものを取り出すオプションがある.1番目が欲しければ -m1
とか,2番めが欲しければ -m2
とか書けば良い.今回は -m1
を使う.
最後に, grep
で取ったままだとHTMLタグが含まれていて邪魔なので, sed
を使ってタグを除去する.HTMLタグ除去はこのページを参考にした.