短縮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 のところで >&gt; と表示されてるかも.WordPress の SyntaxHighlighter Code というのを使ってるんだけど,このバグ困るなぁ.WordPress のエディタ上では > って書いてるのに…

API を調べて CURL で POST

まず使ってるサービスは短縮URL展開君.非常にシンプルなサービスでとても使いやすいと思う.Firefox で F12 キーを押して開発者ツールを表示して,このサイトの「展開」ボタンを押したときの挙動を見てみた.http://tenkai.idawef.com/tenkai というエンドポイントに POST をしていることが分かる.

開発者ツール

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

パラメータを確認

どんな POST を送ればいいことが分かったら curlPOST する方法を調べましょう.このページを参考に,次のようにすれば curlPOST ができることが分かる.

curl -XPOST -d 'token=abcdefg12345678' https://xxxxx

レスポンスを整形する

レスポンスも単純なので解析しやすい.レスポンスのHTMLの中で,展開後のURLはリンクに設定されてるので, grephref を 探してやればいい. しかしレスポンスの中には <a href='...'> が2つ含まれているので選ぶ必要がある.1つ目が欲しい展開後のURL.

シンプルなレスポンス

grep で複数ヒットするものがあったときに,指定番目のものを取り出すオプションがある.1番目が欲しければ -m1 とか,2番めが欲しければ -m2 とか書けば良い.今回は -m1 を使う.

最後に, grep で取ったままだとHTMLタグが含まれていて邪魔なので, sed を使ってタグを除去する.HTMLタグ除去はこのページを参考にした.

コメントを残す

%d