Я хотел бы использовать любой из доступных API-интерфейсов facebook, в идеале FQL, чтобы получить общее количество всех понравившихся и комментариев ко всем объектам на определенной странице facebook. Это возможно?
Так, например:
Если на странице X есть 10 должностей, у каждого сообщения 10 комментариев и 20 комментариев, общее число, которое я собираюсь сделать: 10 * 10 + 20 * 10 = 300.
Кроме того, на странице могут быть другие объекты, такие как фотографии, видео, которые также могут содержать дополнительные симпатии и комментарии, которые также должны увеличивать общее значение.
Решение Мэтью довольно хорошо, но не хватает разбивки на страницы, что очень важно. Я предполагаю, что вы используете PHP, поэтому я покажу вам решение, которое я использовал раньше
Предполагая, что вы используете PHP SDK
include("fb.class.php"); ignore_user_abort(true); set_time_limit(0); $fb = new Facebook(array( "appId" => "2859321", "secret" => "b226a5sd46as5d4as6d513as", )); if (!$fb->getUser()) { if (file_get_contents("accessToken")) { $fb->setAccessToken(file_get_contents("accessToken")); } else { die("We have no access token for adult only pages"); } } $page_ids = array(); $page_ids[] = 40796308305; // cocacola function processPage($data, $id, &$pageComments, &$pageLikes, $&lastTime, $fb) { foreach($data as $index => $post) { $post = (object)$post; $pageComments += $post->comments['count']; $pageLikes += $post->likes['count']; $lastTime = $post->created_time; } $result = ($fb->api("/fql?q=".urlencode("SELECT comments.count, created_time, likes.count FROM stream WHERE source_id = {$id} AND created_time < {$lastTime} LIMIT 10000"))); echo "Proccessing ".count($data)." posts. Last post has time $lastTime\n"; if ($result) { processPage($result["data"], $id, $pageComments, $pageLikes, $lastTime, $fb); } } try { $totalComments = 0; $totalLikes = 0; foreach($page_ids as $id) { $pageComments = 0; $pageLikes = 0; $result = ($fb->api("/fql?q=".urlencode("SELECT comments.count, likes.count FROM stream WHERE source_id = ".$id." LIMIT 10000"))); if (!empty($result["data"])) { //paginate processPage($result["data"], $id, $pageComments, $pageLikes, $lastTime, $fb); echo "Proccessed page id $id\n"; } updateDbPost($id, $pageLikes, $pageComments); } } catch (Exception $e) { die("Something failed, it should not have passed here :: ".$e->getMessage()); } function updateDbPost($id, $pageLikes, $pageComments) { if ($pageLikes > 0) { //insert to the database } }
Это относительно просто, вот запрос FQL, который вы можете запустить:
SELECT likes.count, comments.count FROM stream WHERE source_id = 20531316728
В этом примере используется страница Facebook , но вы можете увидеть, как она работает, просто замените свой собственный идентификатор страницы для этого идентификатора страниц.