てるてるブログ

てるてるぼうずの日常やらお勉強やら

BOT作成メモ -お天気API・改-

Posted on | 4月 11, 2013 | No Comments

api

前にlivedoor天気情報のWeather HacksのAPIを使用してBOTに天気をつぶやかせる方法の記事を上げてたんですが、Weather HacksのAPIが仕様変更したらしく上手くつぶやかなくなってしまってました。
APIがJSONに変更になってたみたいですね。

TwitterのAPIもJSONさんメインになっちゃったし、世の中JSONさんの時代なんですかね…?
外部のAPIを使用するといきなりこうした仕様変更があるから油断出来ないですよね。
こまめに情報を収集してないと慌てることになりそう。
今のとこお遊びで使ってるだけだからいいけど、仕事とかで使うとなると大変そうだ。

とりあえず、今日の天気を定時につぶやくやつの修正をメモ↓

Weather HacksのJSONデータをリクエストする際のベースのURLが↓。
http://weather.livedoor.com/forecast/webservice/json/v1
このURLにパラメータ名「city」を追加して各都市の天気を取得します。

旧APIにあった今日・明日のパラメータがいらなくなったのとcityの地点定義の数字が変わってますね。

$w_city = array(//都市番号→都市名の変換
	"016010"=>"札幌",
	"040010"=>"仙台",
	"130010"=>"東京",
	"170010"=>"金沢",
	"230010"=>"名古屋",
	"270000"=>"大阪",
	"340010"=>"広島",
	"380010"=>"松山",
	"400010"=>"福岡",
	"471010"=>"那覇",
);
$key1 = array_rand($w_city);
$cityName = $w_city[$key1];

$tenki_url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=".$key1;
$tenki_json = file_get_contents($tenki_url);
$obj = json_decode($tenki_json,true);

//天気
$telop = $obj[forecasts][0][telop];

$data = array("今日の{$cityName}の天気は{$telop}だよ!");

都市番号調べるのが面倒くさそうですね。

ちなみに明日の天気の場合は21行目を↓のように変更。

$telop = $obj[forecasts][1][telop];

明後日は↓

$telop = $obj[forecasts][2][telop];

これを名前を付けて保存して、以前の記事のようにbot.phpで呼び出す…と。
リプライで天気予報をする方法はまた今度。

« »
トラックバックURL:

Comments

Leave a Reply





*

About

てるぼうず

てるてるぼうずな日常やらお勉強やら

旧ブログ倉庫 »
旧ブログの記事をお探しの方はこちらから

Admin