はじめに
経済状況が気になって仕方がないEmacsユーザにオススメです.stock-ticker.el
を使います.
NOTE: 最近繋がらないと思っていたら,YQLのデータベースのURLが変わっていました.stock-ticker--update
にあるURLを http://www.datatables.org/alltables.env
にすれば大丈夫です.ISSUE発行済.
NOTE: ISSUEが未解消なので,自分のリポジトリに置きました.
git clone https://github.com/takaxp/stock-ticker.git
導入
MELPA を使うか,Githubから入手できます.
関数の再定義(オプション)
stock-ticker.el
をそのまま使うと,モードラインの表示が長くなる傾向があるので, stock-ticker--parse
を再定義して,銘柄(3桁のみ)と変動率だけを表示するようにします
(defun stock-ticker--parse (data)
"Parse financial DATA into list of display strings."
(let ((qs (assoc-default
'quote (assoc-default
'results (assoc-default 'query data)))))
(mapcar
(lambda (q)
(let ((percent (assoc-default 'PercentChange q))
(name (assoc-default 'Name q))
(symbol (assoc-default 'Symbol q))
(change (assoc-default 'Change q)))
(format " %s:%s"
(substring
(if (or
(string-match "=" symbol)
(string-match "\\^" symbol))
name symbol) 0 3)
(if percent percent ""))))
qs)))
設定
起動時には表示不要なので,ウィンドウにフォーカスが移った時に開始して,さらに指定秒数後に(デフォルト:90秒)でモードラインから消えるようにしています.表示秒数を指定したい場合は,my:activate-stock-ticker
を引数付きで呼び出してください.
;; 適宜,遅延読み込みに設定を書き換えてください.
;; 初めてstock-ticker-global-modeが呼ばれる時に,パッケージを読み込むようにすればOKです.
(require 'stock-ticker)
;; 一定時間後に表示を消す独自関数
(defun my:activate-stock-ticker (&optional duration)
"Activate stock-ticker within the given duration."
(stock-ticker-global-mode 1)
(unless (numberp duration)
(setq duration 90))
(run-with-timer duration nil 'stock-ticker-global-mode -1))
(add-hook 'focus-in-hook 'my:activate-stock-ticker)
;; 銘柄表示の間隔を変える
(setq stock-ticker-display-interval 5)
;; 銘柄指定
(setq stock-ticker-symbols '("^N225" "DOW"))
;; 5分に一回サーバから最新の価格変動を取得
(setq stock-ticker-update-interval 300)
おわりに
需要は低そうですが,内部的には Yahoo の Developer APIを定期的に叩いているだけです.なので,APIの呼び出し先とかをカスタマイズしたパッケージを書くと,株価に限らず,欲しい情報をなんでもモードラインに定期的に表示することが可能と思います.