신형 코로나 감염자 수를 표시하는 BOT 만들기

이번에 만드는 것



Ultimate 우수한 사람들

도도부현별 신형 코로나 바이러스 감염자 수 맵
htps : // 기 s. 그럼 꺄. 코 m/코ゔぃd19jp/

라고 하는 사이트를 만들고 계시는데, 나는 거기까지 가까워지지 않기 때문에, 감염자수의 내역을 표시하는 BOT를 만들어 보려고 했습니다.

같은 사이트에 감염자수의 데이터가 json 파일로 두고 있었으므로, 그쪽을 사용시켜 주려고 합니다.

https://services6.arcgis.com/5jNaHNYe2AnnqRnS/arcgis/rest/services/COVID19_Japan/FeatureServer/0/query?where=%E9%80%9A%E3%81%97%3E0&returnIdsOnly=false&reson &orderByFields=%E9%80%9A%E3%81%97

환경


  • windows10
  • discord.py 1.2.3
  • 파이썬 3.7.3

  • 사전 준비



    discord.py를 이용한 Discord BOT의 작성이나 기본은 이하의 사이트를 알기 쉽습니다.

    Python으로 간단한 Discord Bot을 만드는 방법
    htps : // 코 m / 피나 p 푼 r / ms / 아 f4 cd b04727437477f
    Discord Bot 가장 빠른 튜토리얼【Python&Heroku&GitHub】
    htps : // 이 m / 1은 g 등 9 / ms / 아 4b373 8895273875 8

    만들기



    먼저 위의 json 파일을 다운로드하는 프로그램을 만듭니다.
    urllib을 사용하면 쉽게 다운로드 할 수 있습니다.

    download.py
    import urllib.request
    
    def download():
        url = 'https://services6.arcgis.com/5jNaHNYe2AnnqRnS/arcgis/rest/services/COVID19_Japan/FeatureServer/0/query?where=%E9%80%9A%E3%81%97%3E0&returnIdsOnly=false&returnCountOnly=false&&f=pgeojson&outFields=*&orderByFields=%E9%80%9A%E3%81%97'
        title = 'COVID-19_data.json'
        urllib.request.urlretrieve(url, "{0}".format(title))
    

    이어서 BOT 본체를 만듭니다.

    main.py
    import download
    import json
    from collections import defaultdict
    import discord
    
    TOKEN = '任意のトークン'
    CHANNEK_ID = '任意のチャンネルID'
    client = discord.Client()
    
    # 起動時に表示
    @client.event
    async def on_ready():
        print('Logged in as')
        print(client.user.name)
        print(client.user.id)
        print('------')
    
    # メッセージを受け取った時
    @client.event
    async def on_message(message):
        # botからのメッセージは無視
        if message.author.bot:
            return
        if message.content.startswith("!count"):
            #jsonファイルをロード
            download.download()
            json_open = open('COVID-19_data.json', 'r', encoding="utf-8_sig")
            json_load = json.load(json_open)
            jsn = json_load
    
            #居住都道府県名と数をdefaultdictで保持
            properties = defaultdict(int)
            for f in jsn['features']:
                property = f['properties']['居住都道府県']
                if property == '中華人民共和国' or property == '調査中' or property == '不明':
                    continue
                if property not in properties:
                    properties[property] = 0
                properties[property] += 1
            #一行ずつ出力すると時間がかかるので出力内容をあらかじめ保持
            say = ''
            for p in properties:
                say += p + ' ' + str(properties[p]) + '\n'
            await message.channel.send(say)
    
    client.run(TOKEN)
    

    이상이 신형 코로나 바이러스의 각 도도부현의 감염자수를 표시하는 BOT의 프로그램입니다.

    결과



    데이터 !!!!


    실은 좀 더 출력되고 있습니다만, 캡쳐 사이즈의 관계로 들어갈 수 없었습니다. 양해 바랍니다.

    결론



    추억으로 대략 만든 것이므로, 실수나 스마트하게 할 수 있는 장소가 있을지도 모릅니다. 그 때는 지적하실 수 있으면 다행입니다.
    아직도 신형 코로나 바이러스의 맹위는 멈추지 않습니다. 여러분 조심하고 보내십시오.

    트위터
    htps : // 라고 해서 r. 코 m / 하세가와 2718

    좋은 웹페이지 즐겨찾기