世界を動かす技術を、日本語で。

Wttr: コンソール向け天気予報サービス

概要

  • wttr.in はコンソール向けの天気予報サービス
  • curlwget などのHTTPクライアントで簡単利用
  • 出力形式 の多様性(ANSI、HTML、PNG、JSONなど)
  • 場所指定や詳細オプション で柔軟な情報取得
  • カスタマイズや他ツール連携 にも対応

wttr.inの概要と特徴

  • wttr.in は、コンソールやWebブラウザから天気情報を取得できるサービス
  • ANSIシーケンス によるターミナル向け表示や、 HTML/PNG/JSON など多彩な出力形式に対応
  • curl/httpie/wget などのコマンドラインツールで簡単に利用可能
  • 世界中の都市名・空港コード・観光地名 など多様な場所指定が可能
  • 1日数千万件 のリクエストを処理する人気サービス

基本的な使い方

  • シェルやWebブラウザから以下のようにアクセス
    • $ curl wttr.in
  • 都市名や空港コードでの指定
    • $ curl wttr.in/London
    • $ curl wttr.in/muc(ミュンヘン空港)
  • 特殊な場所名 指定は~を先頭に付加
    • $ curl wttr.in/~Eiffel+Tower
  • IPアドレスやドメイン名 でも指定可能
    • $ curl wttr.in/@github.com

天気単位の設定

  • 米国 からはUSCS単位、それ以外はメートル法がデフォルト
  • URL末尾に?u(USCS)、?m(メートル法)、?M(メートル法・風速m/s)を付与
    • $ curl wttr.in/Amsterdam?m

出力形式とオプション

  • 対応出力形式 :ANSI、プレーンテキスト、HTML、PNG、JSON、Prometheusメトリクス
  • 色なしテキスト?T
    • $ curl wttr.in/?T
  • 標準フォントのみ?d
    • $ curl wttr.in/?d
  • PNG出力 :URL末尾に.png
    • $ wget wttr.in/Paris.png
  • PNGオプション_区切りで指定(例:透明度tや言語設定lang=fr
    • $ wget wttr.in/Paris_0tqp_lang=fr.png

ウィジェット埋め込み

  • wttr-switcher でWebページに天気ウィジェット埋め込み可能
  • 実例:https://feuerwehr-eisolzried.de/

ワンライン出力

  • ステータスバーtmux/weechat などで便利な1行出力
  • ?format=3などで指定
    • $ curl wttr.in/Nuremberg?format=3
  • 複数都市同時取得 :コロン区切りまたは波括弧記法
    • $ curl wttr.in/Nuremberg:Hamburg:Berlin?format=3
    • $ curl -s 'wttr.in/{Nuremberg,Hamburg,Berlin}?format=3'
  • カスタム出力%記法で必要項目を自由設定
    • $ curl wttr.in/London?format="%l:+%c+%t\n"

他ツールとの連携

  • tmux :status-intervalやパラメータperiod=で自動更新
  • WeeChat :IRCクライアントのステータスバーに表示
  • Conky :PNG出力と画像合成による表示
  • IRC連携 :専用スクリプトでASCII天気情報表示

絵文字・フォントサポート

  • 絵文字表示 には端末とフォントのサポートが必要
  • 推奨フォント: Noto Color EmojiEmoji One
  • fontconfigやURXVTの設定例も紹介

データリッチ出力(v2)

  • v2モード で天気や天文情報を詳細表示
    • $ curl v2.wttr.in/München
  • Nerd Fonts 利用のv2d(昼)/v2n(夜)モードもあり
  • 現状は英語のみ・ターミナル専用

地図ビュー(v3)

  • v3モード で地理的領域の天気地図を取得
    • $ curl v3.wttr.in/Bayern.sxl
  • PNG/Sixel/IIP 形式に対応
  • 対応端末例:kitty、wezterm、iTerm2など

JSON出力

  • プログラム連携 やAPI利用に便利なJSON形式
    • $ curl wttr.in/Detroit?format=j1
  • JSONで地域ごとの天気データを取得可能

wttr.in は、シンプルなコマンド一発で世界中の天気を取得できる強力なサービス。多彩な出力形式とカスタマイズ性、他ツール連携まで幅広く対応しているため、日常の情報取得からスクリプト・自動化まで様々な用途で活用可能。

Hackerたちの意見

https://teletextart.co.uk/wp-content/uploads/2016/05/weather...

きれいだね!リンクしてくれる?7月20日じゃないって気づくのにちょっと時間かかった。9年前の天気がそんな感じだったなんて想像できないよ!

今は一応あるよ https://github.com/shift/ceefax-weather :D

厳密に言うと、Unicodeのバージョン13が出るまでは、TUI用にページを実際のテキストとして正しくレンダリングすることはできなかったんだ。必要なブロックグラフィック文字が含まれてたのは、たった5年前のことだしね。それに、ViznutのUnsciiやGNU Unifontみたいな現代的なフォントが必要だったり、必要なコードポイントをカバーしているか、あるいはブロックやライン文字をアルゴリズムで構築して、Unicode 13に対応したターミナルエミュレーターの一つが必要だったりする。* https://github.com/jdebp/unscii/blob/2.1.1f/src/grids.txt#L4... * https://github.com/jdebp/unscii/blob/2.1.1f/src/grids.txt#L9...

Brandyは、Mode7(テレテキストみたいな)スクリプトを使ってサーバーやBBSをブラウズするのに問題なく使えてるよ… https://github.com/stardot/MatrixBrandy

あ、なるほど、「ターミナル」のことね。ターミナル用のceefaxクライアントもあるよ。でも、XTermsのフォントを変更する必要がある。Linux/BSDのフレームバッファを使えば同じことができるかもしれないけど、まずフォントを変換して文字をマッピングする必要があるよ。ここにあるよ: https://github.com/simonlaszcz/vidtex

これはニッチの中のニッチだってわかってるけど、Waybar使ってる人には、wttrbarを作ったよ。これ、Wttr.inを使ってバーに詳細な天気ウィジェットを表示するんだ。 (https://github.com/bjesus/wttrbar/)

ありがとう!「これをWaybarに表示させるにはどうすればいいんだろう」と考えてたところだったから、これで時間を節約できるよ。 EDIT: これ、特にタイムリーだね。UK気象庁が最近、以前使ってたAPIの廃止を発表したから。 https://www.metoffice.gov.uk/services/data/datapoint/datapoi...

これ、めっちゃ使ってるし大好き!作ってくれてありがとう!

curl wttr.in/London > london.txt open -a TextEdit london.txt 制御コードのゴミを見てみて。個人的には、isattyを呼び出すまではANSIエスケープシーケンスを出力しない方がいいと思う。できればtermcapも確認した方がいいし。でも、個人的にはターミナルは埋めて、もっと良いREPLや軽量のGUIツールキットを作るべきだと思う。

これはローカルコンピュータにアクセスできないウェブAPIだよ。

フォーマットを自分に合ったものに変えることもできるよ。

私の意見では、少なくともisattyを呼び出すまではANSIIエスケープシーケンスを出力すべきじゃないし、できればtermcapも確認すべきだよ。wttr.inは実際には君のマシン上で動いているプロセスじゃなくて(リモートサーバーだから)、どうやって君のマシンでisatty()を呼び出すつもりなの?それとも、curlがisatty()をチェックして制御コードを取り除くべきだと言ってるの?でもそれだとcurlの役割を超えちゃうよね。curlの仕事は、ゴミでもなんでも、応答を忠実に出力することなんだから。

このサービス、ほんと感謝してる。もしかしたら、emacsパッケージもあるってことを指摘しておくべきかも。実際、いくつかあるんだけど、私が使ってるのは(たまにだけど)これだよ。 https://github.com/cjennings/emacs-wttrin melpaから入手できるよ。

アイデアはすごく好きなんだけど、残念ながら私の街(ノルウェーのトロンハイム)のデータの質が悪すぎて使えなかった。国の予報サービス(yr.no)は、週末はずっと晴れてとても暑くなるって言ってるのに、wttrは土曜日に16-19度で雨になるって報告してる。

yrは一般的にとても正確だよ。私はセルビア出身で、私も使ってる。

yrnoに+1、長いこと使ってるよ。彼らの予測はここ2-3年で少し悪くなったけど(誤差のバラつきが大きくなった)、他のプロバイダーの予測はさらに悪化してるっていう話もある。

数年前に天気予報のためにyr.noを勧められて、よく訪れてるんだ。ノルウェーの気象学者たちが特別な何かを持っていて、非常に質の高いデータを提供し、役立つ公共サービスを構築・運営できる理由が気になるな。

yr.noは、俺の住んでる北ドイツでは最高だね。地元の人はDWD(ドイツ気象サービス)を使ってることが多いけど、ドイツの船乗りはdmi.dk(デンマーク気象研究所)を使ってることが多い。デンマークの船乗りもyr.noを使ってるし :)

wttr.inを提供するために使われているターミナル -> HTML変換は、https://github.com/pixelb/scripts/blob/master/scripts/ansi2h... に基づいているよ。

DNS digでロンドンの天気を確認するには、 london.weather @dns.toys

i3barにWttrは欠かせない! curl -s 'https://wttr.in/Revelstoke,BC?format=4&u'

これ、超楽しい!大好き!天気データは無料でオープンに手に入る感じがするけど(NWS)、情報を探すときに無駄に広告がいっぱい出てきて、目的の情報にたどり着くまで時間がかかるんだよね。これを使うとその煩わしさがなくなる。素晴らしい!(バグ報告 - 自分の位置が分からなくても、フルの天気予報が表示される!) [snip] $ curl wttr.in 天気予報:見つかりません(でもきれいな予報が表示される)[/snip] 編集:摂氏じゃなくて華氏で表示する方法ってある?オプションに見当たらないんだけど https://wttr.in/:help. あ、"u"だ。

これ、クールだけど、田舎に住んでるから、近くにいい都市(名前が他の人気のある場所にかき消されてない)や空港がないと、正確な位置を指定するのが難しいんだよね。編集:なぜか再試行したら座標がうまくいった。最初に同じURLを試したときはずっと「不明な場所」って出てたのに。