Streamen Sie Twitter-Suchergebnisse wie eine bestimmte Video-Site [Python]

Da ein bestimmtes Idol nicht auf niconico liefert, ist die Live-Übertragung im Vergleich zum vorherigen Idol etwas einsam ... → Soll ich Tweets mit empfohlenen Hash-Tags für die Live-Übertragung überlagern?

Aus diesem Grund habe ich in Python ein Programm erstellt, mit dem Twitter-Suchergebnisse wie eine bestimmte Video-Site fließen.

Bilddiagramm

live.gif

Erfasst von https://www.youtube.com/watch?v=G4aogUF_M_Y.

Umgebung

Windows10 Python3.7.6

Da die "-transparente Farbe" von tkinter, die später beschrieben wird, stark von der Umgebung abhängt, muss sie in Linux- und Mac-Umgebungen in einer anderen Notation realisiert werden. Menschen in diesen Umgebungen sollten entsprechend googeln ()

Ganzer Code

Die Spaghetti der Seele, die nicht sauber geschrieben oder ausgearbeitet wurden, rollen hier. Ich möchte mich heutzutage gut verstehen.

Rauer Fluss

  1. Registrieren Sie sich bei der Twitter-API und erhalten Sie ConsumerKey, ConsumerSecret, AccessToken, AccessTokenSecret.

  2. Erstellen Sie mit tkinter einen transparenten Rahmen

  3. Rufen Sie das Suchergebnis mit einem beliebigen Suchwort mit Tweepy ab und platzieren Sie die Zeichenfolge des erhaltenen Ergebnisses mit entsprechender Verarbeitung als Text von Label an einer bestimmten Koordinate.

  4. Reproduzieren Sie den Kommentarfluss, indem Sie das platzierte Label rekursiv aufrufen, wobei die x-Koordinate für jede nms leicht verschoben ist.

  5. Suchen Sie eine Zeile, in der der Kommentar im Abstand von ca. 5 Sekunden an die Außenseite des Bildschirms verschoben wurde, und ordnen Sie die Suchergebnisse für diese Zeile neu an.

Spezifikation

Kommentar

(Es fühlt sich an wie wer es liest. Mein Memorandum.)

Verwenden Sie zunächst tweepy für das entsprechende word = input ()

auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)  
api = tweepy.API(auth)
results=api.search(q=word,count=num_comment)

Um zu sehen, ob der Benutzer die Twitter-API verwenden kann. Wenn dies fehlschlägt, wechseln Sie zu "reAuth ()" und geben Sie CK, CS, AT, AS ein, bis die Authentifizierung erfolgreich ist. Wenn dies erfolgreich ist, schreiben Sie es in "config.ini". In Bezug auf configparser Konfigurationsdateiverwaltungsmodul im Python-Programm - Verwendung des Konfigurationsservers und Vorsichtsmaßnahmen - Sehen.

Generieren Sie als Nächstes einen tkinter-Frame im Vollbildmodus mit transparentem Hintergrund. Die Auflösung der Anzeige kann unten erhalten werden.

from ctypes import windll
ww=windll.user32.GetSystemMetrics(0)#width
wh=windll.user32.GetSystemMetrics(1)#height

Geben Sie dies zu "width", "height" von "ttk.Frame ()". Transparenter Rahmen [Erstellen Sie mit tkinter [Python] einen Rahmen mit transparentem Hintergrund (https://qiita.com/WhiteaHat/items/050b572aad0d1686370b). Kann mit gemacht werden.

Ich möchte, dass die Kommentare über das Video fließen, also setze ich "root.wm_attributes (" -topmost ", True)" so, dass root im Vordergrund steht.

Wenn der Kommentar eine URL enthält, ist er unnötig lang. Tweets mit URLs mit tweepy [Python] ausschließen Mit exURL () like ausschließen. Wenn der Kommentar einen Zeilenumbruch enthält, umfasst die Beschriftung mehrere Zeilen und die Kommentare überlappen sich. Ersetzen Sie ihn daher durch "text.replace (" \ n "," ")".

Das Ergebnis der Kommentarerfassung "Ergebnisse" wird zuerst in "NowDatalist" kopiert, und der Kommentar wird etwa alle 5 Sekunden aktualisiert. Durch Umschreiben des Zeilenelements, das mit "get_comment ()" in "Ergebnisse [i]" umgeschrieben werden soll, wird der Bildschirm angezeigt Die obigen Kommentare werden von "now data list" verwaltet.

get_newcomment() Eine Funktion, die einen neuen Kommentar in einer Kommentarzeile neu anordnet, die vom Bildschirm abgeflossen ist. Die Liste "lefted" (der Mangel an Sinn, links hinzuzufügen) macht es "True", wenn ein Kommentar vom Bildschirm entfernt wird (x-Koordinate <0 eines bestimmten "Labels"). Wenn bei der Ausführung von "get_newcomment ()" mindestens ein "True" übrig bleibt, klicken Sie auf die Twitter-API für diese Nummer, um Kommentare zu erhalten und diese in "results" zu speichern. Durch Angabe von "Since_id" beim Aufrufen der API ist der ID-Wert höher als die Tweet-ID. Sucht aus einer Gruppe von Tweets mit einer großen Anzahl. Gemäß den Spezifikationen der Twitter-API können Sie die API außerdem alle 5 Sekunden aufrufen. Mit einem Abstand wird sie jedoch alle 5,05 Sekunden ausgeführt.

update_comment() Eine Funktion, die den Bildschirm basierend auf den von get_newcomment () erhaltenen Ergebnissen tatsächlich neu schreibt. if (k! = 0 und k% 2 == 0): wird verwendet, um den erfassten Kommentar zu unterbrechen, ohne alles auf einmal zu fließen. Das heißt, zwei Kommentare fließen pro Sekunde. Beim Umschreiben von "label" müssen Sie das vorherige "label" als "label [i] .place_forget ()" löschen. Wenn Sie dies nicht tun, bleibt das vorherige "Label" weiterhin im "Frame".

$pyinstaller jk.py --onefile Schließlich wird dieses Programm in eine exe-Datei konvertiert und abgeschlossen. Dies erleichtert nicht nur die Ausführung auf einem PC in einer Nicht-Python-Umgebung. Unterschied im Verhalten von transparenten Frames, die mit tkinter im Pyinstaller [Python] erstellt wurden Dies liegt daran, dass es einen Grund gibt, der in beschrieben ist. Ich denke nicht daran, die exe-Datei freizugeben.

In Verbindung stehender Artikel

Ich habe viel gelernt, als ich dieses Programm gemacht habe, also habe ich ein Memorandum geschrieben.

[Erstellen Sie mit tkinter [Python] einen Rahmen mit transparentem Hintergrund (https://qiita.com/teahat/items/050b572aad0d1686370b). Tweets mit URLs mit tweepy [Python] ausschließen Unterschied im Verhalten von transparenten Frames, die mit tkinter im Pyinstaller [Python] erstellt wurden Label mit tkinter [Python] ausführen

Funktionen, die Sie in Zukunft implementieren möchten

Recommended Posts

Streamen Sie Twitter-Suchergebnisse wie eine bestimmte Video-Site [Python]
Suchen Sie Twitter mit Python
Suche nach Twitter-Tweets mit Python
[Python] Lassen Sie sich täglich von LINE über das Ranking der Suchergebnisse auf Ihrer Website informieren.
Schreiben Sie eine Dichotomie in Python
Schreiben Sie eine Suche mit Tiefenpriorität in Python
Durchsuche das Labyrinth mit dem Python A * -Algorithmus
Machen wir einen Twitter-Bot mit Python!