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