Diffuser les résultats de recherche Twitter comme un certain site vidéo [python]

Puisqu'une certaine idole ne livre pas sur niconico, la diffusion en direct est quelque peu solitaire par rapport à l'idole précédente ... → Pourquoi ne pas superposer un tweet avec une balise de hachage recommandée pour la diffusion en direct?

C'est pourquoi j'ai créé un programme en Python qui fait circuler les résultats de recherche Twitter comme un certain site vidéo.

Diagramme d'image

live.gif

Capturé à partir de https://www.youtube.com/watch?v=G4aogUF_M_Y.

environnement

Windows10 Python3.7.6

Puisque la "couleur -transparent color" de tkinter décrite plus tard est assez dépendante de l'environnement, elle doit être réalisée par une autre notation dans les environnements Linux et Mac. Les personnes dans ces environnements devraient rechercher Google correctement

Code entier

Les spaghettis de l'âme, qui n'ont pas été proprement écrits ou élaborés, roulent ici. Je veux bien me comprendre ces jours-ci.

Écoulement brutal

  1. Inscrivez-vous avec l'API Twitter et obtenez ConsumerKey, ConsumerSecret, AccessToken, AccessTokenSecret.

  2. Créez un cadre transparent avec tkinter

  3. Obtenez le résultat de la recherche avec n'importe quel mot de recherche avec Tweepy et placez la chaîne de caractères du résultat obtenu avec un traitement approprié en tant que texte de Label à une certaine coordonnée.

  4. Reproduisez le flux des commentaires en appelant récursivement le Label placé avec la coordonnée x légèrement décalée pour chaque nms.

  5. Recherchez une ligne où le commentaire a été déplacé vers l'extérieur de l'écran à des intervalles d'environ 5 secondes et réorganisez les résultats de la recherche pour cette ligne.

spécification

Commentaire

(On dirait qui le lit. Mon mémorandum.)

Tout d'abord, utilisez tweepy pour le mot = input () approprié

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

Pour voir si l'utilisateur peut utiliser l'API Twitter. En cas d'échec, passez à reAuth () et entrez CK, CS, AT, AS jusqu'à ce que l'authentification soit réussie, et si elle réussit, écrivez-la dans config.ini. Concernant configparser Module de gestion des fichiers de configuration dans le programme python-Comment utiliser le configparser et les précautions- Voir.

Ensuite, générez un tkinter Frame en plein écran avec un fond transparent. La résolution de l'affichage peut être obtenue ci-dessous.

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

Donnez ceci à width, height de ttk.Frame (). Cadre transparent Créer un cadre avec un arrière-plan transparent avec tkinter [Python] Peut être fabriqué avec.

Je veux que les commentaires circulent sur la vidéo, donc j'ai défini root.wm_attributes (" -topmost ", True) pour que la racine soit au premier plan.

Si le commentaire contient une URL, il sera inutilement long. Exclure les tweets contenant des URL avec tweepy [Python] Exclure avec ʻexURL () comme dans. De plus, si le commentaire contient un saut de ligne, l'étiquette s'étendra sur plusieurs lignes et les commentaires se chevaucheront, alors remplacez-le par text.replace (" \ n "," ")`.

Le résultat de l'acquisition de commentaire results est d'abord copié dans nowdatalist, et le commentaire est mis à jour toutes les 5 secondes environ. En réécrivant l'élément de la ligne à réécrire avecget_comment ()versresults [i], l'écran Les commentaires ci-dessus sont gérés par «now data list».

get_newcomment() Une fonction qui réorganise un nouveau commentaire sur une ligne de commentaires qui a coulé hors de l'écran. La liste «lefted» (le manque de sens à ajouter à gauche à gauche) la rend «True» lorsqu'un commentaire sort de l'écran (coordonnée x <0 d'un certain «label»). S'il y a au moins un «True» dans «lefted» lors de l'exécution de «get_newcomment ()», appuyez sur l'API Twitter pour ce numéro pour obtenir des commentaires et les enregistrer dans «results». En spécifiant since_id lors de la frappe de l'API, la valeur de l'identifiant est supérieure à Tweet id. Recherches à partir d'un groupe de tweets avec un grand nombre. De plus, selon les spécifications de l'API Twitter, vous pouvez accéder à l'API une fois toutes les 5 secondes, mais avec une marge, elle est exécutée une fois toutes les 5,05 secondes.

update_comment() Une fonction qui réécrit réellement l'écran en fonction des résultats obtenus par get_newcomment (). ʻIf (k! = 0 et k% 2 == 0): est utilisé pour casser le commentaire acquis sans le faire passer en une seule fois. Autrement dit, deux commentaires s'écoulent par seconde. Lors de la réécriture de label, le but est de supprimer le label précédent en tant que labels [i] .place_forget () . Si vous ne le faites pas, le précédent label restera dans le Frame`.

$pyinstaller jk.py --onefile Enfin, ce programme est converti en un fichier exe et terminé. Non seulement cela facilite l'exécution sur un PC dans un environnement non Python, Différence de comportement du cadre transparent réalisé avec tkinter dans pyinstaller [Python] C'est parce qu'il y a une raison décrite dans. Je ne pense pas à publier le fichier exe.

Article associé

J'ai beaucoup étudié lors de la réalisation de ce programme, alors j'ai rédigé une note.

Créer un cadre avec un fond transparent avec tkinter [Python] Exclure les tweets contenant des URL avec tweepy [Python] Différence de comportement du cadre transparent réalisé avec tkinter dans pyinstaller [Python] Exécuter Label avec tkinter [Python]

Fonctions que vous souhaitez implémenter à l'avenir

Recommended Posts

Diffuser les résultats de recherche Twitter comme un certain site vidéo [python]
Rechercher sur Twitter avec Python
Rechercher des tweets Twitter avec Python
[Python] Laissez LINE vous informer quotidiennement du classement des résultats de recherche sur votre site.
Ecrire une dichotomie en Python
Écrire une recherche de priorité en profondeur en Python
Rechercher le labyrinthe avec l'algorithme python A *
Faisons un bot Twitter avec Python!