自作コロナ感染人数自動通知スクリプト
どうもはじめまして、東京在住のwangyです
毎日東京コロナ感染者数の自動通知スクリプトを作成いたしました。実行環境はpython3です。
ChatworkのAPIを使って、通知先がChatworkだけでちょっと適用範囲が狭いですが、よろしければお使いください
コード
import urllib.request
import urllib.parse
import csv
import pandas
import datetime
import json
def get_cvoid_infect_num(date):
url = "https://stopcovid19.metro.tokyo.lg.jp/data/130001_tokyo_covid19_patients.csv"
df = pandas.read_csv(url,header=None)
df_filtered = df[df[4]==date.__str__()]
infect_num = len(df_filtered)
return infect_num
def send_to_chatwork(messgae):
chatwork_endpoint = "https://api.chatwork.com/v2"
room_id =
API_TOKEN =
chatwork_api_url = "{}/rooms/{}/messages".format(chatwork_endpoint,room_id)
obj = {"body":message}
data = urllib.parse.urlencode(obj).encode()
req = urllib.request.Request(url=chatwork_api_url,data=data)
req.add_header(key="X-ChatWorkToken",val=API_TOKEN)
with urllib.request.urlopen(req) as res:
response_body = res.read().decode("utf-8")
return
if __name__ == "__main__":
yesterday = datetime.date.today() - datetime.timedelta(1)
infect_num = get_cvoid_infect_num(yesterday)
message = "[info][title]コロナ感染者数通知[/title]昨日({})の東京コロナ感染者数: {}人[/info]".format(yesterday.__str__(),infect_num)
send_to_chatwork(message)
send_to_chatwork関数内のroom_idとapi_token変数に自分用のものを入力すればOKです。
def send_to_chatwork(messgae):
chatork_endpoint = "https://api.chatwork.com/v2"
room_id =
API_TOKEN =
スクリプト解析
データ源は東京都ウイルス対策サイトから提供されるCSVファイルです、毎日の午後17時ぐらい更新されるみたいです
https://stopcovid19.metro.tokyo.lg.jp/data/130001_tokyo_covid19_patients.csv
基本的にはこちらのデータから該当する日付の感染者データをカウントします。
pandasというデータ処理のライブラリを使っています、興味ある方は以下を参照してください
https://pandas.pydata.org/
def get_cvoid_infect_num(date):
url = "https://stopcovid19.metro.tokyo.lg.jp/data/130001_tokyo_covid19_patients.csv"
df = pandas.read_csv(url,header=None)
df_filtered = df[df[4]==date.__str__()]
infect_num = len(df_filtered)
return infect_num
chatworkの送信は以下の関数で処理する、chatwork api tokenやroom_idを入力すればOKです
使用するエンドポイントhttps://api.chatwork.com/v2/rooms/{$room_id}/messages
def send_to_chatwork(messgae):
chatwork_endpoint = "https://api.chatwork.com/v2"
room_id =
API_TOKEN =
chatwork_api_url = "{}/rooms/{}/messages".format(chatwork_endpoint,room_id)
obj = {"body":message}
data = urllib.parse.urlencode(obj).encode()
req = urllib.request.Request(url=chatwork_api_url,data=data)
req.add_header(key="X-ChatWorkToken",val=API_TOKEN)
with urllib.request.urlopen(req) as res:
response_body = res.read().decode("utf-8")
return
chatwork APIの使用方法は以下を参照してください
https://developer.chatwork.com/ja/index.html
おわり
第二回の緊急事態宣言が終了しましたが、コロナの感染がまだ完全に収束するまでまだ遠いなので
マスクをかけ、手洗いを忘れずにで頑張りましょう
Author And Source
この問題について(自作コロナ感染人数自動通知スクリプト), 我々は、より多くの情報をここで見つけました https://qiita.com/WangYuyuLifull/items/6455166c150d134f6aef著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .