2013-06-21 3 views
5

Ich verwende Twython (twitter API-Bibliothek für Python), um eine Verbindung mit der Streaming-API, aber ich scheine nur den öffentlichen Twitter-Stream möglicherweise durch Wörter gefiltert zu bekommen. Gibt es keine Möglichkeit, einen Echtzeit-Stream der authentifizierten Benutzerzeitachse oder @mentions zu erhalten?Erhalten von Erwähnungen und DMs durch Twitter Stream API 1.1? (Mit twython)

Ich habe durch verzögerte Aufrufe an die REST-API durchgeschleift, um diese Erwähnungen zu bekommen, aber Twitter mag es nicht, dass ich so viele Anfragen mache.

Twython-Dokumentation hilft mir nicht viel darüber, auch nicht das offizielle Twitter-Dokument.

Wenn es eine andere Python-Bibliothek gibt, die besser funktioniert als twython zum Streamen (für Twitter API v1.1). Ich würde den Vorschlag schätzen ... Danke.

Antwort

3

Am Anfang meiner Forschung dachte ich python-twitter ist die twitter-Bibliothek für Python. Aber schließlich scheint es, als ob die Python Twitter Tools beliebter sind und auch Twitter-Streaming unterstützen.

Es ist ein bisschen schwierig, die Streaming API und die REST API sind nicht gleich für direkte Nachrichten. Dieses kleine Beispielskript zeigt, wie Sie den Benutzer-Stream direkte Nachrichten erhalten verwenden können:

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'] 

Dieses Skript wird alle neuen Nachrichten drucken - nicht die, die bereits vor der das Skript zu starten.

0

Es gibt keine Möglichkeit, direkte Nachrichten zu streamen.

Es gibt jedoch eine Möglichkeit, eine Benutzerzeitachse zu streamen. Schauen Sie sich die Dokumentation auf Twitter hier: 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() 

Bis eine neue Version von requests (https://github.com/kennethreitz/requests) freigegeben wird, jedoch Tweets von Ihren Nachfolgern wird hinter einem Post. Dies sollte jedoch relativ bald behoben werden! :)

+2

Dies scheint falsch zu sein. Direkte Nachrichten-Streaming ist hier erwähnt: https://dev.twitter.com/docs/streaming-apis/streams/user#Direct_messages – lumbric

+0

Oh, tut mir leid; Ich habe diese Dokumentation nie gesehen. –

+0

Aktualisieren oder löschen Sie Ihre Antwort, um DM-Streaming zu reflektieren. – Sheharyar

Verwandte Themen