先日友人から株のススメがあり、買ってみた。

素人はやはり株価が気になるのでconkyに表示出来るかなと思いググってみた。

が、見つかった方法では現在は出来ないようだ。
英語のサイトで可能な方法を見つけたが、wgetでCSVをDLしそれを読み込むというもので、スマートではない。

そこで自分で考えることにした。

まず、情報はyahooファイナンスからゲットすることに決めた。
何で取るかだが、テキストブラウザにすることにする。

いくつかテキストブラウザを試したが、linksが良かった。
w3mとlynxはjavascriptが使えなかったので株価を得ることが出来なかった。

linksでyahooファイナンスの目的の銘柄のページを指定して起動。
文字化けしているので文字コードを探したらutf-8があったので変更。
すると文字化け解消。

manでlinksの詳細ヘルプを見ると-dumpオプションで標準出力へ結果を出力出来るとなっているので、

links -codepage utf-8 -dump "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=6758.t"

とするとみごとにターミナルに情報が表示された。
あとはgrepなどで必要な所を抜き出すだけだ。

.conkyrcに直接書いてもいいのだが、アイツは非常に見づらいので、シェルスクリプトを呼び出すことにした。

パスの通った場所にspなどという名前で実行可能なファイルをつくる(spはstock priceの略)
コードは下記

#!/bin/bash
nb=("7203.T" "6758.t" "6753.T")
url="http://stocks.finance.yahoo.co.jp/stocks/detail/?code="
n=${#nb[@]}
for (( i=0; i<$n; i++ ))
do
    a1="${nb[$i]%.*}"
    t=`links -codepage utf-8 -dump "$url$a1" | grep -A6 $a1 | head -6 | tail -n -1`
  echo "$a1$t" | sed "s/ //g"
done

・表示する銘柄を増やす場合は配列変数nbの所にyahooファイナンスの銘柄のURLの最後の?code=の後を追加するだけでOK。
・yahooファイナンスの表示形式が変わったらコードを変更しなければならない。
・また、日経平均株価など企業以外のページは書式が違うためか表示されない。

#!/bin/shでなく#!/bin/bashなので注意
debian系のOSで#!/bin/shで実行するとエラーになります。

で.conkyrcに
${execi 60 sp}
を追加(60は1分置きに更新という意味)
日本語フォントを指定していない場合は
${font TakaoExGothic:style=Regular:size=10}
などを先の${execi 60 sp}の前に表記。

 conky_yahoo_finance.jpg