2015-06-13 1 views
4

Я использую API-интерфейс Facebook в Python. Каждый пост имеет два DateTimes:Поиск в Facebook Graph API с использованием параметра updated_time

  1. created_date
  2. updated_date

Когда я предоставление since параметр, он возвращает каналы, где created_date больше или равно параметру since. Например, если я предоставил since=2015-06-05, он вернет все должности с 5 июня 2015 года по настоящее время.

Но предположим, что есть сообщение, которое было опубликовано 7 июня 2015 года, и несколько мероприятий (нравится, акции, комментарии и т. Д.), Которые произошли 8 июня 2015 года. В этом случае updated_time этого сообщения изменяется, но created_time будет таким же (7 июня 2015 г.). Если я передам параметр since=2015-06-08, то я не смогу отслеживать все действия на этом посту.

Есть ли какие-либо решения, по которым я могу передать параметр since на updated_time вместо передачи его created_time?

+1

Нет, это невозможно. API в настоящее время предлагает очень ограниченные возможности фильтрации. – CBroe

+0

спасибо @jonrsharpe. –

ответ

7

Как отмечает @CBroe, это не поддерживается API-интерфейсом Facebook. (Это можно сделать с помощью FQL, но это устарело и не будет поддерживаться намного дольше).

Сказанное, с некоторым творчеством (и немного дополнительным кодом) аналогичный эффект может быть достигнут путем объединения нескольких запросов.

В моем приложении я выполнить запрос со следующими параметрами:

  • until=2015-07-07 (или независимо от того since даты была бы)
  • fields=updated_time (сохранить запрос быстро и полезную нагрузку небольшой)
  • limit=5000 (или так же большой размер страницы, так как я только захватывая одно поле)

Я, n оценивайте каждое сообщение, которое имеет updated_time больше, чем ожидаемая дата since, и бросьте эти сообщения в очередь, чтобы загрузить весь текст сообщения.

Примечание: Если вы имеете дело с содержанием, где есть частые обновления о прошлом контента, вы, вероятно, хотите использовать Graph API, Batch Requests feature, в отличие от загрузки каждого сообщения в отдельности.

Так, например, если until (и, таким образом, since) дата 2015-07-07 и updated_time на пост является 2015-10-15, то я знаю, что пост был создан до 2015-07-07, но обновленный впоследствии. Он не будет найден в запросе since, но я могу легко загрузить его отдельно, чтобы синхронизировать мой кеш.

+0

Можете ли вы поделиться примером кода, который делает это вместе с обновлением базы данных? –

Смежные вопросы