Facebook のソーシャルカウント数を取得する

Facebook のソーシャルカウント数を取得する
Facebookのソーシャルカウント数を取得していた旧仕様が停止してしまったため、取得URLの変更をメモしたいと思います。

私は、HTTPリクエストを行ない、取得したXMLをパースして利用していましたが、新仕様ではURLの変更やJSON形式となってしまいました。


旧仕様では、以下のURLでHTTPリクエスト出来ました。
http://api.facebook.com/restserver.php?method=links.getStats&urls=[URL]

現在は、以下のURLで取得できます。
https://graph.facebook.com/?id=[URL]
Facebook developers 詳細


ご紹介しているこの記事だと、以下のURLで取得できます。
https://graph.facebook.com/?id=http://wispblog.tree-web.net/data/1/page_1_3756.html

うまく取得できると、Facebook向けのOpen Graph Protocol(OGP)で取得した情報、シェアカウント数、リクエストしたURLなどがJSONとして取得出来ます。
Facebook ソーシャルカウント
※ OGPの設定は、ページのHEAD内に事前に設定しておく必要があります。


私はPerlを利用していますが、JSONからシェア数を取得するには、正規表現を使うと取り出すことができます。
簡単ではりますが、ソースの一部をご紹介します。
my $comment_count;
my $share_count;
if($lines =~m/\"comment_count\"\:.*?(\d+?)/gc){
$comment_count = $1;
}
if($lines =~m/\"share_count\"\:.*?(\d+?)/gc){
$share_count = $1;
}
※ $lines には、取得したJSONの情報が代入されている必要があります。

これで、シェア数とコメント数がそれぞれ取得できます。
わたしは、それぞれを加算させた合計値を出力しています。
また、JSONに含まれる文字は、エンコードされているので、文字コードを気にせず取得できます。


こういう仕様変更とかサービスの停止は、API等を利用する上でしょうがないことですが、W3Cあたりで仕様を決めてくれると良いですね。
もしくは、バージョンアップしても旧仕様を使える状態にして欲しいと思う所です。
それと、Twitterはいつ「イイネ」の数を、対象ページのURLを投げたら取得出来るようにして欲しいですね。



□ 関連記事
「アイコン コンバータ」 緊急メンテナンスのお知らせ
HEADタグ内に「apple-touch-icon-precomposed」を設定してみました。
Facebookのシェアボタンが、正しく動作しない場合の対処メモ
新しい、はてなブックマークを設置しました。
FirefoxのアドオンNoScriptで、Facebookのシェアボタンを押すとXSSとして認識される件。
モバイルページに、ツイッターのツイートボタン、mixiのイイネ!ボタンを設置したメモ
ソーシャルリンク(ボタン) Google BuzzとGREE (Social Feedback)を追加しました。
Google +1とTwitterのフォローボタンを追加しました。
mixiやFacebook の likeとcheck/share のメモ
2016.08.22

コメント投稿フォーム