我想做什么
我正在尝试提取2012年和2013年在特定城市中发生的所有公共 facebook事件的列表。此外,对于每个事件,我想提取以下内容:
到目前为止我尝试了什么
我一直在图浏览器中尝试以下查询
search?q={Oslo}& [type={event}](#searchtypes)
我现在忽略了日期范围限制。我想我以后可以解决这个问题。
问题
这是列出状态更新(故事),地点和其他所有内容,并将其作为JSON对象返回。但是,这不会提供我所需的所有数据字段。有什么想法吗?
旁注
我试过调查FQL但显然不能像这样搜索? (如果可以,请随时提供帮助)。我得到的最接近的是:
SELECT eid FROM event_member WHERE uid IN
(SELECT page_id FROM place WHERE
distance(latitude, longitude, "37.76", "-122.427") < 1000)
但这只会给我以后的活动。也许如果它允许我过去看过去?
答案 0 :(得分:4)
只能通过Graph Search API搜索未链接到的公共对象(无参与,无邀请),而不能使用Graph API或FQL。
目前,this is the only documentation for Graph Search。您将看到此API没有提供太多可能性,因此如果您想实现目标,则必须将某些内容拼凑在一起。没有任何直接的方法可以做到这一点。
如果我们收集关于事件的内容,这几乎就是我们所拥有的一切:
搜索类型
活动:https://graph.facebook.com/search?q=conference&type=event
字段
您可以使用。限制这些搜索返回的字段 ?fields = URL参数,与读取其他参数时的方式相同 对象。例如,要仅获取事件的名称,您可以执行此操作 以下内容:
活动名称: https://graph.facebook.com/search?fields=name&q=conference&type=event
时间
在用户的新闻Feed上搜索公开信息或帖子时,您 可以使用since,until和limit来翻页结果 参数。从而且直到两者都接受unix时间戳。分页时 回到过去,你应该使用,直到与限制在哪里 until是最后一个created_time字段的unixtime值 您之前的查询返回的对象。及时向前翻页时 你应该设置,因为它是created_time的unixtime值 上一个查询返回的第一个对象中的字段。请 请注意,您只能在新闻Feed中搜索大约1至2周。
接下来要知道的是,结果集由其中一个字段包含您要查找的字符串的事件组成(q=Oslo
)。因此,“奥斯陆”可能出现在消息中,在描述中,在位置字段中的运气以及在时区字段中的不幸中。
然后,您必须“手动”过滤掉结果。您可能只搜索包含“Oslo”的事件,然后检查该位置是否确实包含“Oslo。或者如果您很容易想要查找具有特定位置的事件,我建议您搜索格式为"City, Country"
的字符串,因为这就是Facebook格式化城市的方式。所以你可能会这样做:
search?fields=location&q="Oslo, Norway"&type=event&since=1356994800
从那时起,1356994800
是unixtime,你想要检索事件。
可能的结果:
{
"data": [
{
"location": "Oslo, Norway",
"id": "211893915563330",
"start_time": "2022-02-08T00:00:00"
},
{
"location": "Lillestrøm, Norway",
"id": "641379122561097",
"start_time": "2015-09-06T09:00:00+0200"
},
{
"location": "Oslo, Norway",
"id": "1434492323451716",
"start_time": "2014-11-06T20:45:00+0100"
},
{
"location": "Oslo, Norway",
"id": "563423357073321",
"start_time": "2014-09-20"
},
...
{
"location": "Oslo, Norway",
"id": "628230923890648",
"start_time": "2013-01-16T19:00:00+0100"
}
],
}
然后,也许使用Google Maps API查看找到的位置是否确实靠近奥斯陆。即“Lillestrøm,挪威”非常接近它。
答案 1 :(得分:2)
看起来FQL可以为您提供所需的结果。 此FQL(这是您开始的扩展)将向您显示2012年至2013年之间的所有活动以及您想要的活动数据:
select
eid,
name,
description,
location,
all_members_count,
attending_count,
unsure_count,
not_replied_count,
declined_count,
start_time,
end_time,
venue
from
event
where
eid in
(
select
eid,
start_time
from
event_member
where
uid in
(
select
page_id
from
place
where
distance(latitude, longitude, "37.76", "-122.427") < 1000
) and
start_time > "2012-01-01"
) and
end_time < "2013-01-01" and
end_time <> 'null'
这就是我运行此查询的结果之一:
{
"eid": 170775033066718,
"name": "Lavender Diamond at The Chapel - Dec 11",
"description": "Get tickets: http://ticketf.ly/SUb4w9\nDetails: http://www.thechapelsf.com/event/184715/\n\nVERY SPECIAL GUEST WILL BE ANNOUNCED DAY OF SHOW",
"location": "The Chapel",
"all_members_count": 92,
"attending_count": 30,
"unsure_count": 3,
"not_replied_count": 59,
"declined_count": 4,
"start_time": "2012-12-11T20:00:00",
"end_time": "2012-12-12T00:00:00",
"venue": {
"street": "",
"city": "",
"state": "",
"country": "",
"latitude": 37.760503799154,
"longitude": -122.42123452518,
"id": 113634312122520
}
}