53069


xmlをDiscord.pyで常に取得して更新があったらDiscord上に通知するというコードが書きたいのですが書き方が分かりません。

xmlはこれなのですが・・・  
<http://www3.nhk.or.jp/sokuho/jishin/data/JishinReport.xml>

追記  
イベントは何を使えばいいのかと、  
xml(URLのもの)を表示させるのにどのように変換するのかがわかりません。

ver  
discord.py 1.0.0a  
python 3.6.6

現在自分のできることをするとメッセージのテンプレートしかできておりません。

[code]

        @commands.command()
        async def jisin(self, ctx):
            if ctx.channel.id == 517714262198845460:
                embed = discord.Embed(title="MLSBOT緊急地震速報", description='', color=0xff0000)
                replay = datetime.now().strftime("%Y年%m月%d日 %H時%M分")
                embed.add_field(name="発生時間", value=replay, inline=True)
                embed.add_field(name="深央", value="震央", inline=True)
                embed.add_field(name="深さ", value="30km", inline=True)
                embed.add_field(name="強さ(M)", value="M3.4", inline=True)
                embed.add_field(name="最大震度", value="震度1", inline=True)
                embed.add_field(name="最大震度1を観測した地域", value="・○○\n・××\n・△△", inline=True)
                await ctx.send(embed=embed)
    
[/code]

botに送信させたいメッセージは以下のような感じです。

[![地震の各種情報が書かれている画像です。](https://i.stack.imgur.com/6bCOk.jpg)](https://i.stack.imgur.com/pjSuS.jpg)


CC BY-SA 4.0
2019-02-27T04:11:07.327
53060
2019-02-27T12:42:13.910
2019-02-27T10:05:40.743
32332
32332
question
python python3 discord
discord.pyで地震速報botが作りたい


素朴に書くと、以下の流れを一定の時間間隔ごとに実行する Python プログラムを書くことになるでしょう。

  1. URL から XML をダウンロード。
  2. 変更があるかチェック。
  3. 変更があれば、XML をパースして Python オブジェクトにする。文字コードに注意。
  4. 必要な情報を読み取り、メッセージ用の文字列を作る。
  5. Discord にメッセージを送る。

1～3 の部分は、それぞれ適切なライブラリを使えば簡単に実装できそうです。検索するといくつかでてきます。XML
の各種情報については[「NHKの地震情報を掻っ攫う方法」](https://qiita.com/ot1r/items/aff63d49273ef8be5993)という記事が詳しかったです。

しかし、もし速報性の高い地震速報として使うのであればこのやり方にはやや問題があります。地震速報として機能させるためには地震情報が出てから数秒の内にはメッセージが送信されていることが望ましいですが、そのためにはほんの数秒単位ごとに
NHK
のサイトに対して繰り返しアクセスをかけることになります。[岡崎市立中央図書館事件](https://ja.wikipedia.org/wiki/%E5%B2%A1%E5%B4%8E%E5%B8%82%E7%AB%8B%E4%B8%AD%E5%A4%AE%E5%9B%B3%E6%9B%B8%E9%A4%A8%E4%BA%8B%E4%BB%B6)と、[同事件がウェブスクレイピングに与えた影響](https://vaaaaaanquish.hatenablog.com/entry/2017/12/01/064227)を鑑みるに、あまり高頻度なアクセスをすることにはリスクがあります。また、緊急地震速報が出てからこの
XML が更新されるまでのラグがあるかもしれないことにも注意しておくべきでしょう。逆に、ある程度ラグがあって良いなら上のやり方で目的が達成できます。

もし緊急地震速報 (EEW)
のようなものを実装したいのであれば、[既存の類似アプリたちがどのように実装しているのか](https://www10.atwiki.jp/p2peq/pages/43.html)が参考になるかと思います。個人だと高度利用者向け緊急地震速報の利用は現実的でないので、「緊急地震速報
by Extension」のように Twitter の API 経由で取得する方法などが考えられます。


CC BY-SA 4.0
2019-02-27T10:16:46.687
53069
2019-02-27T12:42:13.910
2019-02-27T12:42:13.910
19110
19110
53060
answer