leopardgeckoのブログ

Macの関連事項など

Macのターミナルで天気予報を表示する

最終更新:2020/7/19

はじめに

Geektoolで天気予報を表示するスクリプトを作っているうちに、これをちょっといじればターミナルで使えるコマンドになるのではないかと思いつき、試しにやってみたらできてしまいました。
ターミナルで天気予報を表示する方法は他にもあるようですが、ここまで簡単にシンプルに表示できるものはなさそうなので公開してみます。
f:id:leopardgecko:20191029150958p:plain
f:id:leopardgecko:20191029151011p:plain

事前準備

Homebrewが必要です。Homebrewを導入していない場合は先にインストールしておいてください。

コマンドをインストールする前に、表示したい地域のURLを入手しておく必要があります。
まず、https://www.accuweather.com/en/jp/japan-weatherにアクセスします。
そこで天気を表示したい市や区の名前をローマ字で入力して検索して選択すると、その地域の天気が表示されるようになります。その時点でのブラウザのURLは

https://www.accuweather.com/en/jp/場所/数字/weather-forecast/数字

のような形式になっているはずです。例えば東京都江東区の場合は

https://www.accuweather.com/en/jp/koto-ku/221230/weather-forecast/221230

という形になります。そのURLをどこかに保存しておいてください。URLに「weather-forecast」が入っていない場合はサイト内の「NOW」のタブをクリックしてみてください。
英語ではなく日本語で表示したい場合は、URLの「/en/」のところを「/ja/」に書き換えてください。ブラウザに入力してみて日本語で表示されればOKです。(「/de/」でドイツ語、「/zh/」で中国語など、他の言語での表示も可能です。サイト内の設定アイコンをクリックして言語を切り替えてください)

続いて、お使いのシェルの環境変数として~/.zshrc~/.bashrcなどに以下のように記述します。赤字の部分は先ほど保存したURLに書き換えてください。(「 .zshrc .bashrc って何?」という方は、googleなどで検索してみてください)

export WEATHER_URL='https://www.accuweather.com/en/jp/koto-ku/221230/weather-forecast/221230'

以下のようにいくつか併記しておいて使わないものは「# 」でコメントアウトしておけば、「# 」を書き換えることにより表示する場所を変えることができます。

export WEATHER_URL='https://www.accuweather.com/en/jp/koto-ku/221230/weather-forecast/221230'
# export WEATHER_URL='https://www.accuweather.com/en/jp/sapporo-shi/223985/weather-forecast/223985'
# export WEATHER_URL='https://www.accuweather.com/en/jp/naha-shi/224944/weather-forecast/224944'

WEATHER_URL~/.zshrc~/.bashrcに設定した場合は、他記事で紹介しているGeekToolでの天気表示の設定として共用できます。

社内での使用などでプロキシを指定する必要がある場合は、プロキシの設定を~/.curlrcや~/.zshrcに記載するなどしてください。(プロキシ設定の方法は検索してください)

インストール方法

以下のコマンドでインストールします。

brew tap leopard-gecko/weather
brew install weather

<インストールされるコマンド>

インストールが完了すれば、以下の三つのコマンドが使えるようになります。
現在の天気、時間単位の天気、週間天気を表示するものです。

w_now
w_hour
w_week


各コマンドの説明

<現在の天気>

w_now

現在、日中、夜間、明日の天気を表示します。
f:id:leopardgecko:20191016130009p:plain
120分間の天気の変化(MuniteCast)がある場合や気象警報が発令されている場合はそれらも表示されます。

<オプションの説明>

-c 現在の天気を表示 (Current)
-d 日中・夜間・明日の天気を表示 (Day)
-h ヘルプ
-l 表示言語(ja:日本語、en:English、fr:Français、de:Deutsch、zh:中文 (SIM)など)

<オプションの例>
日中・夜間・明日の天気だけ見たいというような場合は以下のようにします。

% w_now -d
Today:      29°Hi     A thunderstorm in spots
Tonight:    18°Lo     A shower early; cloudy
Tomorrow:   28°/ 20°  Cloudy with a stray t-storm

「-l」オプションで他国語の表示も可能です。

% w_now -l zh
目前天氣:  26°C      晴
今天:      29°高溫   一場陣雨或雷暴
今晚:      18°低溫   陣雨
明天:      28°/ 20°  局部地區有雷暴

% w_now -l de   
Wetter aktuell:  26°C      Sonnig
Heute:           29°HT     Am Nachmittag kurzes Gewitter
Heute Abend:     18°TT     Am Abend Schauer; wolkig
Morgen:          28°/ 20°  Wolkig, vereinzelte Gewitter


<時間表示>

w_hour

現在時刻から明日の同時刻まで時間単位の気温、降水確率、天気予報を表示します。
f:id:leopardgecko:20191016130140p:plain
<オプションの説明>

-n 何時間分を表示するかの数値 (デフォルト:25)
-a 何時間後から表示するかの数値 (デフォルト:0)
-s 何時間おきに表示するかの数値 (デフォルト:2)
-h ヘルプ
-l 表示言語(ja:日本語、en:English、fr:Français、de:Deutsch、zh-cn:中文 (SIM)など)

<オプションの例>
4時間後の天気まで1時間おきに知りたい場合には以下のように入力します。

% w_hour -n4 -s1
 10/3 11 AM  27° Precip: 14%  Cloudy
 10/3 12 PM  28° Precip: 11%  Intermittent clouds
 10/3  1 PM  28° Precip:  5%  Intermittent clouds
 10/3  2 PM  28° Precip:  5%  Mostly cloudy

6時間後から6時間分の天気を知りたい場合は以下のようにします。

% w_hour -a6 -n6
10/3  4 PM  16° Precip: 66%  Rain
10/3  6 PM  16° Precip: 49%  Cloudy
10/3  8 PM  16° Precip:  0%  Intermittent clouds

13時間分を3時間おきで表示させたい場合は以下のようにします。

% w_hour -n13 -s3
 10/3 11 AM  27° Precip: 14%  Cloudy
 10/3  2 PM  28° Precip:  5%  Mostly cloudy
 10/3  5 PM  26° Precip:  6%  Intermittent clouds
 10/3  8 PM  25° Precip: 18%  Intermittent clouds
 10/3 11 PM  24° Precip: 47%  Cloudy


<週間表示>

w_week

1週間分の天気予報を表示します。
f:id:leopardgecko:20191016130351p:plain
<オプションの説明>

-n 何日分を表示するかの数値 (デフォルト:7)
-a 何日後から表示するかの数値 (デフォルト:1)
-e 週末の予報だけ表示する
-h ヘルプ
-l 表示言語(ja:日本語、en:English、fr:Français、de:Deutsch、zh-cn:中文 (SIM)など)

<オプションの例>
3日後まで表示したい場合は以下のようにします。

% w_week -n3
 10/4 (Fri)  28°/ 21° Precip: 66%  Rain and a t-storm in the a.m.
 10/5 (Sat)  30°/ 20° Precip:  2%  Sun mixing with clouds; warm
 10/6 (Sun)  24°/ 16° Precip: 25%  Turning cloudy; not as warm

5日後から2日分を表示したい場合は以下のようにします。

% w_week -n2 -a5
 10/8 (Tue)  25°/ 20° Precip: 85%  A.M. rain; otherwise, cloudy
 10/9 (Wed)  28°/ 18° Precip:  2%  Partly sunny and warmer

週末だけ表示したい場合は以下の通りです。
このオプションが指定されると他のオプションは無効になり、週末の二日間だけ表示されます。

% w_week -e
 10/5 (Sat)  30°/ 20° Precip:  2%  Sun mixing with clouds; warm
 10/6 (Sun)  24°/ 16° Precip: 25%  Turning cloudy; not as warm

応用

このコマンドをGeekToolで使うことも可能です。
例えばスクリプト

/usr/local/bin/w_hour -s3

と書けば、3時間おきの時間単位の天気予報を貼り付けることができます。

最後に

このコマンドはAccuWeatherという天気予報サイトに完全に依存しているものなので、サイトの仕様変更があれば使えなくなります。私の力の及ぶ限り仕様変更にも対処していくつもりですが、力尽きた時にはご容赦ください。