小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


Facebookのいいね!数を画像付きで取得するAPIをつくってみたよ。

はじめに

Facebookのいいね!数を画像つきで取得するAPIみたいなものを作ってみました。
Facebookのいいね!はFacebookが用意しているAPIからそのカウントを取得できるのですが、数値しか取得できないので、PHPのImage関数を使って、あらかじめ用意したいいね!のイメージにカウントを書き足して出力しています。

Facebookのいいね!数を取得する

Facebookのいいね!数を取得するには、以下のサイトが参考になります。

具体的には、PHPで以下のコードを書くといいね!のカウントが取得できます。

$like_xml_uri = 'http://api.facebook.com/method/fql.query?query=select+total%5Fcount+from+link%5Fstat+where+url%3D%22'.rawurlencode(対象のURL).'%22';
$result = file_get_contents( $like_xml_uri );
$like_xml = simplexml_load_string($result);
$iine = (string)$like_xml->link_stat->total_count;
用意した画像にいいね!数を書き足す

1.次のようなカウント部分が空白の画像を用意します。これは以下のサイトから画像を取得してきて、ペイントソフトでちょこっと修正して作成したものです。

2.この画像をPHPのイメージ関数で読み込んで、いいね!の数を書き足していきます。

// 画像の新規作成
$img = imagecreatefromgif("./f_like_count.gif");
// 色の作成(文字)
$col = imagecolorallocate($img, 77, 51, 51);
// 文字を書く
imagestring($img, 2, 80, 3, $iine, $col);
// 画像出力
imagepng($img);

3. いいね!の数が0の場合には1×1pxの透過gifを出力するようにしています。

if($iine == 0) {
  print base64_decode('R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');
  return false;
}
APIの全体ソース

エラー処理とかないですが、こんな感じです。

<?php

$sample_url = $_GET['URL'];
 
// いいね!数の取得
$like_xml_uri = 'http://api.facebook.com/method/fql.query?query=select+total%5Fcount+from+link%5Fstat+where+url%3D%22'.rawurlencode($sample_url).'%22';
$result = file_get_contents( $like_xml_uri );
$like_xml = simplexml_load_string($result);

// ヘッダの指定
header("Content-type: image/gif");
header("Cache-control: no-cache"); 

// いいね!数を取得する
$iine = (string)$like_xml->link_stat->total_count;
// いいね!数が0なら、1×1の透過gifを出力して終了
if($iine == 0) {
  print base64_decode('R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');
  return false;
}
// 文字数によってスペースで埋める
switch(mb_strlen($iine)) {
  case 1: $iine = "  " . $iine;
          break;
  case 2: $iine = " " . $iine;
          break;
}

// 画像の新規作成
$img = imagecreatefromgif("./f_like_count.gif");
// 色の作成(文字)
$col = imagecolorallocate($img, 77, 51, 51);
// 文字を書く
imagestring($img, 2, 80, 3, $iine, $col);
// 画像出力
imagepng($img);
// 画像の消去(メモリの解放)
imagedestroy($img);
?>
使い方

以下のURLにアクセスして、URLパラメタに対象のURLを指定すると画像が表示できます。

こんな感じで出力されます。数字部分のフォントがちょっと似ていない。

ツイッターの超プロが教える Facebook仕事術
樺沢紫苑
サンマーク出版
売り上げランキング: 2834