=begin == yf.rb ヤフーファイナンスの株価やチャートを表示するプラグインです。 === 使い方 yf_rate は株価、yf_chart はチャートを表示します。 プラグインを有効にして {{yf_rate('99847.O')}} {{yf_chart('99847.O')}} などのように書いてください。 引数は Yahoo ポートフェリオに登録するのと同じものです。 {{yf_chart('99847.O', 0)}} とすることで 1 年のチャート、 {{yf_chart('99847.O', 1)}} とすることで 1 日のチャートを表示します。 デフォルト値は 0 (1 年チャート) です。 === ライセンス ruby のライセンスでどうぞ。 =end # 株価を取得 def yf_rate(id) require 'net/http' server = "quote.yahoo.co.jp" param = "/q?s=#{id}" body = String.new Net::HTTP.start(server) {|http| response = http.get(param) body = response.body } return '' if body =~ /一致する銘柄はありません/ table = body.slice(/
| ]*>.*?<\/td>/m)
# タグを削除してデータを抽出
code = col[0].gsub(/<[^>]*>/,'') # 証券コード
market = col[1].gsub(/<[^>]*>/,'') # 市場
name = col[2].gsub(/<[^>]*>/,'') # 会社名
time = col[3].gsub(/<[^>]*>/,'') # 時刻
rate = col[4].gsub(/<[^>]*>/,'') # 取引値
diff = col[5].gsub(/<[^>]*>/,'') # 前日比
if name && rate && diff
'' \
+ name + ': ' + rate + '(' + diff + ')' \
+ ''
else
''
end
end
# チャートを取得
def yf_chart(id, today=0)
require 'net/http'
today = 0 if today != 1
# 証券コードから直接は出せないので
# アクセスして画像の URL を取得
server = "quote.yahoo.co.jp"
param = "/q?s=#{id}&d=#{today}b"
body = String.new
Net::HTTP.start(server) {|http|
response = http.get(param)
body = response.body
}
return '' if body =~ /一致する銘柄はありません/
url = body.slice(%r#src="(http://chart.yahoo.co.jp/.*?\.gif)"#m, 1)
if url
' |