短縮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タグ除去はこのページを参考にした.
