Was du lernen kannst
Was du nicht lernen kannst
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