6

私は現在、tweepy を使用して Twitter のストリーミング API にアクセスし、正しく実行するためのサンプル コードを取得するのに問題があります (エラー...または少なくとも実行方法)。GitHub (バージョン 1.9 のラベルが付いている) と Python 2.7.1 の tweepy の最近のクローンを使用しています。

3 つのソースからサンプル コードを試してみました。いずれの場合も、追跡用のテスト用語として「twitter」を使用しています。

  1. O'Rilley Answers コード: Twitter のストリーミング API を使用してリアルタイムでツイートをキャプチャする方法

  2. Andrew Robinson のブログ: Tweepy を使用して Twitter ストリームにアクセスする

  3. GitHub の Tweepy サンプル リポジトリ (Andrew Robinson が行ったように、OAuth 認証をサポートするように簡単に変更できます): streamwatcher.py

3 つのケースすべてで同じ結果が得られます。認証は成功し、エラーは発生せず、メイン プログラム ループは問題なく実行されているようです。ネットワーク使用率が約 200KB/s に跳ね上がり、python プロセスの CPU 使用率がほぼ 100% に跳ね上がるので、データが受信されていると思います。ただし、コンソールには何も出力されません。

何らかの理由で tweepy の Stream クラスがカスタム コールバック メソッドを呼び出していないのではないかと思われます。各例のコールバック メソッドを書き直して、呼び出されるたびに出力を生成しようとしましたが、これはこれを裏付けているようです。これは、Andrew Robinson のブログ エントリに基づく非常に単純なテスト コードの 1 つです (もちろん、私のアプリのキーは削除されています)。

# -*- coding: utf-8 -*-

import tweepy

consumer_key = ''
consumer_secret = ''

access_token_key = ''
access_token_secret = ''

auth1 = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth1.set_access_token(access_token_key, access_token_secret)

class StreamListener(tweepy.StreamListener):
    def on_status(self, tweet):
        print 'Ran on_status'

    def on_error(self, status_code):
        print 'Error: ' + repr(status_code)
        return False

    def on_data(self, data):
        print 'Ok, this is actually running'


l = StreamListener()
streamer = tweepy.Stream(auth=auth1, listener=l)
#setTerms = ['hello', 'goodbye', 'goodnight', 'good morning']
setTerms = ['twitter']
streamer.filter(track = setTerms)

私は何を間違っていますか?

4

1 に答える 1

11

私もこれに遭遇し、streaming.pyの行160をに変更することでローカルチェックアウトで修正しました

if delimited_string.strip().isdigit():

これはTweepyの既知の問題/バグのようです-すべてのデバッグを行う前に問題リストを確認する必要があります:)-

https://github.com/tweepy/tweepy/pull/173 https://github.com/tweepy/tweepy/pull/182

于 2012-06-17T23:43:46.633 に答える