PHPを使ってFQLに入門してみる(PHP Advent Calendar jp 2011 Day 13)

PHPを使ってFQLに入門してみる(PHP Advent Calendar jp 2011 Day 13)


facebook logo / marcopako 

PHP Advent Calendar jp 2011 13日目を担当します@redsnow_です
前日は@kashiokaさんの2.6公開間近!!Ethnaを5分でインストール | Love Tokyoになります

本日はFacebook Query Language (FQL)を使ってブログの人気記事を簡単に抽出する方法をお届けします

FQLとは

The FQL object enables running FQL queries using the Graph API. Facebook Query Language, or FQL, enables you to use a SQL-style interface to query the data exposed by the Graph API. It provides for some advanced features not available in the Graph API, including batching multiple queries into a single call.

facebookが独自に作ったGraph APIをSQL風に叩くインターフェースのことです
NOT句やORDER BY、LIMITも使えないのでそこをPHPで補って使います

使い方

~~~
SELECT url, normalized_url, share_count, like_count, comment_count, total_count,
commentsbox_count, comments_fbid, click_count FROM link_stat WHERE url=”facebook.com”
~~~
見ての通りまんまSQLですね、違うのはAPIを使って実行する部分になります

というわけで作ってみました

実行結果

~~~
Array
(
[0] => Array
(
[url] => https://nob-log.info/2011/01/25/ec-cube%e3%81%ab%e3%82%bd%e3%83%bc%e3%82%b7%e3%83%a3%e3%83%ab%e3%83%9c%e3%82%bf%e3%83%b3%e3%82%92%e7%b0%a1%e5%8d%98%e3%81%ab%e8%a8%ad%e7%bd%ae%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/
[like_count] => 19
)

[1] => Array
(
[url] => https://nob-log.info/2011/03/07/instagram-api%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%82%a4%e3%83%ad%e3%82%b9%e3%82%bf%e3%82%b0%e3%83%a9%e3%83%a0%e3%81%a8%e3%81%84%e3%81%86%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9%e3%82%92%e4%bd%9c/
[like_count] => 4
)

[2] => Array
(
[url] => https://nob-log.info/2011/01/21/ec-cube2-11-0-beta%e3%81%8c%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9%e3%81%95%e3%82%8c%e3%81%9f%e3%81%ae%e3%81%a7%e3%83%ac%e3%83%93%e3%83%a5%e3%83%bc%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/
[like_count] => 2
)

[3] => Array
(
[url] => https://nob-log.info/2011/01/15/%e3%83%96%e3%83%ad%e3%82%b0%e7%a7%bb%e8%bb%a2%e3%81%97%e3%81%be%e3%81%97%e3%81%9f%ef%bc%81%ef%bc%81/
[like_count] => 1
)

[4] => Array
(
[url] => https://nob-log.info/2011/01/17/%e7%9f%a5%e4%ba%ba%e3%81%ae%e3%81%95%e3%81%8f%e3%82%89vps%e3%81%8c%e4%b8%8d%e6%ad%a3%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%81%95%e3%82%8c%e3%81%9f%e3%82%88%e3%81%86%e3%81%aa%e3%81%ae%e3%81%a7/
[like_count] => 1
)

[5] => Array
(
[url] => https://nob-log.info/2011/01/18/%e3%81%95%e3%81%8f%e3%82%89vps%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e3%81%ae%e8%a8%ad%e5%ae%9a%e3%82%92%e3%82%b5%e3%83%9c%e3%81%a3%e3%81%9f%e3%82%89gmail%e3%81%ab%e5%b1%8a%e3%81%8b%e3%81%aa%e3%81%8b/
[like_count] => 1
)

[6] => Array
(
[url] => https://nob-log.info/2011/02/22/yum%e3%81%a7subversion%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/
[like_count] => 1
)

[7] => Array
(
[url] => https://nob-log.info/2011/03/31/earthquake-in-japan/
[like_count] => 1
)

[8] => Array
(
[url] => https://nob-log.info/2011/05/07/%e3%83%a2%e3%83%ab%e3%83%87%e3%82%a3%e3%83%96%e3%83%80%e3%82%a4%e3%83%93%e3%83%b3%e3%82%b0%e3%81%ae%e7%9b%ae%e6%ac%a1/
[like_count] => 1
)

)
~~~

  1. ブログの人気記事の抽出するのでgoogleのsitemap.xmlを解析してURL一覧を取得
  2. FQLを使ってlink_statをselect
  3. 結果をarray_multisortでlike順に並び替え
  4. array_sliceで10位までを表示する

人気の記事のURLとlike数は抽出できたので記事のタイトルと紐づけてあげれば、簡単にブログに人気記事を表示出来ちゃいます
→作ってみました、Facebook ランキング

PHPの記事になっているんだかよくわかりませんが、、、FQL便利\(^-^)/
明日は@msngさんになります、よろしくお願いします