LoginSignup
2
0

More than 1 year has passed since last update.

天気予報を表示する JXA

Last updated at Posted at 2021-07-28

天気予報の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のサービスに感謝いたします。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0