5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

気象庁のAtomフィールド(XML電文)をラズパイで取得してツイートさせた話

Last updated at Posted at 2020-06-02

##何をしたいか
特務機関NE〇VみたいなTwitterアカウントを完全自己満足で作りたかった
とりあえず地図の自動作成とかは置いておいて気象注意報・警報・地震情報を取得、ツイートさせたい。
##どこから情報を取得するか
「気象庁防災情報XMLフォーマット形式電文」とやらが気象庁HPで公開されていたのでありがたく使わせてもらうことに。
取得できるAtomフィードは
・定時:気象に関する情報のうち、天気概況など定時に発表されるもの
・随時:気象に関する情報のうち、警報・注意報など随時発表されるもの
・地震火山:地震、火山に関する情報
・その他:上記3種類のいずれにも属さないもの
のいずれかを選べるので各自好きなのを選んで以下コードの変数「Atom_URL」を置き換えてください。
なお、この記事は「随時:気象に関する情報のうち、警報・注意報など随時発表されるもの」で進めています。
ファイルを複製して変数「Atom_URL」が異なるファイルを作れば複数の情報を取得することも可能です。
##最終的に何ができるか
こういうのができます
image.png
image.png

##当方の環境とか
Raspberry Pi 3 Model B+、Python 2.7.16[GCC 8.3.0] on linux2。
##TwitterAPIの取得
まずはここから。このあたりを参考にしてTwitterAPIを取得しておいてください。
https://qiita.com/kazupen2018/items/ff9828cc853ab9c3357e
##feedparserのインストール

$ pip install feedparser

##情報を取得する

test.py
# coding: utf-8
from twython import Twython, TwythonError
import feedparser

Atom_URL = "http://www.data.jma.go.jp/developer/xml/feed/extra.xml"
news_dic = feedparser.parse(Atom_URL)
latest_entry = news_dic['entries'][0]
rss1 = latest_entry.title + latest_entry.author
rss2 =  latest_entry.content

print (rss1)
print rss2[0]["value"]

###実行してみる

$ python test.py

###実行結果

気象警報・注意報函館地方気象台
【渡島・檜山地方気象警報・注意報】注意報を解除します。

こんな感じのが出力されることを確認したら次の段階へ。
##取得した情報をツイートする
###Twythonのインストール

$ pip install twython

###コードを書いてみる

JMA_XML.py
# coding: utf-8
from twython import Twython, TwythonError
# 気象庁Atomフィールド
import feedparser

APP_KEY = "ここに取得したAPP KEYを入力"
APP_SECRET = "ここに取得したAPP SECRETを入力"
OAUTH_TOKEN = "ここに取得したOAUTH TOKENを入力"
OAUTH_TOKEN_SECRET = "ここに取得したOAUTH TOKEN SECRETを入力"

# 気象に関する情報のうち、警報・注意報など随時発表されるもの
Atom_URL = "http://www.data.jma.go.jp/developer/xml/feed/extra.xml"
news_dic = feedparser.parse(Atom_URL)
latest_entry = news_dic['entries'][0]
rss1 =  latest_entry.content
rss2 = rss1[0]["value"]

twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

try:
    twitter.update_status(status=rss2)
except TwythonError as e:
    print e

(APP_KEY、APP_SECRET、OAUTH_TOKEN、OAUTH_TOKEN_SECRETは各自置き換えてください)
(取得したいAtomフィールドを変えたい場合は変数「Atom_URL」を置き換えてください)
###実行してみる

$ python JMA_XML.py

###Twitterを確認
image.png
このようにツイートされていたら成功です。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?