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.
Erfasst von https://www.youtube.com/watch?v=G4aogUF_M_Y.
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 ()
Die Spaghetti der Seele, die nicht sauber geschrieben oder ausgearbeitet wurden, rollen hier. Ich möchte mich heutzutage gut verstehen.
Registrieren Sie sich bei der Twitter-API und erhalten Sie ConsumerKey, ConsumerSecret, AccessToken, AccessTokenSecret.
Erstellen Sie mit tkinter einen transparenten Rahmen
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.
Reproduzieren Sie den Kommentarfluss, indem Sie das platzierte Label rekursiv aufrufen, wobei die x-Koordinate für jede nms leicht verschoben ist.
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.
(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.
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
Machen Sie die folgenden Variablen jederzeit in der GUI änderbar Gibt an, ob Schriftgröße, Anzahl der Kommentare, maximale Kommentarlänge, Standardgeschwindigkeit der Kommentare und Beschleunigung durch Reislänge, URL, RT angegeben werden sollen (Ich glaube nicht, dass sich das Suchwort so stark ändern wird. Starten Sie es daher neu, um es zu lösen.)
Wenn der nächste Kommentar gesendet wird und der Kommentar in einer Zeile ausgeht, bevor er sich mit dem nächsten Kommentar überschneidet, ist der Ablauf so, dass der nächste Kommentar zu dieser Zeile hinzugefügt wird, um die Originalität zu reproduzieren. → Hiermit wird nicht beurteilt, ob Sie zum linken Ende von (links) gegangen sind und die API für diese Nummer gedrückt haben, um sie zu erhalten, sondern um alle 5 Sekunden num_comment-Tweets, die aktuellen Koordinaten jeder Zeile und v des nächsten Kommentars zu erhalten Da das Urteil unter Berücksichtigung von acc getroffen werden muss, kann die Verarbeitung schwer werden. Und vor allem scheint es, dass der Code erheblich umgeschrieben werden muss. Auch die Verwaltung der y-Achse scheint mühsam zu sein. Ich bin sehr zufrieden mit dem aktuellen Verhalten, deshalb möchte ich Motivation
Schwer. Da es schwer ist, ist es sehr schwer zu erkennen, dass die Verarbeitung abnimmt und sich die Kommentargeschwindigkeit ändert, wenn die Anzahl der Zeichen auf dem Bildschirm zunimmt. Daher möchte ich sie verbessern.
Recommended Posts