从 Facebook Open Graph API 解码重复发生的事件?

Decoding recurring events from Facebook Open Graph API?

我正在尝试研究如何从 Facebook Open Graph API 中获取更好的数据,因为它们现在似乎支持个人资料页面的重复事件,但似乎没有任何方法可以做到这一点正确地从他们 API 因为他们 return 开始日期作为事件运行的第一天,结束日期作为它运行的最后一天。我的第一次尝试是简单地检查事件是否在同一天开始和结束并假设它们每周发生一次,但正如您从这个 Facebook 页面上看到的那样,它们实际上允许您将它们设置为在不同时间的多天发生!即:周日 12:00pm 和周三 4:00pm:

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 调用示例(但是您需要自己的访问令牌才能执行它):

https://developers.facebook.com/tools/explorer/145634995501895/?method=GET&path=hobbytownewportnews%2Fevents%3Ftime_filter%3Dupcoming%26fields%3Did%2Cname%2Cend_time%2Cstart_time&version=v2.9

下面是我们得到的回复。现在你可以看到问题是开始和结束时间,没有数据表明事件是否重复发生,Facebook 也没有采取任何措施来修复它们,因此它们作为即将发生的事件有意义。 return 通过 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 return如您所愿,开始和结束日期跨越整组日期,甚至从早上 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"
    }
  ],
}

"event_times" = 多实例事件的时间数组

将此添加到您的字段列表,然后循环结果。

您可以创建一个 Facebook API 图形请求指定 event_times 参数,查询 Facebook 页面,如:

https://graph.facebook.com/v2.10/<pageId>/events?fields=start_time,end_time,event_times

其中 pageId 是 Facebook 页面 ID。

否则可以查询单个事件:

https://graph.facebook.com/v2.10/<eventId>?fields=start_time,end_time,event_times

其中 eventId 是 Facebook 事件 ID。