Sponsored Link

07/04 天気予報

大阪
  最高気温33℃
時間帯6-1212-1818-240-6
降水確率20%10%20% 0%
powered by kenbo.net

カテゴリ別






rss2.0 [Valid RSS]
サイドメニューの一番上に天気予報を表示するようにしました。本来なら気象庁のHPで天気予報のRSSフィードぐらいやってくれてもいいと思うのですが、色々問題があるようです(「もしも天気予報がXMLだったら - その2 できない理由」参照)。

そんななか、天気予報のRSSを実験的に提供して下さる個人サイトがありました(「RSS形式の天気予報を、実験的に公開することにしました」)。天下りの団体から抗議を受けて閉鎖させられるかもしれませんが、それに対抗するkenboさんに感謝しながら利用させて頂いております。

kenboさんのデータは30箇所の天気予報がありますので、そのうち地元の大阪だけを表示するようにしています。そのときの作業内容のメモを以下に記します。

RSSの取り込みにはMagpieRSSを利用しています。これはPHPで動作するRSSパーサで、http://magpierss.sourceforge.net/からダウンロードできます。

これを解凍・展開したものをftpで適当なディレクトリに送ります。このディレクトリは使用時に指定できますので、どこでも構いません。私は'nucleus'ディレクトリの下に作成しました。また、キャッシュディレクトリも使用時に指定できますので、任意のところに作成します。私は、トラックバックピープル時に作成した'/nucleus/media/rsscache'ディレクトリを利用しています。

RSSデータを取り込むために以下のようなmenu_weather.phpファイルを作成します。

define("MAGPIE_DIR", "/virtual/tantris/public_html/nucleus/magpierss/");
define("MAGPIE_CACHE_DIR", "/virtual/tantris/public_html/nucleus/media/rsscache");
$url = "http://web1.aaacafe.ne.jp/~tenki/tenki.xml";

require_once(MAGPIE_DIR."rss_fetch.inc");
$rss = fetch_rss($url);

RSSデータの取り込みはこれだけです。あとは$rssに取り込まれたデータを加工するだけです。また、'rss_fetch.inc'中の'init()'関数で各パラメータのデフォルト値が指定されていますので、それを変更したいときは上記のようにdefine文で定義してやります。

Nulceusで表示させる場合はNucleus上でPHPを実行させる必要があります。そのためNP_IncludeEXプラグインを利用して、スキン編集で以下のように記入します。

<%IncludeEX(php,menu_weather.php)%>

ただし、これを実行させるとエラーとなります。これはMagpieRSSで'debug()'関数を定義しており、これがNucleusの'debug()'関数と衝突しているからです。MagpieRSSでデバグなんてしないのでこれをコメントアウトします。

kenboさんから提供されるデータはテキストだけで少し素っ気ないので加工しています。そのソースは以下のようになっていますが、その説明は省略します。

$image_url = array(
  "晴" => IMAGE_DIR . "hare.gif",
  "くもり" => IMAGE_DIR . "kumori.gif",
  "雨" => IMAGE_DIR . "ame.gif"
);
$kugiri = array(
  "時々" => "|",
  "のち" => "/",
);
echo $rss->channel['title'];
foreach ($rss->items as $item) {
  $title = $item['title'];
  if($title == "大阪") {
    echo "<b>$title</b><br />\n";
    $description = $item['description'];
    $array = split("<br />", $description);
    if(ereg("^(晴|くもり|雨)", $array[1], $regs)) {
      $tenki = $regs[0];
      echo "<img src=$image_url[$tenki] />";
      if(ereg("(時々|のち)(晴|くもり|雨)$", $array[1], $regs)) {
        $var = $regs[1];
        echo $kugiri[$var];
        $var = $regs[2];
        echo "<img src=$image_url[$var] />";
      }
    }
    echo "\n  最高$array[2]\n";
    $rain = array(
      substr($array[3], strlen("雨12時まで"), strlen($array[3])),
      substr($array[4], strlen("雨18時まで"), strlen($array[4])),
      substr($array[5], strlen("雨24時まで"), strlen($array[5])),
      substr($array[9], strlen("雨06時まで"), strlen($array[9]))
    );
    echo "<table>\n";
    echo " <tr><td>時間帯</td><td>6-12</td><td>12-18</td><td>18-24</td><td>0-6</td></tr>\n";
    echo " <tr><td>降水確率</td><td>$rain[0]</td><td>$rain[1]</td><td>$rain[2]</td><td>$rain[3]</td></tr>\n";
    echo "</table>\n";
  }
}

天気の種類に雪がありませんが、まだ雪のときのRSSデータが確認できていませんので実装しておりません。そろそろ北海道で雪になっていくでしょうから、それを確認したあとに実装したいと思います。

あとアップデートした日時を入れたいところなのですが、これも未実装です。RSSデータの中には'lastBuildDate'として提供されているのですが、$rss->channel['lastBuildDate']としても取得できません。ちょっと理由がわからず保留にしています。
2004-10-16 16:56||Nucleus
|TrackBacks(7)

Comments


No comments yet

Add Comments

:

:
:


Trackbacks


Trackbacks

Trackback URL

気象庁 天気 予報まとめさいと 気象庁 天気 予報ファンクラブ pinged on 2008-04-02

気象庁 天気 予報のリンク集形式のサイト情報です。の情報収集にお役立てください。

天気予報を表示(aaacafe+Movable Type) へぼ日記 pinged on 2005-06-25

ブログのトップページに天気予報を設置しました。 今回も、aaacafeの悲しい事...

天気予報を表示させる Blog 3180 // 市民ランナーなっかんのWeblog // pinged on 2005-04-21

出来ちゃいました♪ 天気予報RSS取得PHPスクリプトを利用してホームページやブログに天気予報を表示させる事が!うれしぃなぁ〓♪ 出来上がりはこんな感じ↓インラインフレームで埋め込んでいます。天気予報参考にさ...

サイドバーにRSSを利用した天気予報 eizo slash blog pinged on 2005-04-09

行楽シーズンということもあり、サイドバーに天気予報を表示したいと思いネット上の情...

サイドバーにRSSを利用した天気予報 eizo slash blog pinged on 2005-04-09

行楽シーズンということもあり、サイドバーに天気予報を表示したいと思いネット上の情...

RSSを利用して天気予報を表示したい。 Log Book pinged on 2005-03-25

現在、天気予報をRSSで配信しているサイトは下記のとおりです。 〓goo 天気 ...

天気予報のRSS配信 断崖絶破の備忘録 pinged on 2004-12-19

天気予報のRSS配信サイトが無いものかと探していたのですが gooがいつのまにかはじめていた事に気がついた今日この頃、皆様お風邪など召されておりませんでしょうか?断崖絶破です。 民間の気象情報の提供企業の団...