天気や気温は変わりやすいものだ。昨日より幾分かマシになったと体感する。気象庁は週間天気予報を発しており、これらのデータの一部をJSON等の形式で取得できるようにしている(気象データ高度利用ポータルサイト)。前回、PowerShellのプロンプトにOpenWether APIからの取得データを表示させている筆者だが、ここは気象庁の週間予報データを表示させてみようと思った。
気象庁のJSONを見ると、地域コードがありこれをもとに地域の天気情報を取得できる。東京の場合は、以下になる。
https://www.jma.go.jp/bosai/forecast/data/forecast/130000.json
ここから週間気温予測を取得できる、1:以下の情報をPowerShellで取得する。timeSeries:0の下のtimeDefines:に対象となる予報日(0:数日間/1:週間)、areas:(0:東京/1:八条島/2:父島)、その下にtempsMax(最高気温)がある。
これを、取得するforcast.ps1を作る。Invoke-RestMethodで取得し、Set-Contentでテキストに保存する。最高気温は7つのデータになるが週間予測では、翌日の予測は空白が設定されているので、6つの日付とデータをそれぞれforループで取得する。
$res = Invoke-RestMethod "https://www.jma.go.jp/bosai/forecast/data/forecast/130000.json"
#$linesにforで取得する気温/日付を格納
$lines = for ($i=1; $i -lt 7; $i++) {
$date = $res[1].timeSeries[1].timeDefines[$i].ToString("MM-dd")
$temp = $res[1].timeSeries[1].areas[0].tempsMax[$i]
"$temp°C($date)/ "
}
# 改行なしの 1 行にする
$oneLine = $lines -join " "
#発表日を入れる
$stamp = $res[1].reportDatetime
# ファイルに 1 行だけ書く
Set-Content -Path "C:\Users\●●●\Desktop\temp.txt" "$oneLine (by $stamp)"
これを実行すると、指定の場所にtemp.txtが作成される。中は以下のように週間気温予想が日付と表示されたデータになる。
プロンプト関数に週間気温予報を反映させる
目的はPowerShellのプロンプト関数に反映させることなので、前回と同様にPowerShellでプロファイルにGet-Contentで保存したtemp.txtから1行読み込む変数$Forcastを加える。
$Forcast = Get-Content "C:\Users\●●●\Desktop\temp.txt" -Tail 1
同様にPS1ファイルを実行させて最新の状態でデータを表示させるために、&でPS1ファイルを実行させる。プロファイルは上から実行されるため、プロンプト関数の実行を阻害しないように前回は、下に置いたが、今回は最初に実行させる。このあたりは、なかなかハードルが高いので研究が必要である。
& "C:\Users\●●●\Desktop\whether.ps1"
& "C:\Users\●●●\Desktop\forcast.ps1"
function SetPrompt {
param($Text)
$global:PromptText = $Text
}
function prompt {
# リアルタイム取得
$C = (Get-Location).Path
$U = $env:USERNAME
$F = (ls).Count
$T = (Get-Date -Format "HH:mm")
$D = (Get-Date -Format "yyyy/MM/dd")
$Temp = Get-Content "C:\Users\●●●\Desktop\log.txt" -Tail 1
$Forcast = Get-Content "C:\Users\●●●\Desktop\temp.txt" -Tail 1
# リアルタイム記号列
$Realtime = "File:$F / $C / U:$U / T:$T / D:$D / 気温:$Temp / 週間予報:$Forcast"
# SetPrompt で設定した固定パート
$Fixed = $global:PromptText
# 合成して返す
return "$Fixed $Realtime > "
}
これをnotepad $PROFILE で開いたプロファイルに記述、. $PROFILEで反映して実行すると
数日は比較的過ごしやすいようだが月末から、また暑さとの戦いである。時間はあるので、塩分/水分補給の事前準備、冷房や扇風機の配置点検、冷え冷えグッズ購入などで備えよう。




