@Jimmyrakete: Anmerkungen zum Quelltext: `funktionen` ist kein guter Name für ein Modul, weil viel zu generisch. Zudem benutzt Du aus dem Modul überhaupt keine Funktionen sondern das scheinen nur statische Konfigurationsdaten zu sein. So ein Modul heisst üblicherweise `configuration` oder `settings`. Noch besser wäre aber das gar nicht in ein Modul zu schreiben, sondern in eine Konfigurationsdatei, denn Module packt man üblicherweise in die Versionsverwaltung, *dort* haben aber wiederum Zugangsdaten nichts zu suchen.
Namen sollte man nicht kryptisch abkürzen. `f` ist viel zu nichtssagend.
Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (PascalCase).
Auf Modulebene sollte nur Code stehen der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst. Besonders unübersichtlich wird es wenn man Code auf Modulebene mit Definitionen von Klassen und Funktionen mischt.
`my` ist in 99,99% ein sinnfreier Präfix. Wenn es nicht auch ein `their` oder `our` oder so etwas gibt das sich vom `my` unterscheidet, ist der Informationsgehalt bei 0. In diesem Fall braucht man den Namen allerdings auch gar nicht wirklich zwingend.
`TweetHandling` passt von der Schreibweise nicht zu einer Funktion und auch inhaltlich nicht so ganz. Zum ersten benennt man Funktionen üblicherweise nach der Tätigkeit die sie durchführt, also beispielsweise `handle_tweet()`, zum anderen stimmt der Tweet-Teil nur wenn es denn tatsächlich ein Tweet ist. Es gibt da ja noch einige andere Nachrichtentypen. Weswegen ich auch vorsichtig wäre da einfach von auszugehen, dass es einen "text"-Eintrag gibt und das etwas defensiver formulieren.
Ich sehe auch nicht warum man das in eine Funktion herausziehen muss und die `on_data()`-Methode fast nur diese Funktion aufruft.
Das ``u`` in ``u"text"`` hat da in Python 3 nichts mehr zu suchen.
Zwischenstand (ungetestet):
Code: Alles auswählen
#!/usr/bin/env python3
import json
import configuration
from tweepy import OAuthHandler, Stream
from tweepy.streaming import StreamListener
class StdOutListener(StreamListener):
def on_data(self, raw_data):
print(json.loads(raw_data).get("text"))
return True
def on_error(self, status_code):
print(status_code)
return False
def main():
auth = OAuthHandler(configuration.API_KEY, configuration.API_KEY_SECRET)
auth.set_access_token(
configuration.ACCESS_TOKEN, configuration.ACCESS_TOKEN_SECRET
)
Stream(auth, StdOutListener()).filter(track=["trump"])
if __name__ == "__main__":
main()
Musst Du unbedingt `on_data()` überschreiben? Das Original dekodiert die Nachricht und ruft dann entsprechend spezifischere Methoden auf.