2014-01-25

GeekToolでMacに株価指数・為替・コモディティ価格を表示する方法

GeekToolで為替とか株価とか表示したかったので色々な場所を見回ってみたのですが
1. 記事が古くて、もうコードが動作しない。
2. 変なサイトから値を抜いてきてる。
ものが目立ったので、2014年1月25日現在でちゃんと動作するコードを自分で書きました。

これからも使えるように為替と株価指数はYahoo!ファイナンスから、コモディティ価格はBloombergからそれぞれ値を取得後にsedで成形して出力。

完成図はこんな感じ。



以下に個別のコードを貼っておきます。(かなり久しぶりにコードを書いたので「sedで力ずくで整えちゃえば良いや。」って投げやりになってる部分があるのは見ないフリをしてください。)


為替
コードを眺めてもらうと分かりますがYahoo!ファイナンスの為替計算表を利用しているので、コードの中のUSD, CAD, JPYの部分を変えてもらうと色々な通貨間の価格を表示できます。

米ドル(USD)/日本円(JPY)の為替
curl "http://info.finance.yahoo.co.jp/fx/convert/?a=1&s=USD&t=JPY" | grep 'class="price noLine"' | sed -e 's/<td class="price noLine">//' | sed -e 's/<\/td>//' | sed -e 's/ //g'

加ドル(CAD)/日本円(JPY)の為替
curl "http://info.finance.yahoo.co.jp/fx/convert/?a=1&s=CAD&t=JPY" | grep 'class="price noLine"' | sed -e 's/%lttd class="price noLine">//' | sed -e 's/<\/td>//' | sed -e 's/ //g'

米ドル(USD)/加ドル(CAD)の為替
curl "http://info.finance.yahoo.co.jp/fx/convert/?a=1&s=USD&t=CAD" | grep 'class="price noLine"' | sed -e 's/<td class="price noLine">//' | sed -e 's/<\/td>//' | sed -e 's/ //g'


株価指数
株価指数の前日比の部分をどういう風に表示しようかなぁ、と考えあぐねていたのですがこちらのブログの方法を参考にさせていただきました。前日比Upは緑色、前日比Downは赤色にフォントカラーを設定しましょう。
GeekTool - 円と日経平均株価

Dow Jones Industrial Average (DJI)の表示
curl "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=^DJI" | grep 'class="stoksPrice"' | sed -e 's/<td class="stoksPrice">//' | sed -e 's/<\/td>//'

Dow Jones Industrial Average (DJI)の前日比Up
curl "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=^DJI" | grep 'class="icoUpGreen yjMSt"' | sed -e 's/<td class="change"><span class="yjSt">前日比<\/span><span class="icoUpGreen yjMSt">//' | sed -e 's/<\/span><\/td>//'

Dow Jones Industrial Average (DJI)の前日比Down
curl "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=^DJI" | grep 'class="icoDownRed yjMSt"' | sed -e 's/<td class="change"><span class="yjSt">前日比<\/span><span class="icoDownRed yjMSt">//' | sed -e 's/<\/span><\/td>//'

日経平均株価(^N225)の表示
curl "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=998407.O" | grep 'class="stoksPrice"' | sed -e 's/<td class="stoksPrice">//' | sed -e 's/<\/td>//'

日経平均株価(^N225)の前日比Up
curl "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=998407.O" | grep 'class="icoUpGreen yjMSt"' | sed -e 's/<td class="change"><span class="yjSt">前日比<\/span><span class="icoUpGreen yjMSt">//' | sed -e 's/<\/span><\/td>//'

日経平均株価(^N225)の前日比Down
curl "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=998407.O" | grep 'class="icoDownRed yjMSt"' | sed -e 's/<td class="change"><span class="yjSt">前日比<\/span><span class="icoDownRed yjMSt">//' | sed -e 's/<\/span><\/td>//'

S&P/TSX Composite index (^GSPTSE)の表示
curl "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=^GSPTSE" | grep 'class="stoksPrice"' | sed -e 's/<td class="stoksPrice">//' | sed -e 's/<\/td>//'

S&P/TSX Composite index (^GSPTSE)の前日比Up
curl "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=^GSPTSE" | grep 'class="icoUpGreen yjMSt"' | sed -e 's/<td class="change"><span class="yjSt">前日比<\/span><span class="icoUpGreen yjMSt">//' | sed -e 's/<\/span><\/td>//'

S&P/TSX Composite index (^GSPTSE)の前日比Down
curl "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=^GSPTSE" | grep 'class="icoDownRed yjMSt"' | sed -e 's/<td class="change"><span class="yjSt">前日比<\/span><span class="icoDownRed yjMSt">//' | sed -e 's/<\/span><\/td>//'


コモディティ
Geektoolでのコモディティ価格の表示に関しては日本語どころか、英語でもまともに書かれているものが見つかりませんでした。

そこで
どのコモディティが世界に大きな影響を持つのか
どの指標が一番信頼できるのか
どの媒体が素早く市場の情報を提供しているのか
という3点について、某外資系投資銀行で働いている友人に聞き

Gold Spot [USD/t oz]
Silver Spot [USD/t oz]
Crude Oil (WTI) [USD/bbl.]
NYMEX Natural Gas [USD/MMBtu]
CBOT Corn [USD/bu.]
CBOT Wheat [USD/bu.]
CBOT Soybeans [USD/bu.]

の7品目の価格をBloombergから取得し表示する事に決定しました。金と銀のスポット以外は全て先物です。

Gold Spotの表示
curl "http://www.bloomberg.com/markets/commodities/futures/metals/" | grep -A 2 'Gold Spot' | sed '1,2d' | sed -e 's/<td>//' | sed -e 's/<\/td>//' | sed -e 's/ //g'

Gold Spotの前日比Up
curl "http://www.bloomberg.com/markets/commodities/futures/metals/" | grep -A 4 'Gold Spot' | sed '1,3d' | grep 'class="up"' | sed -e '1s/<td class="up">//' | sed -e '1s/<\/td>//' | sed -e '2s/<td class="up">/(/' | sed -e '2s/<\/td>/)/' | sed -e 's/ //g' | tr -d '\r\n'

Gold Spotの前日比Down
curl "http://www.bloomberg.com/markets/commodities/futures/metals/" | grep -A 4 'Gold Spot' | sed '1,3d' | grep 'class="down"' | sed -e '1s/<td class="down">//' | sed -e '1s/<\/td>//' | sed -e '2s/<td class="down">/(/' | sed -e '2s/<\/td>/)/' | sed -e 's/ //g' | tr -d '\r\n'

Silver Spotの表示
curl "http://www.bloomberg.com/markets/commodities/futures/metals/" | grep -A 2 'US Dollar Spot' | sed '1,2d' | sed -e 's/<td>//' | sed -e 's/<\/td>//' | sed -e 's/ //g'

Silver Spotの前日比Up
curl "http://www.bloomberg.com/markets/commodities/futures/metals/" | grep -A 4 'US Dollar Spot' | sed '1,3d' | grep 'class="up"' | sed -e '1s/<td class="up">//' | sed -e '1s/<\/td>//' | sed -e '2s/<td class="up">/(/' | sed -e '2s/<\/td>/)/' | sed -e 's/ //g' | tr -d '\r\n'

Silver Spotの前日比Down
curl "http://www.bloomberg.com/markets/commodities/futures/metals/" | grep -A 4 'US Dollar Spot' | sed '1,3d' | grep 'class="down"' | sed -e '1s/<td class="down">//' | sed -e '1s/<\/td>//' | sed -e '2s/<td class="down">/(/' | sed -e '2s/<\/td>/)/' | sed -e 's/ //g' | tr -d '\r\n'

Crude Oil (WTI)の表示
curl "http://www.bloomberg.com/energy/" | grep -A 2 '(WTI)' | sed '1,2d' | sed -e 's/<td>//' | sed -e 's/<\/td>//' | sed -e 's/ //g'

Crude Oil (WTI)の前日比Up
curl "http://www.bloomberg.com/energy/" | grep -A 4 '(WTI)' | sed '1,3d' | grep 'class="up"' | sed -e '1s/<td class="up">//' | sed -e '1s/<\/td>//' | sed -e '2s/<td class="up">/(/' | sed -e '2s/<\/td>/)/' | sed -e 's/ //g' | tr -d '\r\n'

Crude Oil (WTI)の前日比Down
curl "http://www.bloomberg.com/energy/" | grep -A 4 '(WTI)' | sed '1,3d' | grep 'class="down"' | sed -e '1s/<td class="down">//' | sed -e '1s/<\/td>//' | sed -e '2s/<td class="down">/(/' | sed -e '2s/<\/td>/)/' | sed -e 's/ //g' | tr -d '\r\n'

NYMEX Natural Gasの表示
curl "http://www.bloomberg.com/energy/" | grep -A 2 'NYMEX Natural Gas' | sed '1,2d' | sed -e 's/<td>//' | sed -e 's/<\/td>//' | sed -e 's/ //g'

NYMEX Natural Gasの前日比Up
curl "http://www.bloomberg.com/energy/" | grep -A 4 'NYMEX Natural Gas' | sed '1,3d' | grep 'class="up"' | sed -e '1s/<td class="up">//' | sed -e '1s/<\/td>//' | sed -e '2s/<td class="up">/(/' | sed -e '2s/<\/td>/)/' | sed -e 's/ //g' | tr -d '\r\n'

NYMEX Natural Gasの前日比Down
curl "http://www.bloomberg.com/energy/" | grep -A 4 'NYMEX Natural Gas' | sed '1,3d' | grep 'class="down"' | sed -e '1s/<td class="down">//' | sed -e '1s/<\/td>//' | sed -e '2s/<td class="down">/(/' | sed -e '2s/<\/td>/)/' | sed -e 's/ //g' | tr -d '\r\n'

CBOT Cornの表示
curl "http://www.bloomberg.com/markets/commodities/futures/agriculture/" | grep -A 2 'CBOT Corn' | sed '1,2d' | sed -e 's/<td>//' | sed -e 's/<\/td>//' | sed -e 's/ //g'

CBOT Cornの前日比Up
curl "http://www.bloomberg.com/markets/commodities/futures/agriculture/" | grep -A 4 'CBOT Corn' | sed '1,3d' | grep 'class="up"' | sed -e '1s/<td class="up">//' | sed -e '1s/<\/td>//' | sed -e '2s/<td class="up">/(/' | sed -e '2s/<\/td>/)/' | sed -e 's/ //g' | tr -d '\r\n'

CBOT Cornの前日比Down
curl "http://www.bloomberg.com/markets/commodities/futures/agriculture/" | grep -A 4 'CBOT Corn' | sed '1,3d' | grep 'class="down"' | sed -e '1s/<td class="down">//' | sed -e '1s/<\/td>//' | sed -e '2s/<td class="down">/(/' | sed -e '2s/<\/td>/)/' | sed -e 's/ //g' | tr -d '\r\n'

CBOT Wheatの表示
curl "http://www.bloomberg.com/markets/commodities/futures/agriculture/" | grep -A 2 'CBOT Wheat' | sed '1,2d' | sed -e 's/<td>//' | sed -e 's/<\/td>//' | sed -e 's/ //g'

CBOT Wheatの前日比Up
curl "http://www.bloomberg.com/markets/commodities/futures/agriculture/" | grep -A 4 'CBOT Wheat' | sed '1,3d' | grep 'class="up"' | sed -e '1s/<td class="up">//' | sed -e '1s/<\/td>//' | sed -e '2s/<td class="up">/(/' | sed -e '2s/<\/td>/)/' | sed -e 's/ //g' | tr -d '\r\n'

CBOT Wheatの前日比Down
curl "http://www.bloomberg.com/markets/commodities/futures/agriculture/" | grep -A 4 'CBOT Wheat' | sed '1,3d' | grep 'class="down"' | sed -e '1s/<td class="down">//' | sed -e '1s/<\/td>//' | sed -e '2s/<td class="down">/(/' | sed -e '2s/<\/td>/)/' | sed -e 's/ //g' | tr -d '\r\n'

CBOT Soybeansの表示
curl "http://www.bloomberg.com/markets/commodities/futures/agriculture/" | grep -A 2 'CBOT Soybeans' | sed '1,2d' | sed -e 's/<td>//' | sed -e 's/<\/td>//' | sed -e 's/ //g'

CBOT Soybeansの前日比Up
curl "http://www.bloomberg.com/markets/commodities/futures/agriculture/" | grep -A 4 'CBOT Soybeans' | sed '1,3d' | grep 'class="up"' | sed -e '1s/<td class="up">//' | sed -e '1s/<\/td>//' | sed -e '2s/<td class="up">/(/' | sed -e '2s/<\/td>/)/' | sed -e 's/ //g' | tr -d '\r\n'

CBOT Soybeansの前日比Down
curl "http://www.bloomberg.com/markets/commodities/futures/agriculture/" | grep -A 4 'CBOT Soybeans' | sed '1,3d' | grep 'class="down"' | sed -e '1s/<td class="down">//' | sed -e '1s/<\/td>//' | sed -e '2s/<td class="down">/(/' | sed -e '2s/<\/td>/)/' | sed -e 's/ //g' | tr -d '\r\n'



以上!!あー疲れた。ちなみに完成図はこんな感じです。



皆さんに快適なGeekTool生活のあらんことを。それでは(´・ω・`)ノシ

(´・ω・`).o0 (分かりやすいかと思って、いちいちsedを | で区切って書いたけど逆に分かりにくいかもしれん...。)

0 件のコメント:

コメントを投稿