ちょっと前に紹介した 「moblog.uva.ne.jp の 「まど」 をホームページに」でつくった、
cgiプログラム get_moblog.cgi のプログラムを書き直しました。フィルターを使えるようにしました。除外したい url や特定 url の表示が行えるはずです。
プログラムは get_moblog_v2.0.py
もしフィルターを書きたい場合は、適当なファイル名、例えば moblog_acl.acl ファイルを用意し最初に + - * を書き、スペースまたは タブで区切り、ファイル名 を書いてください。
+ はこの url のみ表示。 - は表示しない。 - の場合は最後の行に * * を書いてください。
暗黙で最後はすべて表示しないがはいります。条件は、一行にひとつ、url がひとつです。
ファイルが用意できたら、適当なフォルダーにコピーし、get_moblog.cgi の最初のほうにある
moblog_acl = "./moblog_acl.acl"
に ディレクトリー/ファイル名 を書いてください。
ファイルが存在しない、正しく読めなければフィルターは働かずすべて表示してくれます。
METAR という空港の気象情報システムがあるそうな。でこれようの、python モジュール PyMETAR が存在するなり。。これを使えば天気を表示できたなり。。わたしのへぼい、cgi など使わんでもいいなり。ま、せっかく作って、お勉強したのでよしとしようなり ^^;
get_weather.py
get_weather_v3.2.py
get_weather_v3.3.py
get_weather_v3.4.py
get_weather_v3.5.py
get_weather_v3.5.3.py
get_weather_v3.5.4.py
このプログラムは非商用にかぎり自由にご利用ください。、一応著作権は放棄しておりません。
python 2.2* 2.3* で確認しております。
V0.3.5.4に変更します。 6/25 14:20
天気を日本語表記にしました。もし英語の時は、予想してない天気ということでそのとき追加します。
V0.3.5.3に変更します。 6/14 15:51
いやはや、今日の天気、condition がない場合、weatherData[key, 値] がエラーになります。
weather データーをつくるとき、キーと値の設定をしますが、キーしか設定できていないことが起きるわけです。値がない場合は "--" というデーターを入れました。 src の 3.5.3 のコメントを見て下さい。
V0.3.5に変更します。 3/12 23:15
reduce 、filter等々 を使い、正規表現をみなおし少しコンパクトにしました。
V0.3.4に変更します。 3/10 18:40
calendar モジュールをいれ
今日の曜日を日本語でいれ、表示も 2004/3/10 のようにしました。
明日の天気が時間によって今日になっていたのを、曜日を確認し翌日になるようにしました。
V0.3.3に変更します。 3/8 17:40
正規表現を書き直しました。 パターンの書き方におおきな誤りがありました。raw string で書かないといけないところを、そのまま書いてました。きっと \s|. のように OR でつかっていたので偶然動いただけです。
v0.3.2 に変更します。
while ループを、for in に変更しました。
re.compile を使い、正規表現が複雑そうなものはループの外で計算させるようにしました。
string.find(hoge, patern) を hoge.find(patern) に変更しました。
/font>
設置する場合は、拡張子を cgi にし テンプレート Main Index に次のように書いていただければいいかと思います。
<div class="weather"&g
t
<iframe src=" http://heididorf.sakura.ne.jp/cgi-bin/get_weather.cgi" frameborder=0 width=220
height=500 scrolling=no title="お天気予報"></iframe>
</div>
今回、最初、何行目のある文字の後ろにこのデータがあると決めうちで書いてみましたが、時間によってある項目が減ったり、増えたりして、また、都市によってデーターが存在する行が変化するため汎用性が大変低くなりました。そこで、アイディアを練り直し、データーをリスト、ディクショナリを使ってはまとめるようにしました。
なにぶん、通常のプログラムはすべて awk で、簡単なcgi は AWK で書いてしまいますので、python は超初心者です。マニュアルをみながら書いたのですが、python の日本語情報は存在するのですがやはり難解な部分が多く、テストを繰り返してしたいことを、試行錯誤しながら書いています。
python は、変数の宣言はいらないのですが、いきなりリスト、ディクショナリーに新規追加ができないようで、若干とまどいました。また、AWK は c ライクな書き方をするのですが、python はかっこを使わないということ、ループ、if などには : を使うなど、AWK ユーザーにはやはり頭がたこになりますね。ただし、プログラムは、覚えれば書きやすい、読みやすうと思います。
最後に get_weather_v3.py は、むちゃくちゃ計算が遅いです。なぜ? <--- 正規表現の使い方がむちゃくちゃだから?
左フレームに天気予報、日/月の出、日/月の入りを表示するようにしました。
みてわかるように、The Weather Underground, Inc. の、mobile用のページ情報を読み込んで、cgi で天気ホームページをつくり< iframe> で埋め込んだ。ここのホームページには、Free Weather Stickersも用意されているが、今回は文字ベースで表示したかったのでプログラムを書くことにした。perl 用には、Weather-Undergroundがあるようであるが、自分は perl きらい人間でるので、python で cgi を書くことにした。しかし、とりあえず動いてはいるが、実は時間によって情報の増減がある。ある情報がある時間にはあるが、ある時間には消えていたりすることがわかった。純粋に、テキストベースの情報があればうれしいのだが、ここのホームページは迷路のようで、情報を探せなかった。とりあえず、常にある情報のみ表示させることにした。もう少し、プログラムの改良を行い、形になったら、ソースを公開したいと思う。
お願い : 自由にご利用ください。ただし自己責任で、プログラムをきちんと理解してお使いください。
まず、http://moblog.uva.ne.jp の <img> タグ、<a href> タグ情報をとってくる必要があります。
python で簡単な通信プログラム、CGI を書きました。
#!/usr/local/bin/python |
---|
上記 CGI を適当なディレクトリーにコピーしてください。
つぎに、下記 内容をテンプレートに書き込み。
<div class="show_moblog"> <meta http-equiv="Refresh" content="60"> |
---|
iframe をつかい、 新しい フレームを作成し、 http-equiv の Refresh と、content の値で
指定時間ごとに新しい情報を取得します。
style sheet には、class show_moblog を適当に作成ください。