Подтвердить что ты не робот

Как получить все комментарии/комментарии по Facebook OpenGraph

Я пытаюсь получить комментарии и комментарии для конкретных сообщений через API-интерфейс opengraph. Хотя я возвращаю некоторую информацию, она не всегда совпадает с комментариями/комментариями, указанными в сообщении. Я предполагаю, что это можно отнести к разрешениям доступа к токену, который я использую. Тем не менее, я заметил, что результаты меняются в зависимости от используемого ограничения, и иногда я получаю дубликаты записей между запросами.

Например, сообщение 10376464573_150423345118848 имеет около 14000 символов на момент написания этой статьи, но я могу получить максимум около 5000. С лимитом по умолчанию, равным 25, я могу получить до 3021 понравившихся. Значение 100 дает 4501, а пределы 1000, 2000, 3000 и 5000 все возвращают одинаковое количество понравившихся, 4959 (абсолютные значения не делают слишком много смысла, они просто там для сравнения).

Я заметил аналогичные результаты в меньшем масштабе для комментариев.

Я использую простой python script для извлечения страниц. Он просматривает данные, указанные в ссылках на страницы, предоставленные Facebook, и записывает каждую страницу в отдельный файл. Когда встречается пустой ответ, он останавливается.

С небольшими пределами (например, по умолчанию 25) я замечаю, что количество возвращаемых результатов монотонно уменьшается, когда я просматриваю ссылки на страницы, что кажется действительно странным.

Любые мысли о том, что может вызвать такое поведение и как его обойти?

4b9b3361

Ответ 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 первого ответа.