COREBlogに天気情報を追加する実装
ただいまテストしています
こういう実装です。
とりあえずテストしてみます。
・RedMagicの現在のお天気を参考にZWeatherApplet , PyMETARをインストールする
・COREBlogWeatherPlugin01aをダウンロードしインストールする
・Zopeを再起動
・COREBlogの "Contents" 内で "ZWeatherApplet" プロダクトを Weather というIDで追加
・StationLocationCodeを選択
・COREBlogの "Contents" 内で "COREBlogWeatherPlugin" プロダクトを weather_plugin というIDで追加
・COREBlogの "Contents" 内にある entry_body , search_results を編集
以下の行の下に
<dtml-comment>### Date posted ###</dtml-comment>
<div class="posted">Posted by <b><dtml-var author></b> at <a href="<dtml-var blogurl missing="">/<dtml-var id>"><dtml-var date_created fmt="%H:%M"></a>
これを追加(新潟は手動で)
<dtml-try>
<dtml-if "weather_plugin.getWeather(id) is None">
<dtml-else>
| 新潟 <img src="<dtml-var "weather_plugin.getWeather(id)">" style="float: none;margin: 0 0em 0em 0;margin-left: 0;margin-right:0;vertical-align:middle;">
</dtml-if>
<dtml-except>
</dtml-try>
・COREBlogの "methods" 内にある "addEntryHook" に以下の行を追加。ない場合はScript(Python)で追加。パラメタはdとする。
container.Weather.refresh()
if container.Weather.getPixmap() is None:
container.weather_plugin.addWeathers(d["id"],"./Weather/misc_/ZWeatherApplet/sun")
else:
container.weather_plugin.addWeathers(d["id"],"./Weather/misc_/ZWeatherApplet/"+container.Weather.getPixmap())
※画面に天気情報を出していない人はcontainer.Weather.refreshで天気を投稿時に再取得します。天気情報を出している人は1行目は不要です。
Posted by
kan164 at
09:47
| 新潟

|
Comments (7)
|
Trackbacks (0)
pyMETERでアクセスしているページと同等のページ
http://weather.noaa.gov/weather/current/RJSN.html
晴れてるときは現状の仕様だとNoneと表示されるのだろうか?
また単に取得していないときだったら?
それだと晴れマークかNoneのパッチが必要になりそうだ
Weatherの更新にはWeather.refreshという処理が必要となります。15分以内に天気情報外部サーバと接続したキャッシュがあればそのままで、なければ取得しにいくという処理です。
その対応としてaddEntryHookの追加する行の上に
container.Weather.refresh
を追加する。
またrefreshするために
cron(14分間隔)でWeather.refreshする処理をdtml等で作成しておいてwgetするのも良いかもしれません。
えっと、私の環境では'Preview Entry'の際にErrorとなります。
ception Type:ValueError
Exception Value:invalid literal for int(): cblog
Tracebackは、上部をばっさり端折って一番下:
Module , line 0, in ?
Module Products.COREBlogWeatherPlugin.COREBlogWeatherPlugin, line 173, in getWeather
ValueError: invalid literal for int(): cblog
...となっています。
時間なくて解決法も示せなくて申し訳ないですが、取り敢えずご報告まで。
r28さん、こんにちは
entry_bodyの修正にdtml-tryがついてますでしょうか
Preview時にはidが付与されないのでそのエラーが発生します。
なので上記の確認をおこなってみてください。
kan164 さん、有り難うございます。
>entry_bodyの修正にdtml-tryがついてますでしょうか
あ、分かりました。dtml-tryはついてるのですが、<dtml-except>が抜けてました。
で、何故これが抜けてたかと云うと、このエントリの説明(追加するソース)では
</dtml-except> となっていて、"Save Changes"した際にここでErrorが出た
ので、dtmlが分からん私は、調べもせずこれを削除してしまった(らしい...寝不足
で朦朧としてて自分でもよく分からない...)のです。
<dtml-except>を入れたら、あっさり動いてくれました。
どうもすみません。お騒がせしました m(__)m
こちらこそ文法間違えており申し訳ありません。
dtml-except修正しました。ご指摘ありがとうございました。
では
Il faut dire que définir l'interface d'une via XUL/CSS est on ne peut plus simple, et qu'il n'y a rien de plus aisé que la création d'applis crosses-plateformes grace à XPFE. Je suis meme étonné qu'aucune autre organisation n'aie songé à tirer parti de tout cela plus tot.
coreblog:261
COREBlog:165
天気:55
COREblog:38
literal:34
weather:31
CoreBlog:31
invalid:30
for:30
zope:29