みんな大好き東京アメッシュ http://tokyo-ame.jwa.or.jp/ をCLIで表示
iTermの場合
(すごい雨降ってるときの画像)
Sixel拡張をサポートするターミナルの場合
(晴れてるときの画像)
それ意外のターミナルアプリ
(千葉のほうだけちょっと雨降ってるときの画像)
go get github.com/otiai10/amesh/amesh
なんかローカルで go get もしたくないしバイナリも持ちたくない、というひとがいたので謎にDockerコンテナで表示させるようにしました。
docker run -e TERM_PROGRAM --rm otiai10/amesh
# たぶん、
# alias amesh='docker run -e TERM_PROGRAM --rm otiai10/amesh'
# したら幸せになれるamesh #降雨状況と地形と地名・県境を表示
amesh -g=0 #地形情報を非表示
amesh -b=0 #地名・県境を非表示
amesh -p #iTermを使っててもピクセル表示3分おきにアメッシュ見に行ってSlackとかTwitterとかで通知してくれるデーモンが立ちます
touch develop.env
docker-compose up雨天判定とか、その他もろもろカスタマイズしたいときは、Observerをいじれます
observer := amesh.NewObserver()
// 雨天判定をするためのメソッド
// デフォルトでは「雨天ピクセルが全体の30%以上」という判定してます
observer.IsRaining = func(ev amesh.Event) bool {
// EventにはImgというimage.Imageが含まれてるので
// お好きなアルゴリズムで雨天判定すればいいと思う
r, g, b, a := ev.Img.At(320, 200).RGBA()
return r*g*b*a != 0
}
observer.On(Rain, func(ev amesh.Event) error {
// IsRain == true だったときに呼ばれるハンドラ
return nil
})
observer.On(Update, func(ev amesh.Event) error {
// Rain以外のクロールで必ず呼ばれるハンドラ
if ev.Timestamp.Hour() == 23 {
return fmt.Errorf("なにかしらエラー")
}
return nil
})
observer.On(Error, func(ev amesh.Event) error {
// なんかエラーがあったときに呼ばれるハンドラ
observer.Start() // リカバーして再起動したり
})