Twitterbot, der automatisch Tweets im Zusammenhang mit Koronaviren retweetet, die von japanischen öffentlichen Institutionen gesendet wurden
https://twitter.com/CovidJaGovRT
Kann ich mit wachsender Angst vor dem Corona-Virus jeden Tag etwas alleine tun? Ich dachte. Deshalb habe ich kürzlich eine App erstellt, die die Twitter-API verwendet, und ich denke, sie kann verwendet werden, um korrekte Informationen über Koronaviren zu verbreiten. Da ich jedoch keine Kenntnisse über Viren habe, kann ich nicht beurteilen, was die richtigen Informationen sind, geschweige denn die falschen Informationen verbreiten und verwirren. Deshalb möchte ich sie vermeiden. Unter anderem kam mir die Idee, die von lokalen Regierungen und Ministerien, die öffentliche Einrichtungen sind, gesendeten Informationen zum Koronavirus zu verwenden. Ich möchte, dass Sie genau sind und mehr über die Informationen erfahren, die von Personen bereitgestellt werden, die für Anwohner in öffentlichen Einrichtungen arbeiten. Vor diesem Hintergrund habe ich einen Bot erstellt, der Tweets über Coronavirus-Informationen von öffentlichen Institutionen retweetet.
serverless.yml
service: gov-info-COVID-19
plugins:
- serverless-python-requirements
provider:
name: aws
runtime: python3.8
stage: prod
region: ap-northeast-1
custom:
defaultStage: prod
profiles:
prod: sls
otherfile:
environment:
prod: ${file(env.yml)}
functions:
RT_bot:
handler: handler.main
events:
- schedule: cron(*/20 * * * ? *)
environment:
CONSUMER_KEY: ${self:custom.otherfile.environment.${self:provider.stage}.CONSUMER_KEY}
CONSUMER_SECRET: ${self:custom.otherfile.environment.${self:provider.stage}.CONSUMER_SECRET}
ACCESS_TOKEN: ${self:custom.otherfile.environment.${self:provider.stage}.ACCESS_TOKEN}
ACCESS_TOKEN_SECRET: ${self:custom.otherfile.environment.${self:provider.stage}.ACCESS_TOKEN_SECRET}
handler.py
import configparser
import json
import os
import sys
import re
import logging
import traceback
sys.path.append(os.path.join(os.path.dirname(__file__), 'lib'))
from lib import tweepy
#Für die lokale Entwicklung
OAUTH_INI = configparser.ConfigParser()
OAUTH_INI.read('oauth.ini', encoding='utf-8')
CONSUMER_KEY = os.environ['CONSUMER_KEY']
CONSUMER_SECRET = os.environ['CONSUMER_SECRET']
ACCESS_TOKEN = os.environ['ACCESS_TOKEN']
ACCESS_TOKEN_SECRET = os.environ['ACCESS_TOKEN_SECRET']
def main(event, context):
tweepy_api = tweepy_oath()
retweet(tweepy_api)
#Twitter API-Authentifizierung
def tweepy_oath():
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
return tweepy.API(auth)
#Retweet-Tweets mit dem Zielwort aus Ihrer Timeline
def retweet(tweepy_api):
exclude_exp_obj = re.compile(r'.*(Corona|COVID)(.|\s)*$')
for tweet in tweepy_api.home_timeline(count=200):
if exclude_exp_obj.match(tweet.text):
id = tweet.id
try:
tweepy_api.create_favorite(id)
tweepy_api.retweet(id)
#Das Auftreten einer Ausnahme hinterlässt nur ein Protokoll und beendet die Verarbeitung nicht
except:
logging.error(traceback.format_exc())
pass
Ich hoffe aufrichtig, dass sich das Koronavirus so schnell wie möglich beruhigt und zum Frieden zurückkehrt.