[PYTHON] Je ne tweet pas, mais je souhaite utiliser tweepy: affichez simplement les résultats de la recherche sur la console

1. Ce que vous pouvez et ne pouvez pas apprendre de cet article

Ce que tu peux apprendre

Ce que tu ne peux pas apprendre

2. Code réel

twiiter.py


import tweepy
from collections import deque
from threading import Thread

#Préparation minimale avant d'utiliser tweepy
CONSUMER_KEY='XXXXXXX'
CONSUMER_SECRET='XXXXXXXX'
ACCESS_TOKEN='XXXXXXXX'
ACCESS_SECRET='XXXXXXXX'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
#Jusque là

class Format(object):
    """Class to provide with a variety of formats."""

    def __init__(self, tweet):
        """Store some data of tweets in a hash-table. """
        self.status = {
                'text': tweet.text,
                'author': tweet.author.screen_name,
                'reply_name': tweet.in_reply_to_screen_name,
                'created_at': tweet.created_at,
                }

class StreamingFormat(Format):

    def format(self):
        """Format tweet text readable with some information."""
        author     = self.status['author']
        created_at = self.status['created_at']
        string = '@\033[33m{}\033[0m:{}\n'.format(author, created_at)
        string += self.status['text']
        string += '\n'
        return string

class Memory(deque):
    """Class to have hashed tweet contents."""

    def __init__(self, capacity):
        """Define max capacity of self."""
        super().__init__()
        self.capacity = capacity

    def append(self, item):
        """Append unless over capacity."""
        if len(self) > self.capacity:
            self.popleft
        super().append(item)

class Producer(Thread):
    """Class to get tweets and avoid duplication. """

    def __init__(self, queue, api, query):
        """ Initialize memory to avoid duplication. """
        super().__init__(target=self.main)
        self.api = api
        self.queue = queue
        self.query = query
        self.memory = Memory(1000)
    
    def main(self):
        """ Thread to add tweets to queue. """
        while True:
            for tweet in self.twigen():
                if tweet is not None:
                    self.queue.put(tweet)
            """
            https://syncer.jp/what-is-twitter-api-limit
Selon le site ci-dessus, Tweet est pris sur Twitter
Il y a une limite de profit, et si vous accédez à plus que cela,
Vous devez être prudent car il sera limité.
15 minutes pour rechercher dans tous les Tweets
Il y a une limite de 180 fois, donc une fois toutes les 5 secondes
Le rythme est maximum. Vous n'êtes pas obligé d'attaquer à la dernière minute, alors
Réglez-le toutes les 10 secondes environ.
            """
            time.sleep(10)

    def twigen(self):
        """Yield a tweet after hashing the tweet and memorizing it"""
        import hashlib

        tweets = self.api.search(q=self.query, count=100)
        for tweet in tweets:
            hashing = hashlib.md5(tweet.text.encode('utf-8'))
            hashed_tweet = hashing.hexdigest()
            if hashed_tweet in self.memory:
                yield None
            else:
                self.memory.append(hashed_tweet)
                yield tweet

class Consumer(Thread):

    def __init__(self, queue):
        super().__init__(target=self.main)
        self.queue = queue

    def main(self):
        """Take tweet from queue and print it."""
        while True:
            q = self.queue.get()
            f = StreamingFormat(q)
            print(f.format())
            time.sleep(1)

class TwitterStreamer(object):
    """Class to print formatted tweet data on console."""

    def __init__(self, api, query=None):
        from queue import Queue

        queue = Queue()
        Producer(queue, api, query).start()
        Consumer(queue).start()

if __name__ == '__main__':

    opts = {
            "api":tweepy.API(auth), 
            "query":'Plus tard' 
            }

    TwitterStreamer(**opts)

La méthode d'acquisition de CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET est omise. Préparez-le car c'est absolument nécessaire

@decimal1010:2016-04-02 10:36:36
Mitsuanaguma est-il un ratel?

@anaguma86:2016-04-02 09:53:06
Un ratel qui s'enthousiasme pour la notation des dauphins à main au lieu des dauphins de bande.

@kyuurin525:2016-04-02 09:28:04
J'ai ouvert quelque chose et suis devenu captif de Ratel à la 5ème page

@tsube_kii:2016-04-02 08:05:31
Je ne savais pas quel genre d'animal était avec Kion dans Lion Guard, mais Ratel est un animal ...

Lorsqu'il est exécuté, il continue à être envoyé à la console comme ceci.

Recommended Posts

Je ne tweet pas, mais je souhaite utiliser tweepy: affichez simplement les résultats de la recherche sur la console
Je veux sortir froidement sur la console
Je veux utiliser Linux sur mac
Je souhaite utiliser la console IPython Qt
Je veux afficher la barre de progression
Je veux tweeter Twitter avec Python, mais j'y suis accro
Pour le moment en utilisant FastAPI, je veux montrer comment utiliser l'API comme ça dans swagger
Je ne veux pas utiliser -inf avec np.log
Je souhaite utiliser la fonction d'activation Mish
Enregistrez les résultats de la recherche sur Twitter au format CSV.
Je veux afficher la progression en Python!
Je souhaite utiliser Python dans l'environnement de pyenv + pipenv sous Windows 10
Je veux faire défiler la table de décalage Django, mais ...
Je souhaite utiliser OpenJDK 11 avec Ubuntu Linux 18.04 LTS / 18.10
Je veux utiliser le jeu de données R avec python
J'ai essayé de gratter YouTube, mais je peux utiliser l'API, alors ne le faites pas.
Je veux utiliser la dernière version de gcc même si je n'ai pas les privilèges sudo! !!
Je souhaite utiliser uniquement le traitement de normalisation SudachiPy
[Python] Je souhaite utiliser l'option -h avec argparse
Je souhaite utiliser l'environnement de bureau d'Ubuntu sur Android pour le moment (version Termux)
Je souhaite utiliser l'environnement de bureau d'Ubuntu sur Android pour le moment (version UserLAnd)
[Selenium] Je souhaite afficher le navigateur en appuyant sur le pilote du système d'exploitation hôte à partir de WSL
Je ne veux pas rechercher de para haut parce que c'est IQ1 (comment utiliser lightgbm_tuner)
Je souhaite utiliser la traduction de raccourcis comme l'application DeepL même sous Linux
J'ai essayé la validation croisée basée sur le résultat de la recherche de grille avec scikit-learn
Je souhaite utiliser l'environnement de bureau d'Ubuntu même sur Android pour le moment (entrée version japonaise de Termux dans l'environnement de bureau)
Je souhaite afficher une image sur Jupyter Notebook à l'aide d'OpenCV (mac)
Recherchez des mots-clés Twitter avec tweepy et écrivez les résultats dans Excel
Je veux prédire le succès des joueurs NBA utilisant le SDK Qore
Je veux épingler Spyder à la barre des tâches
Je veux gérer la rime part1
Comment utiliser Tweepy ~ Partie 1 ~ [Obtenir un Tweet]
Je veux gérer la rime part3
Je veux utiliser jar de python
Je suis un amateur le 14e jour de python, mais je veux essayer l'apprentissage automatique avec scicit-learn
Je veux gérer la rime part2
Je souhaite développer des applications Android sur Android
Je veux gérer la rime part5
Je veux gérer la rime part4
Le fichier édité avec vim était en lecture seule, mais je veux le sauvegarder
python Je ne sais pas comment obtenir le nom de l'imprimante que j'utilise habituellement.
Je veux juste ajouter scipy, mais c'est un mémo amusant. Ubuntu, Python 3.
Je veux utiliser PyTorch pour générer quelque chose comme les paroles de Japari Park
J'ai essayé d'afficher le degré d'infection par le virus corona sur la carte thermique Seaborn
[Ecriture] Je souhaite afficher les variables utilisées dans le programme côté serveur en temps réel sur le navigateur et les mettre à jour.
Je veux utiliser MATLAB feval avec python
Je souhaite afficher plusieurs images avec matplotlib.
Je veux gérer la rime part7 (BOW)
Je ne veux pas passer un test de codage
Je souhaite utiliser le répertoire temporaire avec Python2
Je veux utiliser le solveur ceres de python
Je souhaite utiliser ip vrf avec SONiC
Je veux faire pyenv + pipenv même sous Windows
Je veux enregistrer les entrées / sorties de fichiers sous Linux
Je souhaite personnaliser l'apparence de zabbix
J'utilise python mais je ne connais pas bien la classe, donc je vais donner un tutoriel
Je souhaite utiliser une source de données python dans Re: Dash pour obtenir les résultats de la requête.
Je veux tracer les informations de localisation de GTFS Realtime sur Jupyter! (Avec ballon)
J'ai essayé de comprendre comment utiliser les pandas et la colinéarité multiple en utilisant l'ensemble de données Affaires comme thème.
[Ne pas se référer au 04.02.17] Afficher le capteur de température dans un graphique en temps réel avec rasberry pi 3