これの最高・最低気温部分
えっと、訊かれたので書きます。大元のコンテンツはこちら。表題通りGeekToolでの天気予報の最低/最高気温表示のためのコマンドです。仕様上、今日・明日のみで週間天気は取れません。
curl --silent "http://weather.yahooapis.com/forecastrss?w=場所コード&u=c" |
grep -E 'yweather:forecast' | head -1 |
sed -e 's/[^0-9 -]//g' | awk '{print $4"°";}'
今日の最高気温
curl --silent "http://weather.yahooapis.com/forecastrss?w=場所コード&u=c" |
grep -E 'yweather:forecast' | head -1 |
sed -e 's/[^0-9 -]//g' | awk '{print $3"°";}'
今日の最低気温
curl --silent "http://weather.yahooapis.com/forecastrss?w=場所コード&u=c" |
grep -E 'yweather:forecast' | head -2 | tail -1 |
sed -e 's/[^0-9 -]//g' | awk '{print $4"°";}'
明日の最高気温
curl --silent "http://weather.yahooapis.com/forecastrss?w=場所コード&u=c" |
grep -E 'yweather:forecast' | head -2 | tail -1 |
sed -e 's/[^0-9 -]//g' | awk '{print $3"°";}'
明日の最低気温
場所コードはYahoo! Weatherで地名を入れて、出てくるページのURLの数字の箇所です。
例えば東京なら http://weather.yahoo.com/japan/tokyo-prefecture/tokyo-1118370/
の 1118370
の部分です。
これの天気アイコン3つ部分
えっと、訊かれたのでGeekToolでオリジナルの画像を使って天気予報を表示するスクリプトをGitHubに置いてみました。私が以前晒した自分のデスクトップで使ってるヤツです。
横着して以前書いたのをそのまま抜き出して説明すると、
お天気アイコンはYahoo! Weather APIから天気コードを読み込んで、それを元にこっちで用意した天気アイコン画像を選んで表示する、という手はずを踏んでいます。ここはPerlでスクリプト書いてGeekToolで蹴ってます。アイコンはフォントのお天気記号をベースにIllustratorで作ってpngで書き出し。
といった流れを大まかに踏んでます。
もともと自分さえ使えれば良いという考えのもと作ったので、設定方法が煩雑なのですが、それでも良いという方はお試しください。検索してみたら意外と見当たらないもんで、こんなのでも役に立つかもしれない。そのような性質上、「なんもわかんないけど難しくてできません!!」みたいな質問には冷たいかもしれません。もちろんバグとか常識的な範囲の質問には答えますが。
やり方とかは中の README_ja.md を見てください。使用しているサービスの仕様上、取得できる天気は当日と翌日のみとなります。
気温の表示についてはGeekToolで天気予報の最低/最高気温表示参照して下さい。
お気づきの方もいるかと思いますが、デスクトップいじりがそれなりに好きです。以前から一度この辺りのことをBlogに書こう書こうと思いながらも現在に至るまで書かずじまいでいたのですが、今回OSもLionになったことだし、そろそろ書いてみます。
まず、現在のデスクトップはこんな感じです。
sub display (1024x800) zoom
といっても、私は自宅では2画面使いなので、これはその2画面の内のサブディスプレイの方です。メインディスプレイは特に何も出してないので面白くないかなと思いサブディスプレイのみにしぼって書きます。まぁ、ご覧の通り基本はデスクトップカスタマイズでおなじみのGeektool。というわけで本稿もGeekToolでのカスタマイズについてが中心となります。
read more
最近我が愛機MacBookが重たい。もう3年半近く使っているので確かにそろそろ変え時ではあるのだが、今のところまだ使えるので使っている(さすがに次に新しいMacBook Proが出たら買い替えたい)。
で、私は外付けHDだクラウドだに自分のデータを分散させることを好まないので、何でもかんでもこの1機にデータを入れている。一応内臓HDDは250GBなのだがもう瀕死だ。しかも私は基本一度Macを立ち上げたら、OSのアップデートか飛行機乗るかカーネルパニックを起こすかでもしないかぎり立ち上げっぱなしにしてる。そうすると何が起こるかというと、Macがswapファイルを作りまくってくれるのだ。前述のようにもうそれなりに古いのもあるが、気付いたらswapファイル10個越え、計10GB以上とかになってる。こわい。
実際そういうレベルになるとMacももたつき、作業に支障が出る。ので最近はあんまりひどいとクリアするために再起動させてる。
ところで私は最近Geektoolの愛用者でデスクトップに色々表示させて便利に使っているのだが、ここに現在のswapファイルの総量もあったら便利だなーと思いつく(Geektoolを使ったデスクトップのカスタマイズそのものについてもそのうち書きたいと思ってる。ひとまず最近のDesktop画像はプロフィールで公開中)。
書きました。
最初は単純にswapファイルのあるディレクトリの容量を表示させればいいだけだと思ったのだが、どうやらswapファイルのある/var/vm/ディレクトリにはswapファイルの他にsleepimageたるなんか大きいファイルが鎮座している。見ると4GBもある。なんだこりゃと思ってぐぐると、どうやらスリープ時のバックアップ用のデータらしい。設定で生成をオフにもできるっぽいけどそんな大事な機能はオフにはしたくない。私スリープ状態でガンガン持ち歩くし。なので表示させたい値としては、/var/vm/全体の容量からsleepimageの容量を引いた差分となる。なんか思ったよりめんどくさそうだけどまぁやればできそう。
ってことで、Geektoolでswapファイルの総量を表示させるスクリプトを書いたのでここに載せておく。そんな環境依存がある特殊なことはしてないはずなので同じMacなら動くはずである。
(du -ks /var/vm/; du -k /var/vm/sleepimage) |
awk 'NR==1{dir=$1} NR==2{sleepimage=$1}
END {swap = dir - sleepimage;
hum[1024**2]="G";hum[1024]="M"; hum[1]="K";
for (x=1024**2; x>=1; x/=1024) {
if (swap >= x) {
printf "%d%s\n", swap/x, hum[x];
break
}
}
}'
Geektoolの容量関係表示部分
簡単に書くと、du
コマンドで/var/vm/ディレクトリとsleepimageファイルの容量を表示させ、それをパイプでawk
に渡して差分を計算、かつ人間が読める出力フォーマットにして表示させている。
sleepimageを引きたい関係上どうしてもawk
で計算をする必要が出てくるので、泣く泣くdu
ではキロバイト単位で表示させて、awk
で単位計算をやっている。もう少しスマートな方法があればいいのだがあんまり見当たらなかった。後半の単位計算の部分のコードはとあるLinux系フォーラムにあったコードが参考になった。というか一部改変して使ってるけどほぼパク。
ってことでコレをコピペしてGeektoolに突っ込めば多分動くので同じことしたい人がいたらどうぞ。
私は大まかな値さえ把握できればいいので整数値を使っているが、小数点まで出したいなら最後のprintf
のとこを弄れば良い。