PHPでGoo天気RSSを読み込んで表示する

「Gooが天気予報をRSSで配信」というニュースを知り、早速自分のサイトに天気予報を表示しようと試してみた。(今年一番苦労してしまった)地震情報のRSSもあるが、今回は天気だけでいいかなと思っている。
天気のRSSを探していて発見した、とても勉強になる情報をくれた2サイトにも感謝している。
もしも天気予報がXMLだったら - その2 できない理由
kenbo.net 天気予報RSS公開所

まずは自分の「はてなアンテナ」表示用RSSフィード(PHP)を改良してみようと思った。
これはレッツPHP!のRSSフィードを元に作ったのだが、どうもうまくいかない。PEARのXMLパーサ(XML_RSSXML_Parser)を利用しているみたいだが、これだとGooのRSSの「content:encoded」が読み込めなかった。
Gooの天気RSSは、降水確率などの細かい情報がなく、文字だけじゃとてもさびしくなってしまう。なので、「content:encoded」にある天気画像などの情報をそのまま出したかったのだ。

Pearで取れないならばと、Niftyのフォーラムを参考にXMLを読み込んでみるが、これも同じだった。なぜなのじゃ。いろいろ試してみたが無理みたいなので、ほかのXMLパーサを探してみることにした。そこで見つけたのがMagpieRSS。
「MagpieRSS - PHP で使える RSS パーサー」
早速入れてみると、おお!文字化けはするが取得できたぞ。何に化けているか文字コードを調べたところ、「ASCII」と判明した。ASCII!!!情報処理で勉強したぐらいしか知らない単語だ。mb_convert_encodingでASCIIからUTF-8に変換してみたがうまくいかない。MagpieRSSの文字コードがおかしいのかといろいろな文字コードでUploadしてもうまくいかない。この時点で半泣きである。
GooのRSSが悪いのかと思い、このBlogのRSSを読み込ませてみるがだめ。じゃーやっぱりMagpieが怪しいことになる。
MagpieRSSのページで同じ問題がないか調べてみるとあったー!!
kabuguideさんという方がこの問題についてこう書いてくれていた。

「magpieRssの最新版(0.7)だと文字化けがおきてしまいます。」

よかったよかった。貴重な情報ありがとうです。
kabuguideさんのアドバイスを下に、rss_parse.incだけvar0.61にして再度試すと、
できちゃった。(右写真はそのサムネイル)
pic20050305_2225.gif

// Goo天気RSSを読み込むPHP
<?php
include('rss_fetch.inc');

$xml = $_GET["u"];
$rss = fetch_rss($xml);

if($rss){
$items = $rss->items;
foreach($items as $item){
$content = $item["content"]["encoded"];
$content = mb_convert_encoding($content, "UTF-8", "auto");
echo $content;
}
}else{
echo "file not found.";
}
?>

「weather_reader.php?u=http://weather.goo.ne.jp/area/4410.rdf」
こんな感じで読み込むファイルをパラメタで与えて使う。
自分用のPortalサイトに貼り付けてみると、なかなかいい感じだ。
ついでにレッツPHP!さんのところにあった、カレンダーもつけてみた。このカレンダーを少し改造して、
今日は何の日かを見れるようにリンクをはってみた。
(リンク先)今日は何の日 毎日が記念日
毎日が記念日というのはとてもいい言葉だと思う。

あとはキャッシュの仕組みを解明だな~。

| |コメント(2) | トラックバック(1)
trackback url:http://daipresents.com/mt/bin/mt-tb.cgi/638

トラックバック(1)

このブログ記事を参照しているブログ一覧: PHPでGoo天気RSSを読み込んで表示する

gooの天気予報を自分のサイトに取り込んでいる方の記事を見掛けまして、なかなかおもしろそうなんで、この拒にRSSをいぢくり倒してみようかと思い立ちました次第で。... 続きを読む

コメント(2)

magpieRss ver0.71.1

rss_fetch.inc line: 357

if ( !defined('MAGPIE_OUTPUT_ENCODING') ) {
define('MAGPIE_OUTPUT_ENCODING', 'ISO-8859-1');
}

とありますので、

define ( 'MAGPIE_OUTPUT_ENCODING', 'UTF-8' ) ;

と定義してみてはいかがでしょうか?

あーなるほど。そんなところで指定されていたんですねー。

コメントする(反映に時間がかかる場合があります)



賢者のコンテンツ

  • 働く(67)
  • 思い出し笑う(326)
  • 我思う(480)
  • 映画/ドラマ(147)
  • 読む/聴く(198)
  • 過去を語る(21)
  • 風景/場所(65)
  • プロフィール
  •      
   
 daipresents!! フジハラボ 藤原のpicasa
Powered by Movable Type 4

ゴールデンスランバー
夜は短し歩けよ乙女
クラッシュ
永遠の出口 (集英社文庫(日本))
鉄コン筋クリート (1) (Big spirits comics special)
ロスト・イン・トランスレーション
国境の南、太陽の西 (講談社文庫)
グッド・ウィル・ハンティング
手紙
Seventh Sojourn
エレファント デラックス版
The Dark Side of the Moon
家守綺譚 (新潮文庫)