我是一名社会学家,正在开发 Facebook 应用程序,这是我正在进行的一项关于非营利组织的帖子如何传播病毒的新研究的一部分。
我的编程技能有限但并不糟糕,并聘请了一个人编写了一个应用程序,该应用程序从每个组织中提取洞察数据(当然是在用户身份验证之后),然后将 csv 邮件发送到电子邮件帐户。该应用程序用于从 Graph API 获取所有可用数据,但截至 3 周前,它开始仅提取最近三天的数据。
这是我在应用程序中使用的电话:
# 获取洞察数据 #insights = myfbfunctions.graph_api_call(access_token, oid, 'insights', {'since': date, 'until': date+datetime.timedelta(1)}) start_date, end_date = self.GetPeriod(access_token, oid) 今天 = datetime.datetime.now().date()
# Prepare output
result = ['name,%s,url,%s' % (name, url), 'object_id,metric,end_time,period,value']
insights = myfbfunctions.graph_api_call(access_token, oid, 'insights',\
{'period': 86400 , 'end_time': start_date})
temp_date = datetime.datetime.strptime(insights['data'][0]['values'][-1]['end_time'], '%Y-%m-%dT%H:%M:%S+0000').date()
first_iteration = True
while first_iteration or temp_date <= today:
first_iteration = False
for metric in insights['data']:
for row in metric['values']:
date = datetime.datetime.strptime(row['end_time'], '%Y-%m-%dT%H:%M:%S+0000').date() + datetime.timedelta(-1)
result.append('%s,%s,%s,%s,%s' % (metric['id'].partition('/')[0], metric['name'], date,metric['period'], row['value']))
insights = json.loads(urllib2.urlopen(insights['paging']['next']).read())
temp_date = datetime.datetime.strptime(insights['data'][0]['values'][-1]['end_time'], '%Y-%m-%dT%H:%M:%S+0000').date()
buffer = StringIO()
temp_file = gzip.GzipFile(mode='wb', fileobj=buffer)
temp_file.write('\n'.join(result))
temp_file.close()
result = buffer.getvalue()
buffer.close()
我不清楚该应用程序是否由于 Facebook API 的某些更改或服务器上的错误而不再工作。我开始怀疑前者,因为我找不到其他人处理这个问题的证据。