2011-08-18 59 views
2

當我在filter()調用中沒有包含count參數時,我可以使用流媒體API,但是當我嘗試指定我希望接收的歷史記錄中有多少條推文時,我的流對象返回None如何在tweepy的流媒體API中使用'count'參數?

import tweepy 
from tweepy.streaming import StreamListener, Stream 

class Listener (StreamListener): 
    def on_status(self, status): 
     print '-' * 20 
     print status.text 
     return 

def get_tweets(request): 
    # if request.is_ajax(): 
    # All keys and secrets are declared here, but were removed for security reasons. 

    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) 
    auth.set_access_token(ACCESS_KEY, ACCESS_SECRET) 
    api = tweepy.API(auth) 
    listener = Listener() 
    stream = Stream(auth, listener) 
    stream.filter(follow=("14739093",), count=-5) 

我也嘗試了下面,看看它是什麼回來。

>>> something = stream.filter(follow=("14739093",), count=-5) 
>>> print something 
None 

感謝您的幫助!

+0

是的,我試過了一個正數,它也做了同樣的事情。沒有,計數參數,過濾器只是連續運行,並打印出任何推文。但是,當我給它count參數時,它只是在python中進入一個新行(>>>)。 –

+0

'on_error'具體會立即停止,除非你重寫它。 – agf

+0

好吧,我覆蓋了on_error()方法,它給我416 Range Unacceptable。可能的原因是:角色中不允許Count參數。計數參數值太大。由於它顯然不是太大,所以不能允許這個角色。不過,我仍然不確定它爲什麼給我這個錯誤。 –

回答

6

Stream.filter總是返回None,它的工作只是將數據傳遞給StreamListener

你的問題是,Twitter只允許count參數的某些「角色」。

流水,鏈接,Birddog和陰影客戶有意捕捉所有狀態應該保持每秒接收的狀態數的當前估計,並注意最後的狀態被接收的時間。重新連接後,客戶可以估算出合適的積壓請求。 請注意,其他位置不允許使用count參數,包括track,sample和默認訪問角色。

這是當你嘗試使用count參數你得到一個413錯誤的原因 - 你在「默認訪問」的作用。

+0

啊,謝謝你爲我澄清。我沒有足夠的聲望來讚揚這個答案,但如果我能的話,我會! –

+1

真正的寶石 - 有時候不容易在twitter文檔上找到相關內容。謝謝! – jsh