A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。


テーマ:

Twitterが採用したことで一気にURL短縮サービスのシェアを奪い取ったbit.ly

Twitterのような短いメッセージを投稿するサービスでは、如何に余計な情報を含めないかが鍵となるわけですが、URLは元来非常に長いものが多く、それだけでTwitterの制限を超える場合もあったりします。


便利に使えるbit.lyなどのURL短縮サービスですが、元のURLが変換されているが故に、その先のサイトの情報がわからず、ユーザー心理としては不安を覚えることもあったりします。

bit.lyのサイトへ行けば、短縮前のURLやサイト情報がわかったりもするのですが、ここではbit.lyのAPIを利用して、短縮されたURL情報からダイレクトに元のURLを引っ張るためのPHPスクリプトを書いてみました。



bit.lyのAPI利用の前に


bit.lyのAPIを利用するためには、ユーザー登録が必要です。

サイト自体は英語ですが、「Sign Up」のメニューから簡単にユーザー登録できますので、利用する場合は事前に登録しておきましょう。


ユーザー登録が完了し、サイトへログインすると右上に「Account」メニューがあります。

そこから、APIを利用する際に必要なAPI KEYを入手できます。


A Day In The Boy’s Life-bitly-APIKEY


APIの利用法の詳細は、下記に情報があります。


bitly-api @ Google code



bit.lyを使ってURLを短縮する


まずは、コマンドラインから入力したURL情報を、bit.lyで短縮するPHPスクリプトからです。

PEARのHTTP/Clientを利用して書いています。


<?php

require_once "HTTP/Client.php";

$page = "shorten?version=2.0.1&format=xml&login=hoge&apiKey=YourAPIKey&longUrl=" . trim($argv[1]);

$client = new HTTP_Client();
$client->get("http://api.bit.ly/". $page );
$response = $client->currentResponse();
$body = mb_convert_encoding($response['body'], "EUC-JP","auto");

$xml = new SimpleXMLElement($body);

echo $xml->results->nodeKeyVal->shortUrl . "\n";

?>

$page変数内のloginとapiKeyパラメータは、自分で取得したユーザー名とAPI KEYを入力しましょう。

最後につけているlongUrlが、短縮する対象のURLで標準入力からの情報をセットしています。

また、結果はXMLで受け取っていますが、その他にjson形式で受け取ることも可能です。


API利用時の認証は、API KEYを用いる以外にユーザー名とログインパスワードを用いたBasic認証を利用する方法もあります。(後述)

利用法は、下記の通りです。


$ php bitly-s.php http://ameblo.jp/itboy/
http://bit.ly/FPBm6


bit.lyで短縮したURLの元ソースを表示する


今度は短縮したURLを元に戻すPHPスクリプトです。

先ほどとは違い、認証時にBasic認証を使っています。(意味は特にありません)


<?php

require_once "HTTP/Client.php";

$username = "hoge";
$password = "foo";

$shortURL = trim($argv[1]);

$page = "expand?version=2.0.1&format=xml&shortUrl=" . $shortURL;

$basic = array('Authorization'=>'Basic '.base64_encode($username.':'.$password));

$client = new HTTP_Client(null, $basic);

$client->get("http://api.bit.ly/". $page );
$response = $client->currentResponse();
$body = mb_convert_encoding($response['body'], "EUC-JP","auto");

$xml = new SimpleXMLElement($body);

$hash = preg_replace("/^\//", "", parse_url($shortURL, PHP_URL_PATH));

echo $xml->results->$hash->longUrl . "\n";

?>

返ってくるXMLオブジェクトのノード名の一部にbit.lyのURLのハッシュ情報が含まれているため、短縮したURL情報からそれを取り出しています。


使い方は、下記の通り。


$ php bitly-e.php http://bit.ly/FPBm6
http://ameblo.jp/itboy/

短縮URLが含まれる情報から元のサイト情報を引っ張ってきたい、と言う場合に利用してみてはいかがでしょうか。




いいね!した人  |  コメント(0)  |  リブログ(0)

itboyさんの読者になろう

ブログの更新情報が受け取れて、アクセスが簡単になります

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。