2011-08-18 18 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パラメータがなければ、フィルタは連続して実行され、つぶやきを出力します。しかし、私がcountパラメータを与えると、それは単にPythonの新しい行(>>>)に移動します。 –

+0

'on_error'は、あなたがそれを上書きしない限り、特に物事を止めるでしょう。 – agf

+0

申し訳ありませんが、私はon_error()メソッドをオーバーライドして、416 Range Unacceptableを与えています。考えられる理由は次のとおりです。カウントパラメータはロールでは許可されていません。カウントパラメータの値が大きすぎます。明らかにそれほど大きくないので、その役割には許されてはいけません。私はまだそれが私にそのエラーを与えている理由についてはまだ分かりません。 –

答えて

6

Stream.filterは常にNoneを返します。そのジョブは、データをStreamListenerに渡すだけです。

あなたの問題は、Twitterでは特定の「役割」に対してcountパラメータが許可されているということです。秒あたりの受信状況の数の現在の推定値を維持し、最後のステータスが受信された時間に注意する必要があり、すべての状況を捉えることに興味

消防ホース、リンク、Birddogと影のクライアント。再接続すると、クライアントは要求する適切なバックログを見積もることができます。 countパラメータは、track、sample、およびデフォルトのアクセスロールを含む他の場所では許可されません。

これは、あなたがcountパラメータを使用しようとすると、413エラーを取得している理由です - あなたは、「デフォルトアクセス」の役割をしています。

+0

ああ、私のためにそれを明確にしてくれてありがとう。私はこの回答をアップヴォートするには十分な評判はありませんが、もしできれば私はしたいと思います! –

+1

真の宝石 - 時々twitterのドキュメントで物事を見つけるのは簡単ではありません。ありがとう! – jsh

関連する問題