2016-04-01 19 views
0

私はFacebook Facebookの壁からフィードを取得するには、python facebook-sdk(変更されたサンプルコード)を使用しています。それは私の記事と私の友人の投稿を意味します。私のスクリプトは、2つ以上の友人の投稿があるまでうまく動作します。フェイスブックはそれらの投稿のグループ化を開始し、その投稿のIDを取得できなくなります。Facebook graphAPI pythonで友人の投稿のIDを取得

これは私が「グループ化されたポスト」によって何を意味するかである:ここでは fb grouped wall posts

は私のコードです:

import facebook 
import requests 


def get_it(post): 

    print(post['message']) 
    print(post) 

access_token = '<mytoken>' 
user = 'me' 
graph = facebook.GraphAPI(access_token) 

posts = graph.get_connections(user, 'feed', limit=20) 
print(posts) 

while True: 
    try: 
     [get_it(post=post) for post in posts['data']] 

     posts = requests.get(posts['paging']['next']).json() 
    except KeyError: 
     break 

2友人の投稿を超えるがない場合、今すぐプリントが私に成功した結果が得られグループ化されていません。 dictのは、この プリント(記事)のようになります。

{'paging': {'previous': 'https://graph.facebook.com/v2.5/XXX&access_token=XXX&__paging_token=XXX&__previous=1', 'next': 'https://graph.facebook.com/v2.5/XXX/feed?limit=20&access_token=XXX&__paging_token=XXX'}, 'data': [{'id': 'XXXXXX_XXXX', 'created_time': '2016-03-31T23:58:41+0000', 'message': 'test'}, {'id': 'XXX_XXX', 'created_time': '2016-03-31T23:33:43+0000', 'message': 'hehe'}]} 

そして、すべてがうまく行く、私はget_it方法のためのポストIDを使用することができます。

しかし、かつて2友人の投稿、より多くのがあり、それがグループ化されますと、突然 新しいもの「物語」は辞書に表示されます。

'data': [{'created_time': '2016-04-01T02:32:37+0000', 'story': 'XXX wrote on your Timeline.', 'id': '123_456'}, {'created_time': '2016-03-31T23:58:41+0000', 'message': 'test', 'id': '6666_6666'} 

「物語」IDが唯一の最後のコメントのために働きますグループの壁のポストで作られています。

さらに、次のdictフィールドは何らかの理由でget_it()メソッドで渡されず、print(post ['message'])およびprint(post)によって空白の結果が返されます。

これを解決する方法、私は私の壁だけでなく、私の壁にすべての友人の記事のIDとメッセージを取得しますか?私は本当に失われて、すべてを試してみました。ありがとうございました。

+0

これは意図した動作であり、集約が行われるとすべての投稿を返すようにこの集約機能を変更する計画はありません。 – The1Fitz

答えて

0

これは、スクリプトやスパムの自動化をやめるためのFacebookの意図的なアップデートです。

残念ながらロールバックされません。

関連する問題