tushare 1.3.1__py3-none-any.whl → 1.3.2__py3-none-any.whl
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.
- tushare/__init__.py +1 -1
- tushare/stock/rtq.py +63 -25
- {tushare-1.3.1.dist-info → tushare-1.3.2.dist-info}/METADATA +1 -1
- {tushare-1.3.1.dist-info → tushare-1.3.2.dist-info}/RECORD +7 -7
- {tushare-1.3.1.dist-info → tushare-1.3.2.dist-info}/LICENSE +0 -0
- {tushare-1.3.1.dist-info → tushare-1.3.2.dist-info}/WHEEL +0 -0
- {tushare-1.3.1.dist-info → tushare-1.3.2.dist-info}/top_level.txt +0 -0
tushare/__init__.py
CHANGED
tushare/stock/rtq.py
CHANGED
@@ -86,18 +86,26 @@ def realtime_quote(ts_code="688553.SH", src="sina", ):
|
|
86
86
|
return get_realtime_quotes_dc(symbols)
|
87
87
|
|
88
88
|
|
89
|
+
sina_stock_code = {}
|
90
|
+
|
91
|
+
|
89
92
|
def get_realtime_quotes_sina(symbol="688553"): # "688553"
|
93
|
+
global sina_stock_code
|
90
94
|
symbols = []
|
95
|
+
syms = []
|
91
96
|
for i in [j for j in symbol.split(",")]:
|
92
|
-
|
97
|
+
s = i.split(".")
|
98
|
+
sina_stock_code[s[0]] = s[1].upper()
|
99
|
+
symbols.append(s[1].lower() + s[0])
|
100
|
+
syms.append(s[0])
|
93
101
|
# symbols = re.search(r"(\d+)", str(symbols), re.S | re.M).group(1)
|
94
102
|
symbols_list = ''
|
95
103
|
if isinstance(symbols, list) or isinstance(symbols, set) or \
|
96
104
|
isinstance(symbols, tuple) or isinstance(symbols, pd.Series):
|
97
105
|
for code in symbols:
|
98
|
-
symbols_list +=
|
106
|
+
symbols_list += code + ','
|
99
107
|
else:
|
100
|
-
symbols_list =
|
108
|
+
symbols_list = symbols
|
101
109
|
symbols_list = symbols_list[:-1] if len(symbols_list) > 8 else symbols_list
|
102
110
|
root_url = ct.LIVE_DATA_URL % (ct.P_TYPE['http'], ct.DOMAINS['sinahq'], _get_current_timestamp(), symbols_list)
|
103
111
|
response = requests.get(root_url,
|
@@ -109,8 +117,6 @@ def get_realtime_quotes_sina(symbol="688553"): # "688553"
|
|
109
117
|
text = response.content.decode('GBK')
|
110
118
|
reg = re.compile(r'\="(.*?)\";')
|
111
119
|
data = reg.findall(text)
|
112
|
-
regSym = re.compile(r'(?:sh|sz)(.*?)\=')
|
113
|
-
syms = regSym.findall(text)
|
114
120
|
data_list = []
|
115
121
|
syms_list = []
|
116
122
|
for index, row in enumerate(data):
|
@@ -126,13 +132,18 @@ def get_realtime_quotes_sina(symbol="688553"): # "688553"
|
|
126
132
|
for txt in ls:
|
127
133
|
df[txt] = df[txt].map(lambda x: x[:-2])
|
128
134
|
df.columns = rtqv.LIVE_DATA_COLS
|
129
|
-
df["TS_CODE"] = df["TS_CODE"].apply(
|
135
|
+
df["TS_CODE"] = df["TS_CODE"].apply(format_sina_stock_code)
|
130
136
|
df["DATE"] = df["DATE"].apply(format_date_str)
|
131
137
|
new_order = rtqv.LIVE_DATA_COLS_REINDEX
|
132
138
|
df = df[new_order]
|
133
139
|
return df
|
134
140
|
|
135
141
|
|
142
|
+
def format_sina_stock_code(x):
|
143
|
+
ts_code = f"{x}.{sina_stock_code[x]}"
|
144
|
+
return ts_code
|
145
|
+
|
146
|
+
|
136
147
|
def format_date_str(date_str):
|
137
148
|
return date_str.replace("-", "")
|
138
149
|
|
@@ -453,9 +464,13 @@ def get_stock_all_a_sina(interval: Optional[int] = 3, page_count: Optional[int]
|
|
453
464
|
|
454
465
|
|
455
466
|
def get_realtime_quotes_dc(symbols="688553"):
|
467
|
+
"""
|
468
|
+
https://quote.eastmoney.com/sh601096.html
|
469
|
+
"""
|
456
470
|
symbols = str(symbols).split(",")[0]
|
457
471
|
url = "https://push2.eastmoney.com/api/qt/stock/get"
|
458
472
|
symbol = re.search(r"(\d+)", symbols, re.S | re.M).group(1)
|
473
|
+
# print(symbol)
|
459
474
|
params = {
|
460
475
|
"invt": "2",
|
461
476
|
"fltt": "1",
|
@@ -468,51 +483,74 @@ def get_realtime_quotes_dc(symbols="688553"):
|
|
468
483
|
}
|
469
484
|
response = requests.get(url, headers=rtqv.dc_cookies, cookies=rtqv.dc_headers, params=params)
|
470
485
|
data_info = response.json()["data"]
|
486
|
+
if not data_info:
|
487
|
+
return pd.DataFrame()
|
471
488
|
name = data_info["f58"]
|
472
|
-
open = data_info["f45"] / 100
|
473
|
-
high = data_info["f44"] / 100
|
474
|
-
pre_close = data_info["f60"] / 100
|
475
|
-
low = data_info["f46"] / 100
|
476
|
-
price = data_info["f43"] / 100
|
489
|
+
open = data_info["f45"] # / 100
|
490
|
+
high = data_info["f44"] # / 100
|
491
|
+
pre_close = data_info["f60"] # / 100
|
492
|
+
low = data_info["f46"] # / 100
|
493
|
+
price = data_info["f43"] # / 100 if data_info["f43"] != "-" else ""
|
477
494
|
b5_v = data_info["f12"]
|
478
|
-
b5_p = data_info["f11"] / 100
|
495
|
+
b5_p = data_info["f11"] # / 100 if data_info["f11"] != "-" else ""
|
479
496
|
b4_v = data_info["f14"]
|
480
|
-
b4_p = data_info["f13"] / 100
|
497
|
+
b4_p = data_info["f13"] # / 100 if data_info["f13"] != "-" else ""
|
481
498
|
b3_v = data_info["f16"]
|
482
|
-
b3_p = data_info["f15"] / 100
|
499
|
+
b3_p = data_info["f15"] # / 100 if data_info["f15"] != "-" else ""
|
483
500
|
b2_v = data_info["f18"]
|
484
|
-
b2_p = data_info["f17"] / 100
|
501
|
+
b2_p = data_info["f17"] # / 100 if data_info["f17"] != "-" else ""
|
485
502
|
b1_v = data_info["f20"]
|
486
|
-
b1_p = data_info["f19"] / 100
|
503
|
+
b1_p = data_info["f19"] # / 100 if data_info["f19"] != "-" else ""
|
487
504
|
a5_v = data_info["f32"]
|
488
|
-
a5_p = data_info["f31"] / 100
|
505
|
+
a5_p = data_info["f31"] # / 100 if data_info["f31"] != "-" else ""
|
489
506
|
a4_v = data_info["f34"]
|
490
|
-
a4_p = data_info["f33"] / 100
|
507
|
+
a4_p = data_info["f33"] # / 100 if data_info["f33"] != "-" else ""
|
491
508
|
a3_v = data_info["f36"]
|
492
|
-
a3_p = data_info["f35"] / 100
|
509
|
+
a3_p = data_info["f35"] # / 100 if data_info["f35"] != "-" else ""
|
493
510
|
a2_v = data_info["f38"]
|
494
|
-
a2_p = data_info["f37"] / 100
|
511
|
+
a2_p = data_info["f37"] # / 100 if data_info["f38"] != "-" else ""
|
495
512
|
a1_v = data_info["f40"]
|
496
|
-
a1_p = data_info["f39"] / 100
|
513
|
+
a1_p = data_info["f39"] # / 100 if data_info["f39"] != "-" else ""
|
497
514
|
date_time = timestemp_to_time(data_info["f86"])
|
498
515
|
date = date_time[0:10]
|
499
516
|
times = date_time[10:]
|
500
517
|
volume = data_info["f47"]
|
501
518
|
amount = data_info["f48"]
|
502
|
-
bid = data_info["f19"] / 100
|
503
|
-
ask = data_info["f39"] / 100
|
519
|
+
bid = data_info["f19"] # / 100 if data_info["f19"] != "-" else ""
|
520
|
+
ask = data_info["f39"] # / 100 if data_info["f39"] != "-" else ""
|
504
521
|
code = symbols
|
505
522
|
data_list = [[name, open, pre_close, price, high, low, bid, ask, volume, amount,
|
506
523
|
b1_v, b1_p, b2_v, b2_p, b3_v, b3_p, b4_v, b4_p, b5_v, b5_p,
|
507
524
|
a1_v, a1_p, a2_v, a2_p, a3_v, a3_p, a4_v, a4_p, a5_v, a5_p, date, times, code]]
|
508
525
|
df = pd.DataFrame(data_list, columns=rtqv.LIVE_DATA_COLS)
|
509
526
|
df["DATE"] = df["DATE"].apply(format_date_str)
|
527
|
+
df["ASK"] = df["ASK"].apply(format_dc_str)
|
528
|
+
df["OPEN"] = df["OPEN"].apply(format_dc_str)
|
529
|
+
df["HIGH"] = df["HIGH"].apply(format_dc_str)
|
530
|
+
df["LOW"] = df["LOW"].apply(format_dc_str)
|
531
|
+
df["PRE_CLOSE"] = df["PRE_CLOSE"].apply(format_dc_str)
|
532
|
+
df["BID"] = df["BID"].apply(format_dc_str)
|
533
|
+
df["A1_P"] = df["A1_P"].apply(format_dc_str)
|
534
|
+
df["A2_P"] = df["A2_P"].apply(format_dc_str)
|
535
|
+
df["A3_P"] = df["A3_P"].apply(format_dc_str)
|
536
|
+
df["A4_P"] = df["A4_P"].apply(format_dc_str)
|
537
|
+
df["A5_P"] = df["A5_P"].apply(format_dc_str)
|
538
|
+
df["PRICE"] = df["PRICE"].apply(format_dc_str)
|
539
|
+
df["B1_P"] = df["B1_P"].apply(format_dc_str)
|
540
|
+
df["B2_P"] = df["B2_P"].apply(format_dc_str)
|
541
|
+
df["B3_P"] = df["B3_P"].apply(format_dc_str)
|
542
|
+
df["B4_P"] = df["B4_P"].apply(format_dc_str)
|
543
|
+
df["B5_P"] = df["B5_P"].apply(format_dc_str)
|
510
544
|
new_order = rtqv.LIVE_DATA_COLS_REINDEX
|
511
545
|
df = df[new_order]
|
512
546
|
return df
|
513
547
|
|
514
548
|
|
549
|
+
def format_dc_str(x):
|
550
|
+
return x / 100 if x != "-" else ""
|
551
|
+
|
552
|
+
|
515
553
|
if __name__ == '__main__':
|
516
|
-
|
517
|
-
df = realtime_list(src="dc", page_count=1)
|
554
|
+
df = realtime_quote(ts_code="000688.SH,000010.SH,000012.SH,399005.SZ", src="dc")
|
555
|
+
# df = realtime_list(src="dc", page_count=1)
|
518
556
|
print(df)
|
@@ -16,7 +16,7 @@ test/test_realtime.py,sha256=YpEH3Ic3D-4dgL9BI9RbWNSD-ZM8KfuqtSxyBvexSRg,697
|
|
16
16
|
test/test_stk_mins.py,sha256=ctaoAkclIKxNQT6KYuXaB5HESpZSD29dn-KLbUT2rmo,53600
|
17
17
|
test/test_websocket.py,sha256=DgOEcX9vuYlPVfBi54AJZTh6k0eu9lG4qcOdJhGllNU,1079
|
18
18
|
test/trading_test.py,sha256=otXiHdU0ob441x7o1swadfSEuyPusT7oYU8SQeesSxE,1147
|
19
|
-
tushare/__init__.py,sha256=
|
19
|
+
tushare/__init__.py,sha256=Djsh8Mjh3nO8M8ay3OjJPgLT-L715dmNLGNAz1Tk3aE,4698
|
20
20
|
tushare/bond/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
21
|
tushare/bond/bonds.py,sha256=PJM0xDiWZDpOPwDtbEU9PdP0M_Gu0c599YuB1rbZ3r8,232
|
22
22
|
tushare/coins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -52,7 +52,7 @@ tushare/stock/news_vars.py,sha256=CQ18hvyoeScelBCqKgF_rgAufoEALAUT8y_LERvZKHk,45
|
|
52
52
|
tushare/stock/newsevent.py,sha256=STR7C8MjtZlaXTCG0QNaojBuK4-oxP_8hT7ZIvRpbiI,6944
|
53
53
|
tushare/stock/ref_vars.py,sha256=MIxor-2rISl65I32vUzC-z7ZC_QFzG4sxOKDyjLWuU4,4449
|
54
54
|
tushare/stock/reference.py,sha256=x_HZlrP58T-5OTZ7SLdf2Dh9THj1h7cT4wcIp42IHFI,38227
|
55
|
-
tushare/stock/rtq.py,sha256=
|
55
|
+
tushare/stock/rtq.py,sha256=yhgZJmr9kTVALabI0vYwgJPFA07TILg237Zw-rbVclg,18778
|
56
56
|
tushare/stock/rtq_vars.py,sha256=V6LeJkSP76z8veRfP_mGiQ63V5YBHoTMaqUA5hSBWh4,4200
|
57
57
|
tushare/stock/shibor.py,sha256=Fx9OUZ429kz6l7ZdaYSD6p_X79ud69PDM9EZogm8xCY,6422
|
58
58
|
tushare/stock/trading.py,sha256=3bvM4pexEYW-uGGEL7g6Vkte4sqGC1iYO6dC8mGLSdM,55619
|
@@ -84,8 +84,8 @@ tushare/util/verify_token.py,sha256=-GazF4ktzyJ7HbshHJibJeCgGhhxM31H18JmlOmEurc,
|
|
84
84
|
tushare/util/protobuf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
85
85
|
tushare/util/protobuf/funcs.py,sha256=UCdK8FxTyjPZsNzoEeXqYzqrQXUmRMvW5hua6GPA66A,779
|
86
86
|
tushare/util/protobuf/response_pb2.py,sha256=vJH9ONkDuJlg6y-q1PvuDZoviKrK7hzNtMieQHK45DI,11347
|
87
|
-
tushare-1.3.
|
88
|
-
tushare-1.3.
|
89
|
-
tushare-1.3.
|
90
|
-
tushare-1.3.
|
91
|
-
tushare-1.3.
|
87
|
+
tushare-1.3.2.dist-info/LICENSE,sha256=C2j55UI0Ul-1-wA1-rn7OaY6b3vGl4YukiyvYzHsU9o,1503
|
88
|
+
tushare-1.3.2.dist-info/METADATA,sha256=7n6IifCUfacT3ECyRxd603liVkznLTMievsDVHwMhFU,2322
|
89
|
+
tushare-1.3.2.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
90
|
+
tushare-1.3.2.dist-info/top_level.txt,sha256=0mgc2vMZJnuC65-OMhhOjT_zydkyE9Okxd1V3p2LeeA,13
|
91
|
+
tushare-1.3.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|