Как получить все комментарии/комментарии по Facebook OpenGraph
Я пытаюсь получить комментарии и комментарии для конкретных сообщений через API-интерфейс opengraph. Хотя я возвращаю некоторую информацию, она не всегда совпадает с комментариями/комментариями, указанными в сообщении. Я предполагаю, что это можно отнести к разрешениям доступа к токену, который я использую. Тем не менее, я заметил, что результаты меняются в зависимости от используемого ограничения, и иногда я получаю дубликаты записей между запросами.
Например, сообщение 10376464573_150423345118848 имеет около 14000 символов на момент написания этой статьи, но я могу получить максимум около 5000. С лимитом по умолчанию, равным 25, я могу получить до 3021 понравившихся. Значение 100 дает 4501, а пределы 1000, 2000, 3000 и 5000 все возвращают одинаковое количество понравившихся, 4959 (абсолютные значения не делают слишком много смысла, они просто там для сравнения).
Я заметил аналогичные результаты в меньшем масштабе для комментариев.
Я использую простой python script для извлечения страниц. Он просматривает данные, указанные в ссылках на страницы, предоставленные Facebook, и записывает каждую страницу в отдельный файл. Когда встречается пустой ответ, он останавливается.
С небольшими пределами (например, по умолчанию 25) я замечаю, что количество возвращаемых результатов монотонно уменьшается, когда я просматриваю ссылки на страницы, что кажется действительно странным.
Любые мысли о том, что может вызвать такое поведение и как его обойти?
Ответы
Ответ 1
Если вы ищете список имен каждого из них, например, комментарий к определенному сообщению, я думаю, что вы столкнетесь с лимитом API (даже с разбивкой на страницы).
Если вы просто ищете совокупное количество понравлений, комментариев, акций или ссылок на клики, вам нужно просто использовать параметр summary = true, указанный в конечной точке сообщений. Вид вроде этого:
try:
endpoint = 'https://graph.facebook.com/v2.5/'+postid+'/comments?summary=true&access_token='+apikey
response = requests.get(endpoint)
fb_data = response.json()
return fb_data
Вы также можете получить все сообщения любой конкретной страницы и их итоговые данные:
{page_id}/posts?fields=message,likes.limit(1).summary(true)
Ответ 2
Вы можете получать комментарии и использовать счет или другую информацию определенного сообщения, используя url или api ниже.
https://graph.facebook.com/{0}/comments?access_token={1}&limit={2}&fields=from,message,message_tags,created_time,id,attachment,like_count,comment_count,parent&order=chronological&filter=stream'.format(post_id,access_token,limit)
Как здесь порядок, указанный как хронологический, вам нужно использовать после параметра также в том же URL-адресе, значение которого можно получить в разделе paging.cursor.after
первого ответа.