調べてみたところ、商用で使えるのは、有償の物ばかりだった。
結局金か。。。と思ったけど、個人利用は無償の物もあるので、勉強がてら作ってみる。
ほとんど、見たサイトのまんまとなる。
まずは、情報提供先について、さっきも書いたけど、商用利用可能は有償ばかり。
先に調べてまとめて居られる方がいたので、リンクをお借りする。
Webサイト制作やアプリ開発で使える天気予報APIのまとめ
http://hello-apis.blogspot.jp/2013/03/webapi.html
このなかで、今回は Livedoor の Weather Hacks を利用してみようと思う。
LivedoorWeather Hacks
http://weather.livedoor.com/weather_hacks/
いわゆる Web API と言う物の様だ。
以下の URL にパラメータを付けてアクセスすれば、お天気情報が JSON で返ってくる。
(他の形式もサポートしていたらしいが、現在は JSON 形式のみの様だ)
http://weather.livedoor.com/forecast/webservice/json/v1?city=[cityID]ここで渡す cityID については、
「 全国の地点定義表(RSS) 内の「1次細分区(cityタグ)」のidをご参照下さい。」
と、書かれている通りのIDを渡せば良いのだが、RSS形式で提供されている様だが、どうやってみたら良いか分からなかった。
そこで、 「1次細分区」をキーワードに検索をかけて見たところ、ID の情報は出てくるが、例に書かれてある数値とはかけ離れていた(例えば、佐賀県 伊万里=410020 と書かれてあるが、見つけたIDでは、佐賀県 伊万里は、123)。
何か変換がいるのか?それとも。。。と悩んだが結果的には、ID のコード体系が変わっている事が分かった。
それは、新旧のコード比較をしている方のページより発覚した。
『Weather Hacks』のRSSデータ配信が停止 1次細分区(cityタグ)の新旧対応表を作ってみた
http://gurizuri0505.halfmoon.jp/20130511/56720
たぶん、上に書いてある RSS には、変更後のコードが書かれているのであろう。
これで、取得条件は整った。
あとは、これを使って処理を行い表示するだけとなった。
手元で簡単にと言う事で、JavaScript で処理できる方法を調べた。
Livedoor の天気予報API(JSON版)を使ってブログパーツを作ってみる
http://hello-apis.blogspot.jp/2013/03/livedoor-apijson.html
そのまま、ドンピシャでやりたい事を行っている人がいたので、早速コードを拝借して確認してみた。
コードを確認しているときに、これまた同じ方の「JSONをJSONPに変換するYahoo PipesのAPI」の記事をみて、改めてこのような仕組みを有ることを学んだ。
そして、ローカルでファイルを作成し表示してみた。
おお!完璧。
取得したデータには、明日や明後日のデータやその他有るので、何かの機会に使ってみようと思う。
<!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function() { escapeTag = function(string) { if (string == null) return string; return string.replace(/[&<>"']/g, function(match) { return { '&' : '&', '<' : '<', '>' : '>', '"' : '"', "'" : '#&39;' }[match]; }); }; var city = '130010'; // Tokyo city = '380010'; // Matsuyama ← 松山で上書き var wetherURL = 'http://weather.livedoor.com/forecast/webservice/json/v1?city='+city; $.getJSON('http://pipes.yahoo.com/pipes/pipe.run?u='+encodeURI(wetherURL)+'&_id=332d9216d8910ba39e6c2577fd321a6a&_render=json&_callback=?', {}, function(json) { var item = json.value.items[0]; $('<div><b>' + escapeTag(item.location.city) + escapeTag(item.forecasts[0].dateLabel) + '</b> ' + ' <small>' + escapeTag(item.forecasts[0].telop) + '</small> <small>copyright livedoor 天気情報</small>' + '</div>' ).appendTo('#report'); }); }); </script> </head> <body> <div> <div id="report"> </div> </div> </body> </html>2013/09/10
見返してみると、タグがそのまま展開されているので、修正した。
0 件のコメント:
コメントを投稿