sorry_yahoo_finance 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 48799c21422479562b5f2abb0a6dcfd81c5a85ad
4
- data.tar.gz: 2c5bc44d886dd0a67d89710c877b7ebefad1580a
3
+ metadata.gz: f1b7245634866aac467151ea3e772b3aae128257
4
+ data.tar.gz: 598aac98a48657311a03f9aca40263a07a6919da
5
5
  SHA512:
6
- metadata.gz: 8d1ec3690cc9b67ba440650f9226b869d6a1b132390535ed4524ed730c7cec0497c20c4cc2099e905231b83f617ac123ddc909edaf10916fc9aa06140242ac29
7
- data.tar.gz: 0a31e222ba12bb77a4315dac90562b966a57337d403786a517b7aa59e6d881f8cfe4767a1ce4474c9509d6ac5a4af461f2dda0bbbdd477a8fe41a0a68152bf1e
6
+ metadata.gz: ea9d56cf427dc1683dff717837464a9802034720a67716da8fcda67439506d5e84667883a261d1cf34d2a219e7e8e9aece61e477d111b47cdaf0b0f7f49d3261
7
+ data.tar.gz: 6b606496537778be9d85fc0e51fcf3e38df5344d3f3bc4cd107118a25cdf0fc252f5088e785c8a6a10c42c9d25207121aa58ee26ac6b3539694404ca0e5ad843
@@ -1,10 +1,40 @@
1
1
  require 'utils/converter'
2
2
  require 'utils/hash_accessor'
3
3
 
4
+ require 'yaml'
5
+
4
6
  module SorryYahooFinance
5
7
  class Info
8
+ INT_KEYS = [
9
+ :code,
10
+ :price,
11
+ :previousprice,
12
+ :opening,
13
+ :high,
14
+ :low,
15
+ :turnover,
16
+ :trading_volume,
17
+ :margin_buying,
18
+ :margin_selling,
19
+ :d_margin_buying,
20
+ :d_margin_selling,
21
+ :finish,
22
+ :capitalization,
23
+ :shares_outstanding,
24
+ :minimum_purchase,
25
+ :share_unit,
26
+ :yearly_high,
27
+ :yearly_low
28
+ ]
29
+
30
+ FLOAT_KEYS = [
31
+ :margin_rate,
32
+ :dividend_yield,
33
+ :dps
34
+ ]
35
+
6
36
  extend HashAccessor
7
- hash_accessor :values, :code, :name, :market, :industry, :price, :previousprice, :opening, :high, :low, :turnover, :trading_volume, :price_limit, :margin_buying, :margin_selling, :d_margin_buying, :d_margin_selling, :margin_rate, :chart_image
37
+ hash_accessor :values, :code, :name, :market, :industry, :price, :previousprice, :opening, :high, :low, :turnover, :trading_volume, :price_limit, :margin_buying, :margin_selling, :d_margin_buying, :d_margin_selling, :margin_rate, :capitalization, :shares_outstanding, :dividend_yield, :dps, :per, :pbr, :eps, :bps, :minimum_purchase, :share_unit, :yearly_high, :yearly_low, :chart_image
8
38
 
9
39
  # TODO: 休場の時はアラート出したい
10
40
  def initialize(code, date=nil)
@@ -23,44 +53,40 @@ module SorryYahooFinance
23
53
  @values
24
54
  end
25
55
 
56
+ def ja_values
57
+ Hash[
58
+ @values.to_a.map { |ary| [ja_rabels[ary[0]], ary[1]] }
59
+ ]
60
+ end
61
+
26
62
  def formalize_values
27
63
  return_values = @values
28
64
 
29
- # to_integer
30
- int_keys = [
31
- :code,
32
- :price,
33
- :previousprice,
34
- :opening,
35
- :high,
36
- :low,
37
- :turnover,
38
- :trading_volume,
39
- :margin_buying,
40
- :margin_selling,
41
- :d_margin_buying,
42
- :d_margin_selling,
43
- :finish
44
- ]
45
-
46
- int_keys.each do |key|
65
+ INT_KEYS.each do |key|
47
66
  if return_values[key].class == String
48
67
  return_values[key] = return_values[key].delete(",").to_i
49
68
  end
50
69
  end
51
70
 
52
71
  # to_range(str is like 183〜201)
53
- price_limit = return_values[:price_limit]
54
- price_limit.delete!(",")
55
- price_limit =~ /(\d+)~(\d+)/
56
- return_values[:price_limit] = Range.new($1.to_i,$2.to_i)
72
+ return_values[:price_limit] = return_values[:price_limit].to_range
57
73
 
58
74
  # to_f
59
- return_values[:margin_rate] = return_values[:margin_rate].to_f
75
+ FLOAT_KEYS.each do |key|
76
+ return_values[key] = return_values[key].to_f
77
+ end
60
78
 
61
79
  return_values
62
80
  end
63
81
 
82
+ class ::String
83
+ def to_range
84
+ delete!(",")
85
+ self =~ /(\d+)~(\d+)/
86
+ Range.new($1.to_i,$2.to_i)
87
+ end
88
+ end
89
+
64
90
  private
65
91
 
66
92
  def infos(code)
@@ -68,25 +94,40 @@ module SorryYahooFinance
68
94
  html = Converter.execute(url)
69
95
  previousprice, opening, high, low, turnover, trading_volume, price_limit = html.css('div.innerDate dd').map{|x| x.css('strong').inner_text }
70
96
  margin_deal = html.css("div.ymuiDotLine div.yjMS dd.ymuiEditLink strong").map(&:text)
97
+ html.css('div#main div.main2colR div.chartFinance div.lineFi dl').map { |dl| dl.css('dd strong').text }
98
+ capitalization, shares_outstanding, dividend_yield, dps, per, pbr, eps, bps, minimum_purchase, share_unit, yearly_high, yearly_low = html.css('div#main div.main2colR div.chartFinance div.lineFi dl').map { |dl| dl.css('dd strong').text }
99
+
71
100
  {
72
- code: html.css("div#divAddPortfolio + dl dt").text,
73
- name: html.css('table.stocksTable th.symbol h1').inner_text,
74
- market: html.css('div.stocksDtlWp dd')[0].content,
75
- industry: html.css("div.stocksDtl dd.category a").text,
76
- price: html.css('table.stocksTable td.stoksPrice')[1].content,
77
- previousprice: previousprice,
78
- opening: opening,
79
- high: high,
80
- low: low,
81
- turnover: turnover,
82
- trading_volume: trading_volume,
83
- price_limit: price_limit,
84
- margin_buying: margin_deal[0],
85
- margin_selling: margin_deal[3],
86
- d_margin_buying: margin_deal[1],
87
- d_margin_selling: margin_deal[4],
88
- margin_rate: margin_deal[2],
89
- chart_image: html.css("div.styleChart img")[0][:src],
101
+ code: code,
102
+ name: html.css('table.stocksTable th.symbol h1').inner_text,
103
+ market: html.css('div.stocksDtlWp dd')[0].content,
104
+ industry: html.css("div.stocksDtl dd.category a").text,
105
+ price: html.css('table.stocksTable td.stoksPrice')[1].content,
106
+ previousprice: previousprice,
107
+ opening: opening,
108
+ high: high,
109
+ low: low,
110
+ turnover: turnover,
111
+ trading_volume: trading_volume,
112
+ price_limit: price_limit,
113
+ margin_buying: margin_deal[0],
114
+ margin_selling: margin_deal[3],
115
+ d_margin_buying: margin_deal[1],
116
+ d_margin_selling: margin_deal[4],
117
+ margin_rate: margin_deal[2],
118
+ capitalization: capitalization,
119
+ shares_outstanding: shares_outstanding,
120
+ dividend_yield: dividend_yield,
121
+ dps: dps,
122
+ per: per,
123
+ pbr: pbr,
124
+ eps: eps,
125
+ bps: bps,
126
+ minimum_purchase: minimum_purchase,
127
+ share_unit: share_unit,
128
+ yearly_high: yearly_high,
129
+ yearly_low: yearly_low,
130
+ chart_image: html.css("div.styleChart img")[0][:src],
90
131
  }
91
132
  end
92
133
 
@@ -107,6 +148,10 @@ module SorryYahooFinance
107
148
  }
108
149
  end
109
150
 
151
+ def ja_rabels
152
+ YAML.load_file('lib/utils/ja.yml').inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
153
+ end
154
+
110
155
  def yahoo_url(code)
111
156
  "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=#{code}"
112
157
  end
@@ -1,3 +1,3 @@
1
1
  module SorryYahooFinance
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  end
@@ -33,11 +33,10 @@ module SorryYahooFinance
33
33
  end
34
34
 
35
35
  module GET
36
- def execute(codes, date)
36
+ def self.execute(codes, date)
37
37
  infos = codes.map { |code| Info.new(code, date) }
38
38
  infos.count == 1 ? infos.first : infos
39
39
  end
40
- module_function :execute
41
40
  end
42
41
  end
43
42
  Stock = SorryYahooFinance
data/lib/utils/ja.yml ADDED
@@ -0,0 +1,31 @@
1
+ code: 証券コード
2
+ name: 銘柄名
3
+ market: 取引市場
4
+ industry: 業種
5
+ price: 株価
6
+ previousprice: 前日終値
7
+ opening: 始値
8
+ high: 高値
9
+ low: 安値
10
+ turnover: 出来高
11
+ trading_volume: 売買代金
12
+ price_limit: 値幅制限
13
+ margin_buying: 信用買残
14
+ margin_selling: 信用売残
15
+ d_margin_buying: 信用買残前週比
16
+ d_margin_selling: 信用売残前週比
17
+ margin_rate: 貸借倍率
18
+ margin_rate: 貸借倍率
19
+ capitalization: 時価総額
20
+ shares_outstanding: 発行済株式数
21
+ dividend_yield: 配当利回り(会社予想)
22
+ dps: 1株配当(会社予想)
23
+ per: PER(会社予想)
24
+ pbr: PBR(実績)
25
+ eps: EPS(会社予想)
26
+ bps: BPS(実績)
27
+ minimum_purchase: 最低購入代金
28
+ share_unit: 単元株数
29
+ yearly_high: 年初来高値
30
+ yearly_low: 年初来安値
31
+ chart_image: チャート図
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
-
2
+ require 'pry'
3
3
  describe SorryYahooFinance do
4
4
 
5
5
  it 'should have a version number' do
@@ -33,5 +33,13 @@ describe SorryYahooFinance do
33
33
  describe 'Info' do
34
34
  subject { SorryYahooFinance::GET(8058) }
35
35
  specify { expect(subject.formalize_values).to be_a(Hash) }
36
+ specify { expect(subject.ja_values).to be_a(Hash) }
37
+ specify do
38
+ expect(subject.ja_values.keys).to eq(
39
+ [
40
+ "証券コード", "銘柄名", "取引市場", "業種", "株価", "前日終値", "始値", "高値", "安値", "出来高", "売買代金", "値幅制限", "信用買残", "信用売残", "信用買残前週比", "信用売残前週比", "貸借倍率", "時価総額", "発行済株式数", "配当利回り(会社予想)", "1株配当(会社予想)", "PER(会社予想)", "PBR(実績)", "EPS(会社予想)", "BPS(実績)", "最低購入代金", "単元株数", "年初来高値", "年初来安値", "チャート図"
41
+ ]
42
+ )
43
+ end
36
44
  end
37
45
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sorry_yahoo_finance
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - gogotanaka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-18 00:00:00.000000000 Z
11
+ date: 2014-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -117,6 +117,7 @@ files:
117
117
  - lib/utils/all_stock_codes.rb
118
118
  - lib/utils/converter.rb
119
119
  - lib/utils/hash_accessor.rb
120
+ - lib/utils/ja.yml
120
121
  - sorry_yahoo_finance.gemspec
121
122
  - spec/sorry_yahoo_finance_spec.rb
122
123
  - spec/spec_helper.rb