goo、全国約140カ所の天気情報や地震情報をRSSで配信にあるとおり、gooは昨年末から全国各地の天気予報のRSSを配信しています。でも上記の記事にもあるように、このRSSの更新は1日3回で「6時30分・11時30分・17時30分」となっています。なので、天気予報の細かい変化をというよりは、気象庁の発表した予報の一部を軽いデータとして配信していると捉えた方が良いようです。で、その程度のデータで、随時更新だと特に使いみちがなあと思っていたのですが、ウィルコムの定額にしてるとメールも定額なので、RSSの更新の度に電話にメールで送るようにしようかなと思いました。
gooの天気予報のRSSをどうこうするというのは他にいくらでもあるのですが、極簡単にできるものなので書いちゃいました。

下記のソースをgootenkirss.pyとして、第1引数にメールアドレス、第2引数に地域コードを指定して、
[setomits@vaio python]$ ./gootenkirss.py foo@example.com 4410
と実行すると、
Subject: 東京(東京)の天気 From: tenki@matatabi.homeip.net 明日(5/5)の天気「晴れ」
というメールが届くわけです。地域コードてのは、gooの天気予報では例えば東京ならURL(http://weather.goo.ne.jp/area/4410.html)の中の4410が、例えば大阪ならURL(http://weather.goo.ne.jp/area/6200.html)の中の6200がそれにあたります。
あとはこれを定期的に実行するようにcron様にお願い。

何時にどこそこの天気予報をどこそこのメールアドレスに送ってちょという人はsetomits@gmail.comまでどうぞ。
ということでソースはこんな感じ。

#!/usr/bin/env python # -*- coding: euc-jp -*- import sys, smtplib, feedparser addr = sys.argv[1] area = sys.argv[2] url = "http://weather.goo.ne.jp/area/%s.rdf" % area data = feedparser.parse(url) title = data.feed.title.split()[0] content = data.entries[0].title.split()[0] msg = "From: tenki@matatabi.homeip.net\r\n" msg += "To: %s\r\n" % addr msg += "Subject: %s\r\n\r\n" % title.encode("iso-2022-jp") msg += "%s" % content.encode("iso-2022-jp") server = smtplib.SMTP("localhost") server.sendmail("tenki@matatabi.homeip.net", addr, msg) server.quit()
Posted by setomits at 01:40 | Comments: 3
Re: 天気予報をメールで電話に
夕方に来たのを見ると、「今日の天気」ってなってて変だなと思ったんだけど、RSSの中を読んでみると、
<lastBuildDate>Thu, 05 May 2005 17:52:10 +0900</lastBuildDate>

とのこと。
プログラムの実行は7時・12時・18時とかにしといたほうが良いかな。
Posted by setomits at 07:10 on 2005 May 5th
Re: 天気予報をメールで電話に
私の環境だと,

今日(5/7)の天気「雨

という結果になります.
要は,末尾の" - goo天気"のみを切りたいんであれば,

content = data.entries[0].title[:-9]

とかに変更してみるとか.
Posted by 通りすがりA at 11:17 on 2005 May 7th
Re: 天気予報をメールで電話に
あー、ほんとだ。最後の閉じかっこがなくなってる。きづかなんだ。

( ... ソースを書き直してテストをして ... )

なるほど。split()しちゃってると、「くもり のち 晴れ」なんかも分割しちゃって、最初のくもりだけしかこないとかってなってたわけですね。
ありがとうございます。
ほんとはreplaceにしようかなとも思ったのですが、

content = data.entries[0].title.replace(u" - goo天気", "")

と書くとあまりにも生々しいというか、よろしくないかなと思ったのでした。

でも確かに

content = data.entries[0].title[:-9]

なら生々しさはないですね ;-)
Posted by setomits at 12:24 on 2005 May 7th
Leave a comment
Required fields are marked with *
search
calendar
Nov 2009
SunMonTueWedThuFriSat
1234567
891011121314
15161718192021
22232425262728
2930     
archives
photos on flickr
www.flickr.com
bookmarks on delicious