Get Facebook “Like” count for every page on my dom

2019-01-16 05:42发布

I have integrated the Facebook "Like" button into a lot of pages in my site. I want to display the most "Liked" pages on my site in a list, but I can't figure out how to get that data from Facebook in one request. So far, I have been able to get the "Like" count for individual pages using the following FQL query:

SELECT share_count, like_count, comment_count, total_count
FROM link_stat
WHERE url="http://www.mysite.com/some-page"

However, getting the count for each page on my site one at a time is not really feasible. Aside from having a large number of pages, new pages are being created constantly (new user profiles, new blogs and blog articles, etc), which would make getting complete statistics for my site a complicated process and would involve calling Facebook's API thousands of times.

Is there a way to get a count of how many times each page on my domain has been "Liked" in one request? Or just the top 10 most "Liked" pages, or something similar?

8条回答
Viruses.
2楼-- · 2019-01-16 05:50

Apparently there's no 'LIKE' in FQL. Which was my first suggestion..

Though you can use the "IN" operator, like so:

SELECT share_count, like_count, comment_count, total_count
FROM link_stat
WHERE "http://www.mysite.com/" IN url
ORDER BY like_count
LIMIT 10;

查看更多
淡お忘
3楼-- · 2019-01-16 06:00

In continuation to Salil's answer, here are the some of the major APIs sharedcount.com are using (full list here: http://sharedcount.com/documentation.php)

You can use sharedcount's API to get a general summary, or write something yourself using the APIs:

查看更多
够拽才男人
4楼-- · 2019-01-16 06:03

If you just need the count from every page, Super Social Media Tracker could provide that.

http://apps.microsoft.com/windows/en-US/app/super-social-media-tracker/a56c8971-42e2-4eb4-9b05-7e52233b4e1e

But it's slow for massive pages.

查看更多
放荡不羁爱自由
5楼-- · 2019-01-16 06:07

Maybe you can just query the number of likes for each page each time the page is viewed. This won't be precise, but keeping in mind that the most popular pages will be viewed more often it might be good enough.

Additionally, you can use a batch process to query the number of likes of all the page or at least the top N last created ones every couple of hours. Most of the time you won't get the correct result, but in most cases your users don't need the correct result but a good enough approximation.

查看更多
成全新的幸福
6楼-- · 2019-01-16 06:13

After some looking around, we may be better off using FQL with graph API:

http://graph.facebook.com/fql?q=select%20comment_count%2C%20share_count%2C%20like_count%20from%20link_stat%20where%20url%20%3D%20%22http%3A%2F%2Fmashable.com%2F2013%2F01%2F30%2Ffacebook-twitter-blackberry-10%2F%22

Results are

{
   "data": [
      {
         "comment_count": 3,
         "share_count": 91,
         "like_count": 5
      }
   ]
}
查看更多
够拽才男人
7楼-- · 2019-01-16 06:14

Actually I would do it this way:

$arrayOfPages = array('url1', 'url2', 'url3');

$listOfPages = implode(',', $arrayOfPages);

SELECT share_count, like_count, comment_count, total_count, url
FROM link_stat
WHERE url IN ($listOfPages)

That would give you all the data with the URL as a unique identifier without having to break Facebook's policy against fake users. You can dynamically create the $arrayOfPages variable from a query on your site's database.

查看更多
登录 后发表回答