Расшифровывать повторяющиеся события из Facebook Open Graph API?
Я пытаюсь выяснить, как получить более качественные данные из API Open Graph Facebook, поскольку, похоже, теперь они поддерживают повторяющиеся события для страниц профиля, но, похоже, нет никакого способа получить это правильно из своего API, когда они возвращают начало дата как первый день, когда событие продолжается, и дата окончания как последний день, когда оно запускается. Моя первая попытка состояла в том, чтобы просто проверить, начинаются и заканчиваются ли события в один и тот же день, и предположить, что они происходят еженедельно, но, как вы можете видеть на этой странице Facebook, они фактически позволяют вам настроить их на несколько дней в разное время! То есть: воскресенье 12:00 и среда в 16:00:
https://www.facebook.com/pg/hobbytownewportnews/events
JUL 18: Micro FPV - Every Tuesday & Saturday (Jun 17 - Dec 16)
JUL 22: Gunpla Build Day - Every Saturday (Jun 17 - Dec 30)
JUL 16: RC Drifting - Every Wednesday & Sunday (Jun 18 - Dec 13)
JUL 20: Pizza & Plastics - Every Thursday (Jun 22 - Dec 28)
Я получаю события, используя этот API:
https://developers.facebook.com/docs/graph-api/reference/page/events/
А вот пример вызова API с использованием API (однако для его выполнения вам понадобится собственный токен доступа):
и ниже ответ, который мы получаем. Теперь проблема, как вы можете видеть, - это время начала и окончания, и нет данных, указывающих, повторяется ли событие, и Facebook не делает ничего, чтобы исправить их, чтобы они имели смысл как отдельные предстоящие события. Через API возвращается больше данных, но остальная часть носит описательный характер, поэтому я не учел это.
{
"data": [
{
"id": "272398049894766",
"name": "Pizza & Plastics - Every Thursday",
"end_time": "2017-12-28T20:00:00-0500",
"start_time": "2017-06-22T16:00:00-0400"
},
{
"id": "334856180266567",
"name": "RC Drifting - Every Wednesday & Sunday",
"end_time": "2017-12-13T20:00:00-0500",
"start_time": "2017-06-18T12:00:00-0400"
},
{
"id": "308995412882009",
"name": "Gunpla Build Day - Every Saturday",
"end_time": "2017-12-30T14:00:00-0500",
"start_time": "2017-06-17T12:00:00-0400"
},
{
"id": "1473270249392907",
"name": "Micro FPV - Every Tuesday & Saturday",
"end_time": "2017-12-16T18:00:00-0500",
"start_time": "2017-06-17T10:00:00-0400"
}
],
}
Есть идеи? Есть ли другой вызов API, чтобы получить этот материал? Суть в том, что я не могу просто предположить, что любое событие, которое охватывает несколько дней, является повторяющимся событием, потому что вы также можете добавить события, которые буквально охватывают несколько дней, как этот:
https://www.facebook.com/events/1854268061514839
и ответ для получения этого из Open Graph API возвращает то, что вы ожидаете, с датами начала и окончания, охватывающими весь набор дней и даже начинающимися в 8 утра и заканчивающимися в 8 вечера в последний день.
{
"data": [
{
"id": "1854268061514839",
"name": "2017 ROAR off road electric 8th and 4wd SCT electric Nationals",
"end_time": "2017-07-23T20:00:00-0700",
"start_time": "2017-07-20T08:00:00-0700"
}
],
}
2 ответа
Вы можете сделать запрос графика API Facebook, указав event_times
параметр, запрашивающий страницу Facebook как:
https://graph.facebook.com/v2.10/<pageId>/events?fields=start_time,end_time,event_times
где pageId
это идентификатор страницы Facebook.
В противном случае вы можете запросить одно событие:
https://graph.facebook.com/v2.10/<eventId>?fields=start_time,end_time,event_times
где eventId
это идентификатор события Facebook.
"event_times" = Массив времен события нескольких экземпляров
Добавьте это к вашему списку полей, а затем зациклите результат.