Services_ShortURL_Googl作った
先日、GoogleがGoogleツールバーなどから利用するURL短縮サービス(Google URL Shortener)をリリースしたわけですが、Perl界隈では早速Yappoさんがモジュールを書かれた模様。
GitHubのソースを見てみると、何じゃこの演算は。。。で、調べてみると、
http://goo.gl/ ってのが巷では始まっていますが、まだ勝手に tinyurl を作れないようなので
簡単に http://goo.gl/hoge な tinyurl を作る WWW::Shorten::Google ってモジュールを書きました。http://github.com/yappo/p5-WWW-Shorten-Google
CPAN には、各種 tinyurl を使って url を短くするための統一インタフェイスとして WWW::Shorten ってのがあるので、それの流儀にしたがって作りました。
あーなるほどー。ということで、
goo.gl短縮URLを作るための、APIは公開されていないのだが、Google Toolbarのxpiファイルをunzipし、lib/toolbar.js というファイルを読むと getUrlShorteningRequestParams_ という関数が見付かる。これが、Google URL Shortenerに投げるPOSTデータを生成している。
$ wget http://dl.google.com/firefox/google-toolbar-beta-win.xpi $ unzip google-toolbar-beta-win.xpi $ grep em:version install.rdf <em:version>7.0.20091214Wb1</em:version> $ cd lib $
して、toolbar,jsを確認。おお。。。なるほどなるほど。この部分を他の言語に置き換えれば、Perl版だろうがPHP版だろうが作れそうな感じ。
ということで、Services_ShortURL_Googl作りました。"Google"じゃなくて"Googl"です。モノはopenpear.orgに上げてあります。
インストールは
$ sudo pear channel-discover openpear.org
$ sudo pear install -a openpear/Services_ShortURL_Googl-alpha
$
な感じで。PEAR::Services_ShortURLパッケージのサブパッケージ的な位置づけで作ってますので、当然PEAR::Services_ShortURLは必須です。また、goo.glのレスポンスがjson形式のため、これを処理するためにjson拡張に依存しています。ということで、PHP5.2.0以上に対応ということで;-)
使い方は、SVNリポジトリにあるsample.phpのような感じ。
<?php require_once "Services/ShortURL/Googl.php"; /** * Services_ShortURLパッケージに組み込まれれば、 * Services_ShortURL::factoryメソッドを使うように * なるハズ * * $obj = Services_ShortURL::factory('Googl'); */ $obj = new Services_ShortURL_Googl(); try { $result = $obj->shorten('http://d.hatena.ne.jp/shimooka/'); echo $result . PHP_EOL; echo $obj->expand($result) . PHP_EOL; } catch (Exception $e) { echo $e->getMessage() . PHP_EOL; exit; }
このスクリプトの出力は、
$ php sample.php http://goo.gl/BuQj http://d.hatena.ne.jp/shimooka/ $
のようになります。
折角なので、Date_Holidays_Japanの時のようにPEAR本家に提案してみる予定。
このパッケージを作るに当たり、Yappoさんの公開されたコードを参考にさせてもらいました。ありがとうございました:-)