5

ストリーミング API に接続するために twython (python 用の twitter API ライブラリ) を使用していますが、おそらく単語でフィルタリングされたパブリック twitter ストリームしか取得していないようです。認証されたユーザーのタイムラインまたは @メンションのリアルタイム ストリームを取得する方法はありませんか?

私はこれらのメンションを得るために REST API への遅延呼び出しをループしてきましたが、Twitter は私がそれほど多くのリクエストを行うことを好みません。

Twython のドキュメントも公式の Twitter ドキュメントもあまり役に立ちません。

ストリーミング用にtwythonよりもうまく機能する別のpythonライブラリがある場合(Twitter API v1.1用)。提案をいただければ幸いです...ありがとう。

4

2 に答える 2

4

私の研究の初めに、 python-twitterはPythontwitter ライブラリだと思っていました。しかし最後に、Python Twitter ツールの方が人気があり、Twitter ストリーミングもサポートしているようです。

少しトリッキーですが、ストリーミング API と REST API は、ダイレクト メッセージでは同じではありません。この小さなサンプル スクリプトは、ユーザー ストリームを使用してダイレクト メッセージを取得する方法を示しています。

import twitter # if this module does not 
               # contain OAuth or stream,
               # check if sixohsix' twitter
               # module is used! 
auth = twitter.OAuth(
    consumer_key='...',
    consumer_secret='...',
    token='...',
    token_secret='...'
)

stream = twitter.stream.TwitterStream(auth=auth, domain='userstream.twitter.com')

for msg in stream.user():
    if 'direct_message' in msg:
        print msg['direct_message']['text']

このスクリプトは、スクリプトを開始する前に既に受信したメッセージではなく、すべての新しいメッセージを出力します。

于 2013-07-08T21:39:17.270 に答える
0

ダイレクト メッセージをストリーミングする方法はありません。

ただし、ユーザーのタイムラインをストリーミングする方法があります。こちらの Twitter でドキュメントを確認してください: https://dev.twitter.com/docs/streaming-apis/streams/user

from twython import TwythonStreamer


class MyStreamer(TwythonStreamer):
    def on_success(self, data):
        if 'text' in data:
            print data['text'].encode('utf-8')
        # Want to disconnect after the first result?
        # self.disconnect()

    def on_error(self, status_code, data):
        print status_code, data

# Requires Authentication as of Twitter API v1.1
stream = MyStreamer(APP_KEY, APP_SECRET,
                    OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

stream.user()

requestsただし、 ( https://github.com/kennethreitz/requests )の新しいバージョンがリリースされるまで、フォロワーからのツイートは 1 つ遅れます。ただし、これは比較的すぐに修正されるはずです。:)

于 2013-06-25T18:38:06.123 に答える