[PYTHON] Ich twittere nicht, aber ich möchte tweepy verwenden: Zeigen Sie einfach die Suchergebnisse auf der Konsole an

1. Was Sie aus diesem Artikel lernen können und was nicht

Was du lernen kannst

Was du nicht lernen kannst

2. Tatsächlicher Code

twiiter.py


import tweepy
from collections import deque
from threading import Thread

#Minimale Vorbereitung vor der Verwendung von 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)
#Bisher

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
Laut der oben genannten Website wird Tweet auf Twitter aufgenommen
Es gibt ein Gewinnlimit, und wenn Sie auf mehr zugreifen,
Sie müssen vorsichtig sein, da es begrenzt sein wird.
15 Minuten für die Suche in allen Tweets
Es gibt ein Limit von 180 Mal, also alle 5 Sekunden
Das Tempo ist maximal. Sie müssen also nicht in letzter Minute angreifen
Stellen Sie es ungefähr alle 10 Sekunden ein.
            """
            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":'Später' 
            }

    TwitterStreamer(**opts)

Die Erfassungsmethode von "CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET" wird weggelassen. Bereiten Sie es vor, weil es absolut notwendig ist

@decimal1010:2016-04-02 10:36:36
Ist Mitsuanaguma ein Ratel?

@anaguma86:2016-04-02 09:53:06
Ein Ratel, der sich über die Notation von Handdelfinen anstelle von Banddelfinen freut.

@kyuurin525:2016-04-02 09:28:04
Ich öffnete etwas und wurde auf der 5. Seite ein Gefangener von Ratel

@tsube_kii:2016-04-02 08:05:31
Ich wusste nicht, was für ein Tier mit Kion in Lion Guard war, aber Ratel ist ein Tier ...

Bei der Ausführung wird es weiterhin wie folgt an die Konsole ausgegeben.

Recommended Posts

Ich twittere nicht, aber ich möchte tweepy verwenden: Zeigen Sie einfach die Suchergebnisse auf der Konsole an
Ich möchte kühl auf die Konsole ausgeben
Ich möchte Linux auf dem Mac verwenden
Ich möchte IPython Qt Console verwenden
Ich möchte den Fortschrittsbalken anzeigen
Ich möchte Twitter mit Python twittern, bin aber süchtig danach
Zur Zeit möchte ich mit FastAPI zeigen, wie man eine solche API in swagger verwendet
Ich möchte -inf nicht mit np.log verwenden
Ich möchte die Aktivierungsfunktion Mish verwenden
Speichern Sie Suchergebnisse auf Twitter in CSV.
Ich möchte den Fortschritt in Python anzeigen!
Ich möchte Python in der Umgebung von pyenv + pipenv unter Windows 10 verwenden
Ich möchte in der Django-Verschiebungstabelle scrollen, aber ...
Ich möchte OpenJDK 11 mit Ubuntu Linux 18.04 LTS / 18.10 verwenden
Ich möchte R-Datensatz mit Python verwenden
Ich habe versucht, YouTube zu kratzen, aber ich kann die API verwenden, also tu es nicht.
Ich möchte das neueste gcc verwenden, auch wenn ich keine Sudo-Berechtigungen habe! !!
Ich möchte nur die SudachiPy-Normalisierungsverarbeitung verwenden
[Python] Ich möchte die Option -h mit argparse verwenden
Ich möchte vorerst die Desktop-Umgebung von Ubuntu auf Android verwenden (Termux-Version)
Ich möchte vorerst Ubuntus Desktop-Umgebung auf Android verwenden (UserLAnd-Version)
[Selenium] Ich möchte den Browser anzeigen, indem ich den Treiber auf dem Host-Betriebssystem von WSL aus drücke
Ich möchte nicht nach High Para suchen, da es sich um IQ1 handelt (wie man lightgbm_tuner verwendet).
Ich möchte Shortcut-Übersetzungen wie die DeepL-App auch unter Linux verwenden
Ich habe eine Kreuzvalidierung basierend auf dem Rastersuchergebnis mit scikit-learn versucht
Ich möchte die Desktop-Umgebung von Ubuntu vorerst auch unter Android verwenden (Termux-Version - japanische Eingabe in der Desktop-Umgebung).
Ich möchte ein Bild auf Jupyter Notebook mit OpenCV (Mac) anzeigen.
Suchen Sie mit tweepy nach Twitter-Keywords und schreiben Sie die Ergebnisse in Excel
Ich möchte den Erfolg von NBA-Spielern mit dem Qore SDK vorhersagen
Ich möchte Spyder an die Taskleiste anheften
Ich möchte mit dem Reim Teil1 umgehen
Verwendung von Tweepy ~ Teil 1 ~ [Getting Tweet]
Ich möchte mit dem Reim part3 umgehen
Ich möchte ein Glas aus Python verwenden
Ich bin ein Amateur am 14. Tag von Python, aber ich möchte maschinelles Lernen mit Scicit-Learn ausprobieren
Ich möchte mit dem Reim part2 umgehen
Ich möchte Android-Apps auf Android entwickeln
Ich möchte mit dem Reim part5 umgehen
Ich möchte mit dem Reim part4 umgehen
Die mit vim bearbeitete Datei war schreibgeschützt, aber ich möchte sie speichern
Python Ich weiß nicht, wie ich den Druckernamen bekomme, den ich normalerweise benutze.
Ich möchte nur scipy hinzufügen, aber es ist ein lustiges Memo. Ubuntu, Python 3.
Ich möchte PyTorch verwenden, um so etwas wie den Text von Japari Park zu generieren
Ich habe versucht, den Grad der Koronavirusinfektion auf der Seekarten-Wärmekarte anzuzeigen
[Schreiben] Ich möchte die im Programm verwendeten Variablen auf der Serverseite in Echtzeit im Browser anzeigen und aktualisieren.
Ich möchte MATLAB feval mit Python verwenden
Ich möchte mehrere Bilder mit matplotlib anzeigen.
Ich möchte mit dem Reim part7 (BOW) umgehen
Ich möchte keinen Codierungstest machen
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Ich möchte Ceres Solver aus Python verwenden
Ich möchte ip vrf mit SONiC verwenden
Ich möchte pyenv + pipenv auch unter Windows machen
Ich möchte die Eingabe / Ausgabe von Dateien unter Linux protokollieren
Ich möchte das Erscheinungsbild von zabbix anpassen
Ich benutze Python, aber ich kenne die Klasse nicht gut, deshalb werde ich ein Tutorial geben
Ich möchte eine Python-Datenquelle in Re: Dash verwenden, um Abfrageergebnisse zu erhalten
Ich möchte die Standortinformationen von GTFS Realtime auf Jupyter zeichnen! (Mit Ballon)
Ich habe versucht zu verstehen, wie Pandas und multiple Co-Linearität unter Verwendung des Affairs-Datensatzes als Thema verwendet werden.
[Siehe nicht 04.02.17] Zeigen Sie den Temperatursensor in Echtzeit in einem Diagramm mit Himbeer-Pi 3 an