yahoo-finance 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b0f9d32ecd47a310bd70df430526a855153ea006
4
- data.tar.gz: 3a416023015934a5f5129fb3e074ffa4cddc522f
3
+ metadata.gz: e4d05824e6ec9455f7431eb7450405a4f187502c
4
+ data.tar.gz: 53b32872affff1bd7a1ba6153b73f62aac280852
5
5
  SHA512:
6
- metadata.gz: 78010a4b901285e85116bb2ab01801028fed4a456801af994b75906b23230659c69760b6deb2573f6e0c6f053d76f979a2a90b4a16272130dd31d4154a35bb18
7
- data.tar.gz: 98e08a4fc5919b6841605be60c4397379939648f92ef49d0582950199044400d03fede1d8bb302bba96dd134d43f8dad1504b8b1e7e3c383caecce34c5bbdeb9
6
+ metadata.gz: 69bbfa32a532c46ee3360b58a48492b74638e4816513359d7b7c212c6909fc317d92e9100cd63d1302aaa52ac94dc759ee740215fc4cff1af349afbdaf215c7b
7
+ data.tar.gz: 5dfa9bbe070a5bcce32df9ffedb1257d9e2880c8dcbc052bef866a47a4d557aae49f1d97a3fefa36c042873c69d2bdbce287c04509514c86ee68f3c0dd759918
data/README.md CHANGED
@@ -3,14 +3,10 @@ A dead simple wrapper for yahoo finance quotes end-point.
3
3
 
4
4
  ## Installation:
5
5
 
6
- `gem install 'yahoo-finance'`
7
- `require 'yahoo-finance'`
6
+ Just add it to your `Gemfile`:
8
7
 
9
- If using bundler:
8
+ `gem 'yahoo-finance'`
10
9
 
11
- `gem 'yahoo-finance', git: 'https://github.com/herval/yahoo-finance.git'`
12
-
13
- `require: 'yahoo-finance'`
14
10
 
15
11
  ## Usage:
16
12
 
@@ -39,7 +35,7 @@ data[0].ask # This is now a float
39
35
 
40
36
  The full list of fields follows:
41
37
 
42
- ``` ruby
38
+ ```ruby
43
39
  :after_hours_change_real_time
44
40
  :annualized_gain
45
41
  :ask
@@ -117,6 +113,8 @@ The full list of fields follows:
117
113
  :price_paid
118
114
  :price_per_book
119
115
  :price_per_sales
116
+ :revenue
117
+ :shares_outstanding
120
118
  :shares_owned
121
119
  :short_ratio
122
120
  :stock_exchange
@@ -133,7 +131,7 @@ The full list of fields follows:
133
131
  Create a YahooFinance::Client instance
134
132
 
135
133
  ```ruby
136
- yahoo_client = YahooClient::Client.new
134
+ yahoo_client = YahooFinance::Client.new
137
135
  ```
138
136
 
139
137
  Calling symbols_by_market method (symbols_by_market(country, stock_market))
@@ -143,7 +141,7 @@ Note: Can only be called with US Stock Markets for now.
143
141
  *Important: This data comes directly from NASDAQ's CSV endpoints, NOT Yahoo Finance*. It might be extracted into a different Gem in the future.
144
142
 
145
143
  ```ruby
146
- yahoo_client.symbols_by('us', 'nyse') # Only US Stock Markets For Now
144
+ yahoo_client.symbols_by_market('us', 'nyse') # Only US Stock Markets For Now
147
145
  ```
148
146
 
149
147
  This method returns an array of symbols that can be used with the quotes method
@@ -11,44 +11,99 @@ module YahooFinance
11
11
  include YahooFinance::FinanceUtils
12
12
 
13
13
  COLUMNS = {
14
- ask: "a", average_daily_volume: "a2", ask_size: "a5", bid: "b",
15
- ask_real_time: "b2", bid_real_time: "b3", book_value: "b4",
16
- bid_size: "b6", change_and_percent_change: "c", change: "c1",
17
- comission: "c3", change_real_time: "c6",
18
- after_hours_change_real_time: "c8", dividend_per_share: "d",
19
- last_trade_date: "d1", trade_date: "d2", earnings_per_share: "e",
20
- error_indicator: "e1", eps_estimate_current_year: "e7",
21
- eps_estimate_next_year: "e8", eps_estimate_next_quarter: "e9",
22
- float_shares: "f6", low: "g", high: "h", low_52_weeks: "j",
23
- high_52_weeks: "k", holdings_gain_percent: "g1", annualized_gain: "g3",
24
- holdings_gain: "g4", holdings_gain_percent_realtime: "g5",
25
- holdings_gain_realtime: "g6", more_info: "i", order_book: "i5",
26
- market_capitalization: "j1", market_cap_realtime: "j3", ebitda: "j4",
27
- change_From_52_week_low: "j5", percent_change_from_52_week_low: "j6",
28
- last_trade_realtime_withtime: "k1", change_percent_realtime: "k2",
29
- last_trade_size: "k3", change_from_52_week_high: "k4",
30
- percent_change_from_52_week_high: "k5", last_trade_with_time: "l",
31
- last_trade_price: "l1", close: "l1", high_limit: "l2", low_limit: "l3",
32
- days_range: "m", days_range_realtime: "m2", moving_average_50_day: "m3",
33
- moving_average_200_day: "m4", change_from_200_day_moving_average: "m5",
14
+ ask: "a",
15
+ average_daily_volume: "a2",
16
+ ask_size: "a5",
17
+ bid: "b",
18
+ ask_real_time: "b2",
19
+ bid_real_time: "b3",
20
+ book_value: "b4",
21
+ bid_size: "b6",
22
+ change_and_percent_change: "c",
23
+ change: "c1",
24
+ comission: "c3",
25
+ change_real_time: "c6",
26
+ after_hours_change_real_time: "c8",
27
+ dividend_per_share: "d",
28
+ last_trade_date: "d1",
29
+ trade_date: "d2",
30
+ earnings_per_share: "e",
31
+ error_indicator: "e1",
32
+ eps_estimate_current_year: "e7",
33
+ eps_estimate_next_year: "e8",
34
+ eps_estimate_next_quarter: "e9",
35
+ float_shares: "f6",
36
+ low: "g", high: "h",
37
+ low_52_weeks: "j",
38
+ high_52_weeks: "k",
39
+ holdings_gain_percent: "g1",
40
+ annualized_gain: "g3",
41
+ holdings_gain: "g4",
42
+ holdings_gain_percent_realtime: "g5",
43
+ holdings_gain_realtime: "g6",
44
+ more_info: "i",
45
+ order_book: "i5",
46
+ market_capitalization: "j1",
47
+ shares_outstanding: "j2",
48
+ market_cap_realtime: "j3",
49
+ ebitda: "j4",
50
+ change_From_52_week_low: "j5",
51
+ percent_change_from_52_week_low: "j6",
52
+ last_trade_realtime_withtime: "k1",
53
+ change_percent_realtime: "k2",
54
+ last_trade_size: "k3",
55
+ change_from_52_week_high: "k4",
56
+ percent_change_from_52_week_high: "k5",
57
+ last_trade_with_time: "l",
58
+ last_trade_price: "l1",
59
+ close: "l1",
60
+ high_limit: "l2",
61
+ low_limit: "l3",
62
+ days_range: "m",
63
+ days_range_realtime: "m2",
64
+ moving_average_50_day: "m3",
65
+ moving_average_200_day: "m4",
66
+ change_from_200_day_moving_average: "m5",
34
67
  percent_change_from_200_day_moving_average: "m6",
35
68
  change_from_50_day_moving_average: "m7",
36
- percent_change_from_50_day_moving_average: "m8", name: "n", notes: "n4",
37
- open: "o", previous_close: "p", price_paid: "p1", change_in_percent: "p2",
38
- price_per_sales: "p5", price_per_book: "p6", ex_dividend_date: "q",
39
- pe_ratio: "r", dividend_pay_date: "r1", pe_ratio_realtime: "r2",
40
- peg_ratio: "r5", price_eps_estimate_current_year: "r6",
41
- price_eps_Estimate_next_year: "r7", symbol: "s", shares_owned: "s1",
42
- short_ratio: "s7", last_trade_time: "t1", trade_links: "t6",
43
- ticker_trend: "t7", one_year_target_price: "t8", volume: "v",
44
- holdings_value: "v1", holdings_value_realtime: "v7", weeks_range_52: "w",
45
- day_value_change: "w1", day_value_change_realtime: "w4",
46
- stock_exchange: "x", dividend_yield: "y", adjusted_close: nil
69
+ percent_change_from_50_day_moving_average: "m8",
70
+ name: "n",
71
+ notes: "n4",
72
+ open: "o", previous_close: "p",
73
+ price_paid: "p1",
74
+ change_in_percent: "p2",
75
+ price_per_sales: "p5",
76
+ price_per_book: "p6",
77
+ ex_dividend_date: "q",
78
+ pe_ratio: "r",
79
+ dividend_pay_date: "r1",
80
+ pe_ratio_realtime: "r2",
81
+ peg_ratio: "r5",
82
+ price_eps_estimate_current_year: "r6",
83
+ price_eps_Estimate_next_year: "r7",
84
+ symbol: "s",
85
+ shares_owned: "s1",
86
+ revenue: "s6",
87
+ short_ratio: "s7", last_trade_time: "t1",
88
+ trade_links: "t6",
89
+ ticker_trend: "t7",
90
+ one_year_target_price: "t8", volume: "v",
91
+ holdings_value: "v1",
92
+ holdings_value_realtime: "v7",
93
+ weeks_range_52: "w",
94
+ day_value_change: "w1",
95
+ day_value_change_realtime: "w4",
96
+ stock_exchange: "x",
97
+ dividend_yield: "y",
98
+ adjusted_close: nil
47
99
  # only in historical quotes ^
48
100
  }
49
101
 
50
102
  HISTORICAL_MODES = {
51
- daily: "d", weekly: "w", monthly: "m", dividends_only: "v"
103
+ daily: "d",
104
+ weekly: "w",
105
+ monthly: "m",
106
+ dividends_only: "v"
52
107
  }
53
108
 
54
109
  SYMBOLS_PER_REQUEST = 50
@@ -64,6 +119,9 @@ module YahooFinance
64
119
  ret = []
65
120
  symbols_array.each_slice(SYMBOLS_PER_REQUEST) do |symbols|
66
121
  read_quotes(symbols.join("+"), columns_array).map do |row|
122
+ if options[:na_as_nil]
123
+ row.each{ |key, value| row[key] = nil if value == 'N/A' }
124
+ end
67
125
  ret << OpenStruct.new(row.to_hash)
68
126
  end
69
127
  end
@@ -109,7 +167,7 @@ module YahooFinance
109
167
 
110
168
  def read_quotes(symb_str, cols)
111
169
  columns = "#{cols.map { |col| COLUMNS[col] }.join("")}"
112
- conn = open("http://download.finance.yahoo.com/d/quotes.csv?s=#{URI.escape(symb_str)}&f=#{columns}")
170
+ conn = open("https://download.finance.yahoo.com/d/quotes.csv?s=#{URI.escape(symb_str)}&f=#{columns}")
113
171
  CSV.parse(conn.read, headers: cols)
114
172
  end
115
173
 
@@ -128,7 +186,7 @@ module YahooFinance
128
186
  params[:f] = options[:end_date].year
129
187
  end
130
188
 
131
- url = "http://ichart.finance.yahoo.com/table.csv?#{params.map{|k, v| "#{k}=#{v}"}.join("&")}"
189
+ url = "https://ichart.finance.yahoo.com/table.csv?#{params.map{|k, v| "#{k}=#{v}"}.join("&")}"
132
190
  conn = open(url)
133
191
  cols = if options[:period] == :dividends_only
134
192
  [:dividend_pay_date, :dividend_yield]
@@ -156,15 +214,15 @@ module YahooFinance
156
214
  params[:f] = options[:end_date].year
157
215
  end
158
216
 
159
- url = "http://ichart.finance.yahoo.com/x?#{params.map{|k, v| "#{k}=#{v}"}.join("&")}"
217
+ url = "https://ichart.finance.yahoo.com/x?#{params.map{|k, v| "#{k}=#{v}"}.join("&")}"
160
218
  conn = open(url)
161
219
  CSV.parse(conn.read)
162
220
  end
163
221
 
164
222
  def read_symbols(query)
165
- conn = open("http://d.yimg.com/autoc.finance.yahoo.com/autoc?query=#{query}&callback=YAHOO.Finance.SymbolSuggest.ssCallback")
223
+ conn = open("http://d.yimg.com/autoc.finance.yahoo.com/autoc?query=#{query}&region=US&lang=en-US&callback=YAHOO.Finance.SymbolSuggest.ssCallback")
166
224
  result = conn.read
167
- result.sub!("YAHOO.Finance.SymbolSuggest.ssCallback(", "").chomp!(")")
225
+ result.sub!("YAHOO.Finance.SymbolSuggest.ssCallback(", "").chomp!(");")
168
226
  json_result = JSON.parse(result)
169
227
  json_result["ResultSet"]["Result"]
170
228
  end
@@ -1,4 +1,4 @@
1
1
  # Version Variable for Yahoo Finance Gem
2
2
  module YahooFinance
3
- VERSION = '1.0.0'
3
+ VERSION = '1.1.0'
4
4
  end
metadata CHANGED
@@ -1,15 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yahoo-finance
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Herval Freire
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-16 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2016-10-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.8'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.8'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.10'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.10'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: test-unit
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
13
69
  description:
14
70
  email: herval@hervalicio.us
15
71
  executables: []