tushare 0.1.0 → 0.2.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: cff9800d49faadc8d1a9a3409d4d9439ef3ac40f
4
- data.tar.gz: b64c26c4cd74d91ea229fe9b6670ffdb3b603a5c
3
+ metadata.gz: ad6e7db73711b81c0a5a8c8d9296736b203c479c
4
+ data.tar.gz: 0d668c56550f11d26a80bfeac88dc3e6b93d8931
5
5
  SHA512:
6
- metadata.gz: aee06550abf26c1ca48d65290b62d0bb64e403e10463b3d49bf329a0d74a52f5aef23fc326a44449d2f6cfeef3e33db0521e5719a96b24c5aa10ca663a580891
7
- data.tar.gz: ad1bdc376175cc2336c2c7425c25e646ed33d10449f4ed182f87b360ea50fe5a61dca1aefce1464b3bfe44593966ee128d312861aa624c28f17b41f1584c1565
6
+ metadata.gz: e352a8566d8ec7c147b0c1842c9582770e595009753c1f925264e46710b24d8475a89e837dc7c5438415c7a7b7a069add2bf338a8459bf83a62f0a0cd5747327
7
+ data.tar.gz: ceb521ee6f0b53e6dfb21d5031e27a3bc91b1e3853ec25bce9d7af989bf791402e86f8bbf6e97913a461708b12b80c8d1c0bff80344df4bba1d9dc669466a80c
@@ -1,29 +1,27 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tushare (0.1.0)
5
- awesome_print (~> 1.6.1)
6
- httparty (~> 0.13.3)
7
- nokogiri (~> 1.6.7)
8
- roo (~> 2.3.2)
9
- roo-xls (~> 1.0.0)
10
- table_print (~> 1.5.4)
4
+ tushare (0.2.0)
5
+ awesome_print (~> 1.7)
6
+ httparty (~> 0.14)
7
+ nokogiri (~> 1.7)
8
+ roo (~> 2.7)
9
+ roo-xls (~> 1.0)
10
+ table_print (~> 1.5)
11
11
 
12
12
  GEM
13
13
  remote: https://rubygems.org/
14
14
  specs:
15
- awesome_print (1.6.1)
15
+ awesome_print (1.7.0)
16
16
  diff-lcs (1.2.5)
17
- httparty (0.13.7)
18
- json (~> 1.8)
17
+ httparty (0.14.0)
19
18
  multi_xml (>= 0.5.2)
20
- json (1.8.3)
21
- mini_portile2 (2.0.0)
22
- multi_xml (0.5.5)
23
- nokogiri (1.6.7.2)
24
- mini_portile2 (~> 2.0.0.rc2)
19
+ mini_portile2 (2.1.0)
20
+ multi_xml (0.6.0)
21
+ nokogiri (1.7.1)
22
+ mini_portile2 (~> 2.1.0)
25
23
  rake (10.4.2)
26
- roo (2.3.2)
24
+ roo (2.7.1)
27
25
  nokogiri (~> 1)
28
26
  rubyzip (~> 1.1, < 2.0.0)
29
27
  roo-xls (1.0.0)
@@ -43,11 +41,11 @@ GEM
43
41
  diff-lcs (>= 1.2.0, < 2.0)
44
42
  rspec-support (~> 3.4.0)
45
43
  rspec-support (3.4.1)
46
- ruby-ole (1.2.11.8)
47
- rubyzip (1.1.7)
48
- spreadsheet (1.0.6)
44
+ ruby-ole (1.2.12.1)
45
+ rubyzip (1.2.1)
46
+ spreadsheet (1.1.4)
49
47
  ruby-ole (>= 1.0)
50
- table_print (1.5.4)
48
+ table_print (1.5.6)
51
49
 
52
50
  PLATFORMS
53
51
  ruby
@@ -57,3 +55,6 @@ DEPENDENCIES
57
55
  rake (~> 10.0)
58
56
  rspec (~> 3.4)
59
57
  tushare!
58
+
59
+ BUNDLED WITH
60
+ 1.15.4
File without changes
data/bin/setup CHANGED
File without changes
@@ -100,6 +100,12 @@ module Tushare
100
100
  # content, 消息内容(show_content=True的情况下)
101
101
  # ptime, 发布时间
102
102
  # rcounts,阅读次数
103
+ #
104
+ #
105
+ #20170504bug修复
106
+ #修复获取股吧数据的时候的报错问题
107
+ # 1. 获取最新消息链接的时候,heads中的链接由于连接到直播间,无法进行内容读取
108
+ # 2. 获取的res最新文章数据中的li有可能出现空标签的问题,在代码中加入判断去除空链接bug
103
109
  def guba_sina(show_content = false)
104
110
  url = format(GUBA_SINA_URL, P_TYPE['http'], DOMAINS['sina'])
105
111
  doc = Nokogiri::HTML(open(url), nil, 'gbk')
@@ -111,18 +117,20 @@ module Tushare
111
117
  link = head.css('a').first
112
118
  object[:title] = link.content
113
119
  object[:url] = link.attr('href')
114
- object.merge!(_guba_content(object[:url]))
120
+ #object.merge!(_guba_content(object[:url]))
115
121
  object.delete(:content) unless show_content
116
122
  result << object
117
123
  end
118
124
  res.each do |row|
119
125
  object = {}
120
- link = row.css('a')[1]
121
- object[:title] = link.text
122
- object[:url] = link.attr('href')
123
- object.merge!(_guba_content(object[:url]))
124
- object.delete(:content) unless show_content
125
- result << object
126
+ unless row.css('a').length<2
127
+ link = row.css('a')[1]
128
+ object[:title] = link.text
129
+ object[:url] = link.attr('href')
130
+ object.merge!(_guba_content(object[:url]))
131
+ object.delete(:content) unless show_content
132
+ result << object
133
+ end
126
134
  end
127
135
 
128
136
  result
@@ -134,7 +142,7 @@ module Tushare
134
142
  doc = Nokogiri::HTML(open(url), nil, 'gbk')
135
143
  content = doc.css('div.ilt_p p').text
136
144
  ptime = doc.css('div.fl_left.iltp_time span').text
137
- rcounts_text = doc.css('div.fl_right.iltp_span span')[1].text
145
+ rcounts_text = doc.css('div.fl_right.iltp_span span').text
138
146
  rcounts = rcounts_text.gsub(/\D/, '')
139
147
  { content: content, ptime: ptime, rcounts: rcounts }
140
148
  end
@@ -405,8 +405,106 @@ module Tushare
405
405
  end
406
406
  end
407
407
 
408
+ # 获取k线数据
409
+ # ---------
410
+ # Parameters:
411
+ # code:string
412
+ # 股票代码 e.g. 600848
413
+ # start_date:string
414
+ # 开始日期 format:YYYY-MM-DD 为空时取上市首日
415
+ # end_date:string
416
+ # 结束日期 format:YYYY-MM-DD 为空时取最近一个交易日
417
+ # autype:string
418
+ # 复权类型,qfq-前复权 hfq-后复权 None-不复权,默认为qfq
419
+ # ktype:string
420
+ # 数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
421
+ # retry_count : int, 默认 3
422
+ # 如遇网络等问题重复执行的次数
423
+ # pause : int, 默认 0
424
+ # 重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题
425
+ # return
426
+ # -------
427
+ # DataFrame
428
+ # date 交易日期 (index)
429
+ # open 开盘价
430
+ # high 最高价
431
+ # close 收盘价
432
+ # low 最低价
433
+ # volume 成交量
434
+ # amount 成交额
435
+ # turnoverratio 换手率
436
+ # code 股票代码
437
+ def get_k_data(code = nil, start_date = '', end_date = '', ktype = 'D', autype = 'qfq', index = false)
438
+ symbol = index ? INDEX_SYMBOL[code] : _code_to_symbol(code)
439
+ dataflag = ''
440
+ autype = autype.nil? ? '' : autype
441
+ if !start_date.nil? && start_date != ''
442
+ end_date = end_date.nil? || end_date == '' ? Date.today.strftime('%Y-%m-%d') : end_date
443
+ end
444
+ if K_LABELS.include?(ktype.upcase)
445
+ fq = !autype.nil? ? autype : ''
446
+ fq = '' if %w(1 5).include?(code[0]) || index
447
+ kline = autype.nil? ? '' : 'fq'
448
+ if (start_date.nil? || start_date == '') && (end_date.nil? || end_date == '')
449
+ urls = [format(KLINE_TT_URL, P_TYPE['http'], DOMAINS['tt'], kline, fq, symbol, TT_K_TYPE[ktype.upcase], start_date, end_date, fq, _random(17))]
450
+ else
451
+ years = tt_dates(start_date, end_date)
452
+ urls = []
453
+ years.each do |year|
454
+ urls.push(format(KLINE_TT_URL, P_TYPE['http'], DOMAINS['tt'], kline, "#{fq}#{year}", symbol, TT_K_TYPE[ktype.upcase], "#{year}-01-01", "#{year + 1}-12-31", fq, _random(17)))
455
+ end
456
+ end
457
+ dataflag = format('%s%s', fq, TT_K_TYPE[ktype.upcase])
458
+ elsif K_MIN_LABELS.include?(ktype)
459
+ urls = [format(KLINE_TT_MIN_URL, P_TYPE['http'], DOMAINS['tt'], symbol, ktype, ktype, _random(16))]
460
+ dataflag = format('m%s', ktype)
461
+ else
462
+ throw TypeError.new('ktype input error.')
463
+ end
464
+ data = []
465
+ urls.each do |url|
466
+ data = data.concat(_get_k_data(url, dataflag, symbol, code, index, ktype))
467
+ end
468
+ if !K_MIN_LABELS.include?(ktype) && (!start_date.nil? && start_date != '') && (!end_date.nil? && end_date != '') && !data.empty?
469
+ start_date = Date.strptime(start_date, '%Y-%m-%d')
470
+ end_date = Date.strptime(end_date, '%Y-%m-%d')
471
+ data.select! do |datum|
472
+ date = Date.strptime(datum['date'], '%Y-%m-%d')
473
+ start_date <= date && date <= end_date
474
+ end
475
+ end
476
+ data
477
+ end
478
+
408
479
  protected
409
480
 
481
+ def _get_k_data(url, dataflag = '', symbol = '', code = '', index = false, ktype = '')
482
+ response = HTTParty.get(url)
483
+ return [] if response.length < 100
484
+ response = response.split('=')[1]
485
+ response.gsub!(/,{"nd.*?}/, '')
486
+ js = JSON.parse(response)
487
+ dataflag = js['data'][symbol].keys.include?(dataflag) ? dataflag : TT_K_TYPE[ktype.upcase]
488
+ return [] if js['data'][symbol][dataflag].length == 0
489
+ data = []
490
+ cols = KLINE_TT_COLS
491
+ if (js['data'][symbol][dataflag][0].length) == 6
492
+ cols = KLINE_TT_COLS_MINS
493
+ end
494
+ js['data'][symbol][dataflag].each do |datum|
495
+ object = { 'code' => index ? symbol : code }
496
+ datum.each_with_index do |v, i|
497
+ if (cols[i] != 'date')
498
+ object[cols[i]] = v.to_f
499
+ else
500
+ object[cols[i]] = v
501
+ end
502
+ end
503
+ data.push(object)
504
+ end
505
+ data
506
+ end
507
+
410
508
  def _parse_fq_factor(code, start_date, end_date)
411
509
  symbol = _code_to_symbol(code)
412
510
  url = format(HIST_FQ_FACTOR_URL, P_TYPE['http'], DOMAINS['vsf'],
@@ -502,12 +600,18 @@ module Tushare
502
600
  rand(start_int..end_int).to_s
503
601
  end
504
602
 
603
+ def tt_dates(start_date = '', end_date = '')
604
+ start_year = start_date[0...4].to_i
605
+ end_year = end_date[0...4].to_i
606
+ (start_year..(end_year + 1)).step(2).to_a
607
+ end
608
+
505
609
  module_function :get_hist_data, :get_tick_data, :get_sina_dd,
506
610
  :get_today_ticks, :get_today_all, :_today_ticks,
507
611
  :_parsing_dayprice_json, :get_realtime_quotes,
508
612
  :_random, :code_to_symbol, :get_h_data, :_parse_fq_factor,
509
- :_get_index_url, :_parse_fq_data, :get_index, :get_hists
613
+ :_get_index_url, :_parse_fq_data, :get_index, :get_hists,
614
+ :get_k_data, :_get_k_data, :tt_dates
510
615
  end
511
616
  end
512
-
513
617
  end
@@ -33,10 +33,13 @@ module Tushare
33
33
  'sseq' => 'query.sse.com.cn',
34
34
  'sse' => 'www.sse.com.cn',
35
35
  'szse' => 'www.szse.cn',
36
- 'oss' => '218.244.146.57',
36
+ 'oss' => 'file.tushare.org',
37
37
  'idxip' => '115.29.204.48',
38
38
  'shibor' => 'www.shibor.org',
39
- 'mbox' => 'www.cbooo.cn'
39
+ 'mbox' => 'www.cbooo.cn',
40
+ 'tt' => 'gtimg.cn',
41
+ 'gw' => 'gw.com.cn',
42
+ 'v500' => 'value500.com'
40
43
  }.freeze
41
44
  PAGES = {
42
45
  'fd' => 'index.phtml',
@@ -229,8 +232,124 @@ module Tushare
229
232
  MONEY_SUPPLY_COLS = %w(month m2 m2_yoy m1 m1_yoy m0 m0_yoy cd cd_yoy qm
230
233
  qm_yoy ftd ftd_yoy sd sd_yoy rests rests_yoy).freeze
231
234
  MONEY_SUPPLY_BLA_COLS = %w(year m2 m1 m0 cd qm ftd sd rests).freeze
232
- ALL_CAL_FILE = format('%s%s/static/calAll.csv', P_TYPE['http'], DOMAINS['oss']).freeze
233
-
235
+ ALL_CAL_FILE = format('%s%s/tsdata/calAll.csv', P_TYPE['http'], DOMAINS['oss']).freeze
236
+ INDEX_SYMBOL = {'399990' => 'sz399990', '000006' => 'sh000006', '399998' => 'sz399998',
237
+ '399436' => 'sz399436', '399678' => 'sz399678', '399804' => 'sz399804',
238
+ '000104' => 'sh000104', '000070' => 'sh000070', '399613' => 'sz399613',
239
+ '399690' => 'sz399690', '399928' => 'sz399928', '000928' => 'sh000928',
240
+ '000986' => 'sh000986', '399806' => 'sz399806', '000032' => 'sh000032',
241
+ '000005' => 'sh000005', '399381' => 'sz399381', '399908' => 'sz399908',
242
+ '000908' => 'sh000908', '399691' => 'sz399691', '000139' => 'sh000139',
243
+ '399427' => 'sz399427', '399248' => 'sz399248', '000832' => 'sh000832',
244
+ '399901' => 'sz399901', '399413' => 'sz399413', '000901' => 'sh000901',
245
+ '000078' => 'sh000078', '000944' => 'sh000944', '000025' => 'sh000025',
246
+ '399944' => 'sz399944', '399307' => 'sz399307', '000052' => 'sh000052',
247
+ '399680' => 'sz399680', '399232' => 'sz399232', '399993' => 'sz399993',
248
+ '000102' => 'sh000102', '000950' => 'sh000950', '399950' => 'sz399950',
249
+ '399244' => 'sz399244', '399925' => 'sz399925', '000925' => 'sh000925',
250
+ '000003' => 'sh000003', '000805' => 'sh000805', '000133' => 'sh000133',
251
+ '399677' => 'sz399677', '399319' => 'sz399319', '399397' => 'sz399397',
252
+ '399983' => 'sz399983', '399654' => 'sz399654', '399440' => 'sz399440',
253
+ '000043' => 'sh000043', '000012' => 'sh000012', '000833' => 'sh000833',
254
+ '000145' => 'sh000145', '000053' => 'sh000053', '000013' => 'sh000013',
255
+ '000022' => 'sh000022', '000094' => 'sh000094', '399299' => 'sz399299',
256
+ '000101' => 'sh000101', '399817' => 'sz399817', '399481' => 'sz399481',
257
+ '399434' => 'sz399434', '399301' => 'sz399301', '000029' => 'sh000029',
258
+ '399812' => 'sz399812', '399441' => 'sz399441', '000098' => 'sh000098',
259
+ '399557' => 'sz399557', '000068' => 'sh000068', '399298' => 'sz399298',
260
+ '399302' => 'sz399302', '000961' => 'sh000961', '000959' => 'sh000959',
261
+ '399961' => 'sz399961', '000126' => 'sh000126', '000036' => 'sh000036',
262
+ '399305' => 'sz399305', '000116' => 'sh000116', '399359' => 'sz399359',
263
+ '399810' => 'sz399810', '000062' => 'sh000062', '399618' => 'sz399618',
264
+ '399435' => 'sz399435', '000149' => 'sh000149', '000819' => 'sh000819',
265
+ '000020' => 'sh000020', '000061' => 'sh000061', '000016' => 'sh000016',
266
+ '000028' => 'sh000028', '399809' => 'sz399809', '000999' => 'sh000999',
267
+ '399238' => 'sz399238', '000100' => 'sh000100', '399979' => 'sz399979',
268
+ '000979' => 'sh000979', '399685' => 'sz399685', '000152' => 'sh000152',
269
+ '000153' => 'sh000153', '399318' => 'sz399318', '000853' => 'sh000853',
270
+ '000040' => 'sh000040', '399693' => 'sz399693', '000076' => 'sh000076',
271
+ '000017' => 'sh000017', '000134' => 'sh000134', '399989' => 'sz399989',
272
+ '000042' => 'sh000042', '000066' => 'sh000066', '000008' => 'sh000008',
273
+ '000002' => 'sh000002', '000001' => 'sh000001', '000011' => 'sh000011',
274
+ '000031' => 'sh000031', '399403' => 'sz399403', '000951' => 'sh000951',
275
+ '399951' => 'sz399951', '000092' => 'sh000092', '399234' => 'sz399234',
276
+ '000823' => 'sh000823', '399986' => 'sz399986', '399647' => 'sz399647',
277
+ '000050' => 'sh000050', '000073' => 'sh000073', '399357' => 'sz399357',
278
+ '000940' => 'sh000940', '000107' => 'sh000107', '000048' => 'sh000048',
279
+ '399411' => 'sz399411', '399366' => 'sz399366', '399373' => 'sz399373',
280
+ '000015' => 'sh000015', '000021' => 'sh000021', '000151' => 'sh000151',
281
+ '000851' => 'sh000851', '000058' => 'sh000058', '399404' => 'sz399404',
282
+ '399102' => 'sz399102', '399431' => 'sz399431', '399971' => 'sz399971',
283
+ '000125' => 'sh000125', '000069' => 'sh000069', '000063' => 'sh000063',
284
+ '399395' => 'sz399395', '000038' => 'sh000038', '399240' => 'sz399240',
285
+ '399903' => 'sz399903', '000989' => 'sh000989', '399321' => 'sz399321',
286
+ '399675' => 'sz399675', '399235' => 'sz399235', '000057' => 'sh000057',
287
+ '000056' => 'sh000056', '000903' => 'sh000903', '399310' => 'sz399310',
288
+ '000004' => 'sh000004', '000019' => 'sh000019', '399919' => 'sz399919',
289
+ '000974' => 'sh000974', '000919' => 'sh000919', '399635' => 'sz399635',
290
+ '399663' => 'sz399663', '399106' => 'sz399106', '399107' => 'sz399107',
291
+ '399555' => 'sz399555', '000090' => 'sh000090', '000155' => 'sh000155',
292
+ '000060' => 'sh000060', '399636' => 'sz399636', '000816' => 'sh000816',
293
+ '000010' => 'sh000010', '399671' => 'sz399671', '000035' => 'sh000035',
294
+ '399352' => 'sz399352', '399683' => 'sz399683', '399554' => 'sz399554',
295
+ '399409' => 'sz399409', '000018' => 'sh000018', '399101' => 'sz399101',
296
+ '000992' => 'sh000992', '399416' => 'sz399416', '399918' => 'sz399918',
297
+ '399379' => 'sz399379', '399674' => 'sz399674', '399239' => 'sz399239',
298
+ '399384' => 'sz399384', '399367' => 'sz399367', '000918' => 'sh000918',
299
+ '000914' => 'sh000914', '399914' => 'sz399914', '000054' => 'sh000054',
300
+ '000806' => 'sh000806', '399619' => 'sz399619', '399015' => 'sz399015',
301
+ '399393' => 'sz399393', '399313' => 'sz399313', '399231' => 'sz399231',
302
+ '000846' => 'sh000846', '000854' => 'sh000854', '399010' => 'sz399010',
303
+ '399666' => 'sz399666', '399387' => 'sz399387', '399399' => 'sz399399',
304
+ '000026' => 'sh000026', '399934' => 'sz399934', '000150' => 'sh000150',
305
+ '000934' => 'sh000934', '399317' => 'sz399317', '000138' => 'sh000138',
306
+ '399371' => 'sz399371', '399394' => 'sz399394', '399659' => 'sz399659',
307
+ '399665' => 'sz399665', '399931' => 'sz399931', '000161' => 'sh000161',
308
+ '399380' => 'sz399380', '000931' => 'sh000931', '399704' => 'sz399704',
309
+ '399616' => 'sz399616', '000817' => 'sh000817', '399303' => 'sz399303',
310
+ '399629' => 'sz399629', '399624' => 'sz399624', '399009' => 'sz399009',
311
+ '399233' => 'sz399233', '399103' => 'sz399103', '399242' => 'sz399242',
312
+ '399627' => 'sz399627', '000971' => 'sh000971', '399679' => 'sz399679',
313
+ '399912' => 'sz399912', '000982' => 'sh000982', '399668' => 'sz399668',
314
+ '000096' => 'sh000096', '399982' => 'sz399982', '000849' => 'sh000849',
315
+ '000148' => 'sh000148', '399364' => 'sz399364', '000912' => 'sh000912',
316
+ '000129' => 'sh000129', '000055' => 'sh000055', '000047' => 'sh000047', '399355' => 'sz399355', '399622' => 'sz399622', '000033' => 'sh000033', '399640' => 'sz399640', '000852' => 'sh000852', '399966' => 'sz399966', '399615' => 'sz399615', '399802' => 'sz399802', '399602' => 'sz399602', '000105' => 'sh000105', '399660' => 'sz399660', '399672' => 'sz399672',
317
+ '399913' => 'sz399913', '399420' => 'sz399420', '000159' => 'sh000159', '399314' => 'sz399314', '399652' => 'sz399652',
318
+ '399369' => 'sz399369', '000913' => 'sh000913', '000065' => 'sh000065',
319
+ '000808' => 'sh000808', '399386' => 'sz399386', '399100' => 'sz399100',
320
+ '000997' => 'sh000997', '000990' => 'sh000990', '000093' => 'sh000093', '399637' => 'sz399637', '399439' => 'sz399439', '399306' => 'sz399306', '000855' => 'sh000855', '000123' => 'sh000123', '399623' => 'sz399623',
321
+ '399312' => 'sz399312', '399249' => 'sz399249', '399311' => 'sz399311', '399975' => 'sz399975', '399356' => 'sz399356',
322
+ '399400' => 'sz399400', '399676' => 'sz399676', '000136' => 'sh000136', '399361' => 'sz399361', '399974' => 'sz399974', '399995' => 'sz399995', '399316' => 'sz399316', '399701' => 'sz399701', '000300' => 'sh000300', '000030' => 'sh000030', '000976' => 'sh000976', '399686' => 'sz399686', '399108' => 'sz399108', '399374' => 'sz399374',
323
+ '000906' => 'sh000906', '399707' => 'sz399707', '000064' => 'sh000064', '399633' => 'sz399633', '399300' => 'sz399300', '399628' => 'sz399628', '399398' => 'sz399398', '000034' => 'sh000034',
324
+ '399644' => 'sz399644', '399905' => 'sz399905', '399626' => 'sz399626',
325
+ '399625' => 'sz399625', '000978' => 'sh000978', '399664' => 'sz399664', '399682' => 'sz399682', '399322' => 'sz399322', '000158' => 'sh000158', '000842' => 'sh000842', '399550' => 'sz399550', '399423' => 'sz399423', '399978' => 'sz399978', '399996' => 'sz399996', '000905' => 'sh000905',
326
+ '000007' => 'sh000007', '000827' => 'sh000827', '399655' => 'sz399655', '399401' => 'sz399401', '399650' => 'sz399650', '000963' => 'sh000963', '399661' => 'sz399661', '399922' => 'sz399922', '000091' => 'sh000091', '399375' => 'sz399375', '000922' => 'sh000922', '399702' => 'sz399702', '399963' => 'sz399963', '399011' => 'sz399011', '399012' => 'sz399012',
327
+ '399383' => 'sz399383', '399657' => 'sz399657', '399910' => 'sz399910', '399351' => 'sz399351', '000910' => 'sh000910', '000051' => 'sh000051', '399376' => 'sz399376', '399639' => 'sz399639', '000821' => 'sh000821', '399360' => 'sz399360', '399604' => 'sz399604', '399315' => 'sz399315', '399658' => 'sz399658', '000135' => 'sh000135',
328
+ '000059' => 'sh000059', '399006' => 'sz399006',
329
+ '399320' => 'sz399320', '000991' => 'sh000991', '399606' => 'sz399606',
330
+ '399428' => 'sz399428', '399406' => 'sz399406', '399630' => 'sz399630', '000802' => 'sh000802', '399803' => 'sz399803', '000071' => 'sh000071', '399358' => 'sz399358',
331
+ '399013' => 'sz399013', '399385' => 'sz399385', '399008' => 'sz399008', '399649' => 'sz399649',
332
+ '399673' => 'sz399673', '399418' => 'sz399418', '399370' => 'sz399370', '000814' => 'sh000814',
333
+ '399002' => 'sz399002', '399814' => 'sz399814', '399641' => 'sz399641', '399001' => 'sz399001',
334
+ '399662' => 'sz399662', '399706' => 'sz399706', '399932' => 'sz399932', '000095' => 'sh000095', '000932' => 'sh000932', '399965' => 'sz399965', '399363' => 'sz399363', '399354' => 'sz399354', '399638' => 'sz399638', '399648' => 'sz399648', '399608' => 'sz399608', '000939' => 'sh000939', '399939' => 'sz399939', '399365' => 'sz399365', '399382' => 'sz399382', '399631' => 'sz399631', '399612' => 'sz399612', '399611' => 'sz399611', '399645' => 'sz399645',
335
+ '399324' => 'sz399324', '399552' => 'sz399552', '000858' => 'sh000858', '000045' => 'sh000045',
336
+ '000121' => 'sh000121', '399703' => 'sz399703', '399003' => 'sz399003',
337
+ '399348' => 'sz399348', '399389' => 'sz399389', '399007' => 'sz399007', '399391' => 'sz399391', '000973' => 'sh000973',
338
+ '000984' => 'sh000984', '000969' => 'sh000969', '000952' => 'sh000952', '399332' => 'sz399332', '399952' => 'sz399952', '399553' => 'sz399553', '000856' => 'sh000856',
339
+ '399969' => 'sz399969', '399643' => 'sz399643', '399402' => 'sz399402', '399372' => 'sz399372', '399632' => 'sz399632', '399344' => 'sz399344', '399808' => 'sz399808', '399620' => 'sz399620', '000103' => 'sh000103', '399911' => 'sz399911', '000993' => 'sh000993', '000983' => 'sh000983', '399687' => 'sz399687', '399933' => 'sz399933', '000933' => 'sh000933', '399437' => 'sz399437', '399433' => 'sz399433', '000046' => 'sh000046', '000911' => 'sh000911', '000114' => 'sh000114', '000049' => 'sh000049', '399392' => 'sz399392', '399653' => 'sz399653', '000975' => 'sh000975', '000044' => 'sh000044', '399378' => 'sz399378', '000828' => 'sh000828', '399634' => 'sz399634',
340
+ '399005' => 'sz399005', '000162' => 'sh000162', '399333' => 'sz399333', '000122' => 'sh000122', '399646' => 'sz399646', '000077' => 'sh000077', '000074' => 'sh000074', '399656' => 'sz399656', '399396' => 'sz399396', '399415' => 'sz399415', '399408' => 'sz399408', '000115' => 'sh000115', '000987' => 'sh000987', '399362' => 'sz399362', '000841' => 'sh000841', '000141' => 'sh000141', '000120' => 'sh000120', '399992' => 'sz399992', '000807' => 'sh000807', '399350' => 'sz399350', '000009' => 'sh000009', '000998' => 'sh000998', '399390' => 'sz399390', '399405' => 'sz399405', '000099' => 'sh000099', '399337' => 'sz399337', '000142' => 'sh000142', '399419' => 'sz399419', '399407' => 'sz399407', '000909' => 'sh000909', '000119' => 'sh000119', '399909' => 'sz399909', '399805' => 'sz399805', '000996' => 'sh000996', '000847' => 'sh000847', '000130' => 'sh000130', '399377' => 'sz399377', '399388' => 'sz399388', '399610' => 'sz399610', '000958' => 'sh000958',
341
+ '399958' => 'sz399958', '000075' => 'sh000075', '399346' => 'sz399346', '000147' => 'sh000147', '000132' => 'sh000132', '000108' => 'sh000108', '399642' => 'sz399642', '000977' => 'sh000977', '399689' => 'sz399689', '399335' => 'sz399335', '399977' => 'sz399977', '399972' => 'sz399972', '399970' => 'sz399970', '399004' => 'sz399004', '399341' => 'sz399341', '399330' => 'sz399330', '399917' => 'sz399917', '000160' => 'sh000160', '399432' => 'sz399432', '399429' => 'sz399429', '000917' => 'sh000917',
342
+ '000128' => 'sh000128', '000067' => 'sh000067', '000079' => 'sh000079', '399236' => 'sz399236', '399994' => 'sz399994', '399237' => 'sz399237', '000966' => 'sh000966', '000957' => 'sh000957', '399328' => 'sz399328',
343
+ '399353' => 'sz399353', '399957' => 'sz399957', '399412' => 'sz399412', '000904' => 'sh000904', '399904' => 'sz399904', '399410' => 'sz399410', '000027' => 'sh000027', '399667' => 'sz399667', '000857' => 'sh000857',
344
+ '000131' => 'sh000131', '000964' => 'sh000964', '399339' => 'sz399339', '399964' => 'sz399964', '399991' => 'sz399991', '399417' => 'sz399417', '000146' => 'sh000146', '399551' => 'sz399551', '000137' => 'sh000137', '000118' => 'sh000118', '399976' => 'sz399976', '000109' => 'sh000109', '399681' => 'sz399681', '399438' => 'sz399438', '000117' => 'sh000117', '399614' => 'sz399614', '399669' => 'sz399669', '000111' => 'sh000111', '399670' => 'sz399670', '000097' => 'sh000097', '000106' => 'sh000106', '000039' => 'sh000039', '399935' => 'sz399935', '000935' => 'sh000935', '399813' => 'sz399813', '000037' => 'sh000037', '399811' => 'sz399811', '399705' => 'sz399705', '399556' => 'sz399556', '000113' => 'sh000113', '000072' => 'sh000072', '399651' => 'sz399651', '399617' => 'sz399617', '399684' => 'sz399684', '000041' => 'sh000041', '399807' => 'sz399807', '399959' => 'sz399959', '399967' => 'sz399967', '399326' => 'sz399326', '399688' => 'sz399688', '399368' => 'sz399368', '399241' => 'sz399241', '399696' => 'sz399696', '000850' => 'sh000850', '000110' => 'sh000110', '399621' => 'sz399621', '399243' => 'sz399243',
345
+ '399973' => 'sz399973', '399987' => 'sz399987', '000112' => 'sh000112', '399997' => 'sz399997',
346
+ '000915' => 'sh000915', '000916' => 'sh000916',
347
+ 'hkHSI' => 'hkHSI' }.freeze
348
+ KLINE_TT_URL = '%sweb.ifzq.%s/appstock/app/%skline/get?_var=kline_day%s&param=%s,%s,%s,%s,640,%s&r=0.%s'.freeze
349
+ TT_K_TYPE = { 'D' => 'day', 'W' => 'week', 'M' => 'month' }.freeze
350
+ KLINE_TT_MIN_URL = '%sifzq.%s/appstock/app/kline/mkline?param=%s,m%s,,640&_var=m%s_today&r=0.%s'.freeze
351
+ KLINE_TT_COLS_MINS = ['date', 'open', 'close', 'high', 'low', 'volume']
352
+ KLINE_TT_COLS = ['date', 'open', 'close', 'high', 'low', 'volume', 'amount', 'turnoverratio']
234
353
 
235
354
  module Util
236
355
  # 生成symbol代码标志
@@ -289,5 +408,7 @@ module Tushare
289
408
  [6, 7].include?(date.cwday) ||
290
409
  holidays.include?(date.strftime('%F'))
291
410
  end
411
+
412
+ module_function :trade_cal, :holiday?
292
413
  end
293
414
  end
@@ -1,3 +1,3 @@
1
1
  module Tushare
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tushare
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robot Jiang
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2017-04-17 00:00:00.000000000 Z
12
+ date: 2017-08-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
@@ -203,9 +203,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
203
  version: '0'
204
204
  requirements: []
205
205
  rubyforge_project:
206
- rubygems_version: 2.5.1
206
+ rubygems_version: 2.6.11
207
207
  signing_key:
208
208
  specification_version: 4
209
209
  summary: Tushare-Ruby is ruby version of [tushare](https://github.com/waditu/tushare)
210
210
  test_files: []
211
- has_rdoc: