Help us understand the problem. What is going on with this article?

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

何をしたいか

特務機関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
このようにツイートされていたら成功です。

kazupen2018
多趣味オタク。主食はラズベリーパイ。 Twitter → https://twitter.com/kazupen2018
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした