私は社会学者で、非営利団体の投稿が口コミで広まる方法について行っている新しい研究の一環として、Facebook アプリに取り組んでいます。
私は限られたプログラミング スキルしか持っていませんが、ひどくはないので、誰かを雇って、各組織から洞察データを抽出し (もちろんユーザー認証後に)、csv を電子メール アカウントに送信するアプリを作成しました。このアプリは、Graph API から利用可能なすべてのデータを取得していましたが、3 週間前の時点で、直近 3 日間のデータのみを抽出し始めました。
アプリで使用している呼び出しは次のとおりです。
# Insights データを取得する # 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 の変更またはサーバーのバグが原因でアプリが機能しなくなったのかどうかは不明です。他の誰かがこの問題を扱っているという証拠を見つけることができないので、私は前者を疑い始めています。