確認環境
| PC | Thinkpad X1 Carbon 2nd Gen |
| OS | FreeBSD 12.0-RELEASE-p5 |
やること
コマンドラインから天気予報を見たい、そんなとき。
wttr.inを利用すれば、下記のような素敵なテキスト形式で天気をチェックできる。
> fetch -q -o - "http://wttr.in/okinawa?AFTn1" Weather report: Okinawa, Japan .-. Light Drizzle ( ). 25..28 °C (___(__) ↑ 15 km/h ‘ ‘ ‘ ‘ 16 km ‘ ‘ ‘ ‘ 2.1 mm ┌─────────────┐ ┌───────────────────────┤ Sun 02 Jun ├───────────────────────┐ │ Noon └──────┬──────┘ Night │ ├──────────────────────────────┼──────────────────────────────┤ │ _`/"".-. Patchy rain po…│ _`/"".-. Moderate or he…│ │ ,\_( ). 26..29 °C │ ,\_( ). 26..30 °C │ │ /(___(__) ↗ 14-22 km/h │ /(___(__) ↗ 13-21 km/h │ │ ‘ ‘ ‘ ‘ 11 km │ ‚‘‚‘‚‘‚‘ 6 km │ │ ‘ ‘ ‘ ‘ 0.6 mm | 71% │ ‚’‚’‚’‚’ 3.0 mm | 64% │ └──────────────────────────────┴──────────────────────────────┘
コマンドの説明
FreeBSDなら標準で入っているfetchコマンドを使ってwttr.inにアクセスすればいい。
(wgetやcurlを使ってもいいよ)
> fetch -q -o - "http://wttr.in/okinawa?AFTn1"
fetchコマンドのオプション
通常ではfetchコマンドはHTTPレスポンスをファイルに保存する。
標準出力にそのまま出力するために、下記オプションを指定する。
-qで、データ取得時のメッセージ出力をさせない-o -で、取得したデータをファイルではなく標準出力に出力させる
wttr.inで使えるパラメータ
URL(http://wttr.in/)以降のパラメータで、よく使いそうなものを下記に抜粋。
| パラメータ | 説明 |
|---|---|
| okinawa | 実際に天気を調べたい地名。tokyoとかosakaとかを指定 |
| A | プレーンテキストで取得。省略時はHTML形式で取得 |
| F | 末尾のtwitterフォロー行を表示しない |
| T | カラー表示しない。省略時はシェルのカラー制御文字も付いてくる |
| n | 午前/午後の天気を表示。省略時は、朝/昼/夕/夜の天気を表示 |
| 1 | 天気取得日数。0〜3まで指定可能。省略時は今日含め3日分。0:今の天気、1:今日1日の天気、2:今日含め明日までの天気 |
| lang=ja | 取得言語。usとかjaとか。他とは別パラメータ(&の後に記述)にするのを忘れずに |
その他は http://wttr.in/:help を見てね。
シェルスクリプトにする
毎回こんな長いコマンドは打ってられない。
シェルスクリプトにしてしまおう。
コードの簡単な説明は下記。
- 4〜6行目 wttr.inにアクセスするコマンド。 好きなコマンドを使ってね
- 9行目 デフォルトで使うwttr.inのパラメータ。 好きなの指定してね
- 11〜14行目 wttr.inのヘルプを表示してコマンド終了
- 15〜18行目 引数で渡されたwttr.inへのパラメータをセット
- 22行目 天気を調べる地名をセット。
okinawaは、好きな地名を指定してね - 25行目 wttr.inから天気情報を取得。好きな言語を指定してね
仮にtenkiという名前でスクリプトファイルを作成した場合、下記のようなコマンドを打てば使える。
tenkitenki osakatenki -2 tokyo
作成したスクリプトは、パスの通ったディレクトリ(echo $PATHで確認)に置くことと、
実行権限を追加(chmod +x ファイル名)することをお忘れなく。
参考
以上。