天気予報のAPIサービス
天気予報をJSON形式で取得できる「livedoor 天気」が2020年7月でサービス提供を終了しましたが、この互換サービスの「天気予報 API(livedoor 天気互換)」があることを知ったので使ってみました。
JXA のコード
私はMacを使っているので、AppleScriptを使うのですが、JSONを扱うには JavaScript の方が楽かと思うので、スクリプトエディタをJavaScriptモードにして使用します。
天気予報.scpt
// 緯度、軽度から住所を求める
// https://weather.tsukumijima.net/ のサービスを利用
// city コードは上記URLに一覧へのURLがありますので、参考にして設定してください
// このコードサンプルでは岩手県盛岡市のコード:030010 をデフォルトに設定しています
// 戻り値は JSON 形式
var app = Application.currentApplication()
app.includeStandardAdditions = true
var baseURL = '"https://weather.tsukumijima.net/api/forecast/city/'
var city = app.displayDialog("都市コードを入力", {defaultAnswer: "030010"}).textReturned
var URL = baseURL + city + '"'
var ans = app.doShellScript('curl -s ' + URL)
var jsonData = JSON.parse(ans)
app.displayDialog(jsonData['title'])
app.displayDialog(jsonData['description']['headlineText'])
app.displayDialog(jsonData['description']['bodyText'])
// 今日の天気を表示
app.displayDialog(jsonData['forecasts'][0]['date'] + 'の天気:' + jsonData['forecasts'][0]['telop'])
app.displayDialog(jsonData['forecasts'][0]['detail']['weather'] + '、\r風:' + jsonData['forecasts'][0]['detail']['wind'])
var temp = '最高気温:' + jsonData['forecasts'][0]['temperature']['max']['celsius'] + '度'
app.displayDialog(temp)
// 明日の天気を表示
app.displayDialog(jsonData['forecasts'][1]['date'] + 'の天気:' + jsonData['forecasts'][0]['telop'])
app.displayDialog(jsonData['forecasts'][1]['detail']['weather'] + '、\r風:' + jsonData['forecasts'][1]['detail']['wind'])
var temp = '最低気温:' + jsonData['forecasts'][1]['temperature']['min']['celsius'] + '度'
temp = temp + '、最高気温:' + jsonData['forecasts'][1]['temperature']['max']['celsius'] + '度'
app.displayDialog(temp)
好きな場所を表示するには
「天気予報 API(livedoor 天気互換)」のサイトにある全国の地点定義表(XML)から希望の地点コードを見つけてソースを変更してお使いください。
なお、気象庁でも非公式ながらAPIを提供しているとのことなので、そちらもみてみましたが、こちらの方が使いやすいと思います。(私見)
天気予報APIのサービスに感謝いたします。