Facebookã®ããããï¼ããã¿ã³ãæ¼ãããåæ°ãåå¾ããæ¹æ³
2011/09/15追è¨
æ¬ã¨ã³ããªã®å
容ã¯è¥å¹²å¤ããããç°¡åã«åå¾åºæ¥ãæ¹æ³ãå®è£
ããã¦ããããã§ãã詳ããã¯ä¸è¨ãåç
§ãã ããã
2011年9月版 Facebookの「いいね!」ボタンが押された回数を取得する方法 - でぶぬる日記
ââââââââ以ä¸ãå°ã å¤ãå 容ã§ãââââââââ
Facebookã®ããããï¼ããã¿ã³(Likeãã¿ã³)ãæ¼ãããåæ°ããããã°ã©ã ã§åå¾ããã«ã¯ã©ãããã°ãããï¼
ãããªè©±é¡ã«æ¥æ¬ã®èª°ãèå³ãæã¤ã®ãï¼ï¼ã¨ããæ ¹æ¬çãªçåã¯ãã¦ããã
http://developers.facebook.com/docs/api (è¦ãã°ã¤ã³)
ãããã¸ããè¦ã¦ããæ¸ãã¦ãããããªæ¸ãã¦ãªããããªæãã ã£ãã®ã§ã試è¡é¯èª¤ãã¦ã¿ã¾ããã
1. å¼·å¼ãªæ¹æ³
require 'open-uri' require 'nokogiri' def facebook_like_count(url) open("http://www.facebook.com/plugins/like.php?layout=button_count&show_faces=true&width=120&action=like&colorscheme=light&href=#{url}", "User-Agent" => "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6") do |html| Nokogiri::HTML.parse(html.read).search("div.connect_widget_button_count_count").text.to_i rescue -1 end end # p facebook_like_count("http://www.yahoo.co.jp/")
ã¯ããè¦ã¦ã®éãã§ããã
Likeãã¿ã³ã®å®ä½ã http://www.facebook.com/plugins/like.php ã«åå¨ãã¦ããï¼åãµã¤ãä¸ã«ã¯iframeã§åãè¾¼ãï¼ã®ã§ããã¿ã³ã®HTMLãã¹ã¯ã¬ã¤ãã³ã°ãã¦ãç¡çããæ°å¤ãåã£ã¦ãã¦ãã¾ãã
openã®å¼æ°ã«"User-Agent"ãä»ãã¦ããã®ã¯ãã¾ã¨ããªUAãä»å ããªãã¨facebook.comã§å¼¾ããã¦ãã¾ãçºã§ãã
ãããå¤å°ç¡çããã ãã©ããªãã ãããã§æºè¶³ï¼
ã¨ããããFacebookã®å©ç¨è¦ç´ããã¼ãèªãã§ã¿ãã¨ã
3.2 Facebookã¦ã¼ã¶ã¼ã®ã³ã³ãã³ãã¾ãã¯æ å ±ãåéãããã¨ã¯ã§ãã¾ãããã¾ããå¼ç¤¾ã®è¨±å¯ãå¾ããã¨ãªããèªååãããææ®µ(æ å ±åéãããããããããã¹ãã¤ãã¼ãã¹ã¯ã¬ã¼ãã¼ãªã©)ã使ç¨ãã¦ãFacebookã«ã¢ã¯ã»ã¹ãããã¨ã¯ã§ãã¾ããã
ãã®ããã°ã©ã ã ã¨è¦ç´ã«æµè§¦ãã¦ãã¾ãã¾ããæ²ãããã¨ã§ããã
2. æ£ããçã
以ä¸ã«æ£ããããæ¹ã説æããã¦ããã¾ããã
(a) ãFQL(Facebook Query Language)ãã¨ããSQLé¡ä¼¼ã®åãåããè¨èªã使ã£ã¦ã以ä¸ã®APIå¼ã³åºãã§æ å ±ãåå¾åºæ¥ãã
https://api.facebook.com/method/fql.query?query=#{ã¯ã¨ãª}
(b) å¤é¨ãªã³ã¯ã«å¯¾ããããããï¼ãã®æ å ±ã¯"link_stat"ã¨ããtableã«ã¢ã¯ã»ã¹ããã°ãããã¤ã¾ãFQLã§è¨è¿°ããã¨ã
select like_count, total_count, share_count, click_count
from link_stat
where url="#{調ã¹ããURL}"
ããã«å¾ããYahoo!JAPANã®ããããï¼ãã®æ°ãåãåããã¦ã¿ã¾ãã
<fql_query_response list="true"> <link_stat> <like_count>56</like_count> <total_count>605</total_count> <share_count>462</share_count> <click_count>5</click_count> </link_stat> </fql_query_response>
3. ããã£ã¦ã²ãã£ã¨ãã¦ã
ãFacebookã«ç»é²ããã¦ãLikeã®å
¨æ
å ±ãã¾ã¨ãã¦åå¾åºæ¥ãããããï¼ãã¨æ·¡ãæå¾
ãæ±ãã
https://api.facebook.com/method/fql.query?query=select%20like_count,%20total_count,%20share_count,%20click_count%20from%20link_stat
<error_response xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd"> <error_code>601</error_code> <error_msg>Parser error: unexpected end of query.</error_msg> <request_args list="true"> <arg> <key>method</key> <value>fql.query</value> </arg> <arg> <key>query</key> <value> select like_count, total_count, share_count, click_count from link_stat </value> </arg> </request_args> </error_response>
ææ³ã¨ã©ã¼ï¼whereå¥ãããã°ããã®ãï¼
https://api.facebook.com/method/fql.query?query=select%20like_count,%20total_count,%20share_count,%20click_count%20from%20link_stat%20where%201=1
<?xml version="1.0" encoding="UTF-8"?> <error_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd"> <error_code>604</error_code> <error_msg>Your statement is not indexable. The WHERE clause must contain an indexable column. Such columns are marked with * in the tables linked from http://wiki.developers.facebook.com/index.php/FQL_Tables </error_msg> <request_args list="true"> <arg> <key>method</key> <value>fql.query</value> </arg> <arg> <key>query</key> <value>select like_count, total_count, share_count, click_count from link_stat where 1=1</value> </arg> </request_args> </error_response>
çµè«ã¨ãã¦ã¯ã1ä»¶ãã¤ã®åå¾ãã許å¯ããã¦ãªãããã§ããæ®å¿µã