yahoo query language

yahooにはquery languageなるサービスが用意されている。
URL引数にSQLを埋め込んで、好きなデータを取得できるというもの。
使うのは結構面倒。一応天気予報を取得できるjavascript & jQueryのコードを以下に紹介しておく。

//id=weatherの要素をbodyに追加
$(document).ready(function(){ $(“body”).append(“

“); });

// zipコードと場所を指定
var zipCode = “JAXX0034”;
var country = “Kasugai”;
var unit = “c”; // c or f (for Celsius or Fahrenheit)

// 天気予報を表示するwoeidを取得
if (zipCode != “” && country != “”) {
// 天気予報を表示するwoeidを取得するquery
var query = escape(‘SELECT woeid FROM geo.places WHERE text=”‘ + zipCode + ‘ ‘ + country + ‘” LIMIT 1’), url = “http://query.yahooapis.com/v1/public/yql?q=” + query + “&format=json&callback=?”;

$.getJSON(url, function(data) {
var woeID = data.query.results.place.woeid;
//取得したwoeidから天気予報情報を取得するquery
var query = escape(‘SELECT image,item, item.forecast,location FROM weather.forecast WHERE woeid=”‘ + woeID + ‘” AND u=”‘ + unit + ‘”‘), url = “http://query.yahooapis.com/v1/public/yql?q=” + query + “&format=json&callback=?”;

$.getJSON(url,function(data){
$(“#weather”).append(data.query.results.channel[0].location.city + “
“);
$(“#weather”).append(data.query.results.channel[0].item.forecast.date + “|”);
$(“#weather”).append(data.query.results.channel[0].item.forecast.day + “|”);
$(“#weather”).append(data.query.results.channel[0].item.forecast.high + “|”);
$(“#weather”).append(data.query.results.channel[0].item.forecast.low + “|”);
$(“#weather”).append(data.query.results.channel[0].item.forecast.text + “
“);
$(“#weather”).append(data.query.results.channel[1].item.forecast.date + “|”);
$(“#weather”).append(data.query.results.channel[1].item.forecast.day + “|”);
$(“#weather”).append(data.query.results.channel[1].item.forecast.high + “|”);
$(“#weather”).append(data.query.results.channel[1].item.forecast.low + “|”);
$(“#weather”).append(data.query.results.channel[1].item.forecast.text + “
“);
$(“#weather”).append(data.query.results.channel[2].item.forecast.date + “|”);
$(“#weather”).append(data.query.results.channel[2].item.forecast.day + “|”);
$(“#weather”).append(data.query.results.channel[2].item.forecast.high + “|”);
$(“#weather”).append(data.query.results.channel[2].item.forecast.low + “|”);
$(“#weather”).append(data.query.results.channel[2].item.forecast.text + “
“);
$(“#weather”).append(data.query.results.channel[3].item.forecast.date + “|”);
$(“#weather”).append(data.query.results.channel[3].item.forecast.day + “|”);
$(“#weather”).append(data.query.results.channel[3].item.forecast.high + “|”);
$(“#weather”).append(data.query.results.channel[3].item.forecast.low + “|”);
$(“#weather”).append(data.query.results.channel[3].item.forecast.text + “
“);
});
});

}