2015-08-28 46 views
0

我創建了流媒體API來捕獲帳戶中的所有轉發。我將所有結果保存在Mongodb中。如何查詢以從Twitter流媒體API獲取所有轉發?

下面的代碼

class StdOutListener(StreamListener): 

    def on_data(self, data): 
     mydata = json.loads(data) 
     db.raw_tweets.insert_one(mydata) 
     return True 

    def on_error(self, status): 
     mydata = json.loads(status) 
     db.error_tweets.insert_one(mydata) 


if __name__ == '__main__': 

    #This handles Twitter authetification and the connection to Twitter Streaming API 
    l = StdOutListener() 
    auth = OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_token, access_token_secret) 
    stream = Stream(auth, l) 

    #This line filter Twitter Streams to capture data by the keywords: 'python', 'javascript', 'ruby' 
    stream.filter(follow=['121817564']) 

我相信,我捕捉然而幾乎所有的東西。在推特上有一個推特5000k轉推,但是當我在我的MongoDb上查詢時,我只能獲得1,300條記錄。我不確定我是否會錯過任何東西?我不希望得到完全相同的數字,但至少應該足夠接近。

這裏是我在MongoDB中使用的查詢。

db.getCollection('raw_tweets').find({'retweeted_status.id_str':'636345902915911680'}).count() 

也許我的查詢不正確得到所有轉發?

回答

1

你的mongoDB查詢對我來說確實很好。 現在有可能是失蹤的銳推很多可能的原因:

  • Twitter的流API 保證你會得到你的過濾器中指定的每一個鳴叫,你應該檢查由Twitter來檢查,如果返回的限制的郵件你錯過了一些推文。
  • 您在代碼中提供的過濾器用於跟蹤用戶而非「跟蹤」關鍵字過濾器。
  • 最有可能您缺少在開始追蹤之前創建的轉推。 (流式API不會提供您在陳述時間之前創建的推文)。