akshare 1.14.63__py3-none-any.whl → 1.14.65__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.

Potentially problematic release.


This version of akshare might be problematic. Click here for more details.

akshare/__init__.py CHANGED
@@ -2874,9 +2874,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
2874
2874
  1.14.61 fix: fix stock_fund_flow_individual interface
2875
2875
  1.14.62 fix: fix stock_zt_pool_em interface
2876
2876
  1.14.63 add: add spot_quotations_sge interface
2877
+ 1.14.64 fix: fix stock_board_industry_spot_em interface
2878
+ 1.14.65 fix: fix option_dce_daily interface
2877
2879
  """
2878
2880
 
2879
- __version__ = "1.14.63"
2881
+ __version__ = "1.14.65"
2880
2882
  __author__ = "AKFamily"
2881
2883
 
2882
2884
  import sys
@@ -605,12 +605,7 @@ def get_dce_daily(date: str = "20220308") -> pd.DataFrame:
605
605
  "variety",
606
606
  ]
607
607
  ]
608
- # TODO pandas 2.1.0 change
609
- try:
610
- data_df = data_df.map(lambda x: x.replace(",", ""))
611
- except: # noqa: E722
612
- data_df = data_df.applymap(lambda x: x.replace(",", ""))
613
-
608
+ data_df = data_df.map(lambda x: x.replace(",", ""))
614
609
  data_df = data_df.astype(
615
610
  {
616
611
  "open": "float",
@@ -690,7 +685,7 @@ if __name__ == "__main__":
690
685
  )
691
686
  print(get_futures_daily_df)
692
687
 
693
- get_dce_daily_df = get_dce_daily(date="20230810")
688
+ get_dce_daily_df = get_dce_daily(date="20140812")
694
689
  print(get_dce_daily_df)
695
690
 
696
691
  get_cffex_daily_df = get_cffex_daily(date="20230810")
@@ -40,7 +40,9 @@ def option_dce_daily(
40
40
  http://www.dce.com.cn/
41
41
  :param trade_date: 交易日
42
42
  :type trade_date: str
43
- :param symbol: choice of {"玉米期权", "豆粕期权", "铁矿石期权", "液化石油气期权", "聚乙烯期权", "聚氯乙烯期权", "聚丙烯期权", "棕榈油期权", "黄大豆1号期权", "黄大豆2号期权", "豆油期权", "乙二醇期权", "苯乙烯期权"}
43
+ :param symbol: choice of {"玉米期权", "豆粕期权", "铁矿石期权", "液化石油气期权", "聚乙烯期权", "聚氯乙烯期权",
44
+ "聚丙烯期权", "棕榈油期权", "黄大豆1号期权", "黄大豆2号期权", "豆油期权", "乙二醇期权", "苯乙烯期权",
45
+ "鸡蛋期权", "玉米淀粉期权", "生猪期权"}
44
46
  :type symbol: str
45
47
  :return: 日频行情数据
46
48
  :rtype: pandas.DataFrame
@@ -68,6 +70,8 @@ def option_dce_daily(
68
70
  another_df.reset_index(inplace=True, drop=True)
69
71
  another_df.columns = another_df.iloc[0]
70
72
  another_df = another_df.iloc[1:, :]
73
+ result_one_df = pd.DataFrame()
74
+ result_two_df = pd.DataFrame()
71
75
  if symbol == "豆粕期权":
72
76
  result_one_df, result_two_df = (
73
77
  table_df[table_df["商品名称"] == "豆粕"],
@@ -133,6 +137,21 @@ def option_dce_daily(
133
137
  table_df[table_df["商品名称"] == "苯乙烯"],
134
138
  another_df[another_df.iloc[:, 0].str.contains("eb")],
135
139
  )
140
+ elif symbol == "鸡蛋期权":
141
+ result_one_df, result_two_df = (
142
+ table_df[table_df["商品名称"] == "鸡蛋"],
143
+ another_df[another_df.iloc[:, 0].str.contains("eb")],
144
+ )
145
+ elif symbol == "玉米淀粉期权":
146
+ result_one_df, result_two_df = (
147
+ table_df[table_df["商品名称"] == "玉米淀粉"],
148
+ another_df[another_df.iloc[:, 0].str.contains("eb")],
149
+ )
150
+ elif symbol == "生猪期权":
151
+ result_one_df, result_two_df = (
152
+ table_df[table_df["商品名称"] == "生猪"],
153
+ another_df[another_df.iloc[:, 0].str.contains("eb")],
154
+ )
136
155
  result_one_df.reset_index(inplace=True, drop=True)
137
156
  result_two_df.reset_index(inplace=True, drop=True)
138
157
  result_two_df.columns.name = None
@@ -148,7 +167,8 @@ def option_czce_daily(
148
167
  :param trade_date: 交易日
149
168
  :type trade_date: str
150
169
  :param symbol: choice of {"白糖期权", "棉花期权", "甲醇期权", "PTA期权", "菜籽粕期权", "动力煤期权", "短纤期权",
151
- "菜籽油期权", "花生期权", "棉花期权", "短纤期权", "纯碱期权", "锰硅期权", "硅铁期权", "尿素期权", "对二甲苯期权", "烧碱期权", "玻璃期权"}
170
+ "菜籽油期权", "花生期权", "棉花期权", "短纤期权", "纯碱期权", "锰硅期权", "硅铁期权", "尿素期权", "对二甲苯期权",
171
+ "烧碱期权", "玻璃期权"}
152
172
  :type symbol: str
153
173
  :return: 日频行情数据
154
174
  :rtype: pandas.DataFrame
@@ -506,7 +526,7 @@ if __name__ == "__main__":
506
526
  print(option_czce_daily_df)
507
527
 
508
528
  option_dce_daily_one, option_dce_daily_two = option_dce_daily(
509
- symbol="黄大豆2号期权", trade_date="20220808"
529
+ symbol="鸡蛋期权", trade_date="20240823"
510
530
  )
511
531
  print(option_dce_daily_one)
512
532
  print(option_dce_daily_two)
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/3/21 22:27
4
+ Date: 2024/8/23 17:50
5
5
  Desc: 东方财富-沪深板块-行业板块
6
6
  https://quote.eastmoney.com/center/boardlist.html#industry_board
7
7
  """
8
+
8
9
  import re
9
10
 
10
11
  import pandas as pd
@@ -18,7 +19,7 @@ def stock_board_industry_name_em() -> pd.DataFrame:
18
19
  :return: 行业板块-名称
19
20
  :rtype: pandas.DataFrame
20
21
  """
21
- url = "http://17.push2.eastmoney.com/api/qt/clist/get"
22
+ url = "https://17.push2.eastmoney.com/api/qt/clist/get"
22
23
  params = {
23
24
  "pn": "1",
24
25
  "pz": "2000",
@@ -29,7 +30,9 @@ def stock_board_industry_name_em() -> pd.DataFrame:
29
30
  "invt": "2",
30
31
  "fid": "f3",
31
32
  "fs": "m:90 t:2 f:!50",
32
- "fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f26,f22,f33,f11,f62,f128,f136,f115,f152,f124,f107,f104,f105,f140,f141,f207,f208,f209,f222",
33
+ "fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,"
34
+ "f23,f24,f25,f26,f22,f33,f11,f62,f128,f136,f115,f152,f124,f107,f104,f105,"
35
+ "f140,f141,f207,f208,f209,f222",
33
36
  "_": "1626075887768",
34
37
  }
35
38
  r = requests.get(url, params=params)
@@ -104,7 +107,9 @@ def stock_board_industry_name_em() -> pd.DataFrame:
104
107
  temp_df["换手率"] = pd.to_numeric(temp_df["换手率"], errors="coerce")
105
108
  temp_df["上涨家数"] = pd.to_numeric(temp_df["上涨家数"], errors="coerce")
106
109
  temp_df["下跌家数"] = pd.to_numeric(temp_df["下跌家数"], errors="coerce")
107
- temp_df["领涨股票-涨跌幅"] = pd.to_numeric(temp_df["领涨股票-涨跌幅"], errors="coerce")
110
+ temp_df["领涨股票-涨跌幅"] = pd.to_numeric(
111
+ temp_df["领涨股票-涨跌幅"], errors="coerce"
112
+ )
108
113
  return temp_df
109
114
 
110
115
 
@@ -117,7 +122,7 @@ def stock_board_industry_spot_em(symbol: str = "小金属") -> pd.DataFrame:
117
122
  :return: 实时行情
118
123
  :rtype: pandas.DataFrame
119
124
  """
120
- url = "http://91.push2.eastmoney.com/api/qt/stock/get"
125
+ url = "https://91.push2.eastmoney.com/api/qt/stock/get"
121
126
  field_map = {
122
127
  "f43": "最新",
123
128
  "f44": "最高",
@@ -131,14 +136,14 @@ def stock_board_industry_spot_em(symbol: str = "小金属") -> pd.DataFrame:
131
136
  "f169": "涨跌额",
132
137
  }
133
138
 
134
- if re.match(r'^BK\d+', symbol):
139
+ if re.match(pattern=r"^BK\d+", string=symbol):
135
140
  em_code = symbol
136
141
  else:
137
142
  industry_listing = stock_board_industry_name_em()
138
- em_code = industry_listing.query('板块名称 == @symbol')["板块代码"].values[0]
143
+ em_code = industry_listing.query("板块名称 == @symbol")["板块代码"].values[0]
139
144
 
140
145
  params = dict(
141
- fields=','.join(field_map.keys()),
146
+ fields=",".join(field_map.keys()),
142
147
  mpi="1000",
143
148
  invt="2",
144
149
  fltt="1",
@@ -150,22 +155,22 @@ def stock_board_industry_spot_em(symbol: str = "小金属") -> pd.DataFrame:
150
155
  result = pd.DataFrame.from_dict(data_dict["data"], orient="index")
151
156
  result.rename(field_map, inplace=True)
152
157
  result.reset_index(inplace=True)
153
- result.columns = ['item', "value"]
154
- result['value'] = pd.to_numeric(result['value'], errors="coerce")
158
+ result.columns = ["item", "value"]
159
+ result["value"] = pd.to_numeric(result["value"], errors="coerce")
155
160
 
156
161
  # 各项转换成正常单位. 除了成交量与成交额, 原始数据中已是正常单位(元)
157
- result['value'] = result['value'] * 1e-2
162
+ result["value"] = result["value"] * 1e-2
158
163
  result.iloc[4, 1] = result.iloc[4, 1] * 1e2
159
164
  result.iloc[5, 1] = result.iloc[5, 1] * 1e2
160
165
  return result
161
166
 
162
167
 
163
168
  def stock_board_industry_hist_em(
164
- symbol: str = "小金属",
165
- start_date: str = "20211201",
166
- end_date: str = "20220401",
167
- period: str = "日k",
168
- adjust: str = "",
169
+ symbol: str = "小金属",
170
+ start_date: str = "20211201",
171
+ end_date: str = "20220401",
172
+ period: str = "日k",
173
+ adjust: str = "",
169
174
  ) -> pd.DataFrame:
170
175
  """
171
176
  东方财富网-沪深板块-行业板块-历史行情
@@ -184,14 +189,14 @@ def stock_board_industry_hist_em(
184
189
  :rtype: pandas.DataFrame
185
190
  """
186
191
  period_map = {
187
- "日k": '101',
188
- "周k": '102',
189
- "月k": '103',
192
+ "日k": "101",
193
+ "周k": "102",
194
+ "月k": "103",
190
195
  }
191
196
  stock_board_concept_em_map = stock_board_industry_name_em()
192
197
  stock_board_code = stock_board_concept_em_map[
193
198
  stock_board_concept_em_map["板块名称"] == symbol
194
- ]["板块代码"].values[0]
199
+ ]["板块代码"].values[0]
195
200
  adjust_map = {"": "0", "qfq": "1", "hfq": "2"}
196
201
  url = "http://7.push2his.eastmoney.com/api/qt/stock/kline/get"
197
202
  params = {
@@ -209,9 +214,7 @@ def stock_board_industry_hist_em(
209
214
  }
210
215
  r = requests.get(url, params=params)
211
216
  data_json = r.json()
212
- temp_df = pd.DataFrame(
213
- [item.split(",") for item in data_json["data"]["klines"]]
214
- )
217
+ temp_df = pd.DataFrame([item.split(",") for item in data_json["data"]["klines"]])
215
218
  temp_df.columns = [
216
219
  "日期",
217
220
  "开盘",
@@ -254,7 +257,7 @@ def stock_board_industry_hist_em(
254
257
 
255
258
 
256
259
  def stock_board_industry_hist_min_em(
257
- symbol: str = "小金属", period: str = "5"
260
+ symbol: str = "小金属", period: str = "5"
258
261
  ) -> pd.DataFrame:
259
262
  """
260
263
  东方财富网-沪深板块-行业板块-分时历史行情
@@ -269,15 +272,15 @@ def stock_board_industry_hist_min_em(
269
272
  stock_board_concept_em_map = stock_board_industry_name_em()
270
273
  stock_board_code = stock_board_concept_em_map[
271
274
  stock_board_concept_em_map["板块名称"] == symbol
272
- ]["板块代码"].values[0]
275
+ ]["板块代码"].values[0]
273
276
  if period == "1":
274
277
  url = "https://push2his.eastmoney.com/api/qt/stock/trends2/get"
275
278
  params = {
276
279
  "fields1": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",
277
280
  "fields2": "f51,f52,f53,f54,f55,f56,f57,f58",
278
- "ut": 'fa5fd1943c7b386f172d6893dbfba10b',
279
- "iscr": '0',
280
- "ndays": '1',
281
+ "ut": "fa5fd1943c7b386f172d6893dbfba10b",
282
+ "iscr": "0",
283
+ "ndays": "1",
281
284
  "secid": f"90.{stock_board_code}",
282
285
  "_": "1687852931312",
283
286
  }
@@ -378,7 +381,7 @@ def stock_board_industry_cons_em(symbol: str = "小金属") -> pd.DataFrame:
378
381
  stock_board_concept_em_map = stock_board_industry_name_em()
379
382
  stock_board_code = stock_board_concept_em_map[
380
383
  stock_board_concept_em_map["板块名称"] == symbol
381
- ]["板块代码"].values[0]
384
+ ]["板块代码"].values[0]
382
385
  url = "http://29.push2.eastmoney.com/api/qt/clist/get"
383
386
  params = {
384
387
  "pn": "1",
@@ -390,7 +393,8 @@ def stock_board_industry_cons_em(symbol: str = "小金属") -> pd.DataFrame:
390
393
  "invt": "2",
391
394
  "fid": "f3",
392
395
  "fs": f"b:{stock_board_code} f:!50",
393
- "fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152,f45",
396
+ "fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,"
397
+ "f23,f24,f25,f22,f11,f62,f128,f136,f115,f152,f45",
394
398
  "_": "1626081702127",
395
399
  }
396
400
  r = requests.get(url, params=params)
@@ -477,7 +481,11 @@ if __name__ == "__main__":
477
481
  print(stock_board_industry_spot_em_df)
478
482
 
479
483
  stock_board_industry_hist_em_df = stock_board_industry_hist_em(
480
- symbol="小金属", start_date="20211201", end_date="20240222", period="日k", adjust=""
484
+ symbol="小金属",
485
+ start_date="20211201",
486
+ end_date="20240222",
487
+ period="日k",
488
+ adjust="",
481
489
  )
482
490
  print(stock_board_industry_hist_em_df)
483
491
 
@@ -486,7 +494,5 @@ if __name__ == "__main__":
486
494
  )
487
495
  print(stock_board_industry_hist_min_em_df)
488
496
 
489
- stock_board_industry_cons_em_df = stock_board_industry_cons_em(
490
- symbol="小金属"
491
- )
497
+ stock_board_industry_cons_em_df = stock_board_industry_cons_em(symbol="小金属")
492
498
  print(stock_board_industry_cons_em_df)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: akshare
3
- Version: 1.14.63
3
+ Version: 1.14.65
4
4
  Summary: AKShare is an elegant and simple financial data interface library for Python, built for human beings!
5
5
  Home-page: https://github.com/akfamily/akshare
6
6
  Author: AKFamily
@@ -1,4 +1,4 @@
1
- akshare/__init__.py,sha256=CJdmywJ8pTFJlDkUKAiTGYYgjR827XXdayzoNxdKy94,180998
1
+ akshare/__init__.py,sha256=-hJ6YdUISPANmHfIPC0x-w1aQoTWDB7BciYS34h0B0M,181098
2
2
  akshare/datasets.py,sha256=oIu1zC7o_LMHY22lQmdM7vCnryHibKrJLBqJwQiitlI,1167
3
3
  akshare/air/__init__.py,sha256=RMTf1bT5EOE3ttWpn3hGu1LtUmsVxDoa0W7W0gXHOy8,81
4
4
  akshare/air/air_hebei.py,sha256=xIXNGLK7IGYqrkteM9fxnHAwWqk6PCQs6D9-ggZ7byY,4442
@@ -107,7 +107,7 @@ akshare/futures/futures_comex_em.py,sha256=V-mkKQkH5N8PyaZWKdyggb2lTnY8DDDxiUPt-
107
107
  akshare/futures/futures_comm_ctp.py,sha256=V8TEKO0R0i6LfE8DDFqrMA3JGwNlpmaQCvvMugKZ1I8,1004
108
108
  akshare/futures/futures_comm_qihuo.py,sha256=uQfabZ63qME8sTaxUbIUVQBVi8yTaPPDhD7voR9PEx0,10504
109
109
  akshare/futures/futures_contract_detail.py,sha256=auwzNdaoFi5hoJY6rNkO54v5FD2gmEkQu7B90yEDtkc,1175
110
- akshare/futures/futures_daily_bar.py,sha256=Zmabe58qHxF0gJ8CKAw9uuuUtxfYMhLNWSJioMGYK04,25363
110
+ akshare/futures/futures_daily_bar.py,sha256=mD7n1K0FSIwA6CREkIjkcPvLaGb1Q7uGc-qrb1hI5j4,25227
111
111
  akshare/futures/futures_foreign.py,sha256=oSIoAg5oy-CIlPWHkQffcvZGu02Y2GWOrt-6aPA53Xg,2059
112
112
  akshare/futures/futures_hf_em.py,sha256=OEUltaq1LKabl9eTQoNxswnl1BLKpB27eiIHwbu_Rh4,3178
113
113
  akshare/futures/futures_hq_sina.py,sha256=4qDv8U99Ic82QbFNvwsuaHZX2VPl8Ei-yNsEnRpaPZA,9582
@@ -194,7 +194,7 @@ akshare/nlp/nlp_interface.py,sha256=PyZjT3PkuTbloop-JwLwZ2kNi22zdO-r_pRUWQ5SmgM,
194
194
  akshare/option/__init__.py,sha256=RMTf1bT5EOE3ttWpn3hGu1LtUmsVxDoa0W7W0gXHOy8,81
195
195
  akshare/option/cons.py,sha256=zTRZ62RFwOcAKfmso-7nZJtT3a8Dt1nQbNnEjSqgjpI,4811
196
196
  akshare/option/option_comm_qihuo.py,sha256=kjbdp-94KJJJi1ex5U03abtlgviqwP0Aahb6FwddPkk,3128
197
- akshare/option/option_commodity.py,sha256=_SWFCP0EoKtwwF72WecK6YL-ogKnY7Yjnd2IwjA95Og,21261
197
+ akshare/option/option_commodity.py,sha256=D5n-tdNohA7OtgzwG09UI7LtWUkHSHHOOZujCi8BwOg,22038
198
198
  akshare/option/option_commodity_sina.py,sha256=r6qK_K7w3A6Uqp5ZtBb4pW7vH04oMyeCEZLLGqi0jpA,7776
199
199
  akshare/option/option_czce.py,sha256=L4i7TVKcOns5ZKoqq-mrSykdx3SGwu6OL4eI77-A_lc,1812
200
200
  akshare/option/option_daily_stats_sse_szse.py,sha256=Ip_vE81qbEGt4ocbtWfUT7XGu0HWU0zKkzauZeq9RJA,4962
@@ -234,7 +234,7 @@ akshare/stock/cons.py,sha256=0oyUW5Pu-iQ3qgh-TFemM_O5f1fAwVe-PsI4Qa8EYpQ,42956
234
234
  akshare/stock/stock_allotment_cninfo.py,sha256=qk--nWhskZWnUUOwBvfgiFJEOd1GqmQijzzVlORCG2I,6059
235
235
  akshare/stock/stock_ask_bid_em.py,sha256=ioVkmRMVs7A7Lj_PboxwIoZINNk73nAko80wIJX4RKU,5510
236
236
  akshare/stock/stock_board_concept_em.py,sha256=iajw06K04I-F9VGXbuJf5Vz_digDCgMi4J1vgzkmbFA,14039
237
- akshare/stock/stock_board_industry_em.py,sha256=ZyDnlwAFBEtQI2KEThqs7QG6Akl1DBbKFy7qB3tzqN0,16161
237
+ akshare/stock/stock_board_industry_em.py,sha256=AfRVUVZrgSJXaoKAK81Ga-_m3hfv8YZzczBnnBdFq-I,16195
238
238
  akshare/stock/stock_cg_equity_mortgage.py,sha256=Pui5aWKKPwGuKjF_GNpejDzsMGNPrxiaJviLz3x2e9I,3426
239
239
  akshare/stock/stock_cg_guarantee.py,sha256=ts7qcQhhyN1PHB7Q4XlMn38HhfVvubOvky9RZfmUP94,3844
240
240
  akshare/stock/stock_cg_lawsuit.py,sha256=6Y92pPw0JgyrInteqHuU07G1jwmdX2wjaDtrJN8y6Hg,4129
@@ -380,8 +380,8 @@ akshare/utils/token_process.py,sha256=K4rGXjh_tgugbRcyOK2h2x0jP3PT65IIK7nxhUKhOe
380
380
  akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
381
381
  tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
382
382
  tests/test_func.py,sha256=tfvy_YnYmDra2dkKZ5JvprU1gNW5X9T634PszdSdH1A,944
383
- akshare-1.14.63.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
384
- akshare-1.14.63.dist-info/METADATA,sha256=3xjOwl22QmMxtxdLNnS3R23J9zXmEy5qFzkGpDupjNw,13961
385
- akshare-1.14.63.dist-info/WHEEL,sha256=Mdi9PDNwEZptOjTlUcAth7XJDFtKrHYaQMPulZeBCiQ,91
386
- akshare-1.14.63.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
387
- akshare-1.14.63.dist-info/RECORD,,
383
+ akshare-1.14.65.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
384
+ akshare-1.14.65.dist-info/METADATA,sha256=K48tcTg49VogE_x7iNQLPrPf9WO-FK4FAZyWb8XrNrE,13961
385
+ akshare-1.14.65.dist-info/WHEEL,sha256=Mdi9PDNwEZptOjTlUcAth7XJDFtKrHYaQMPulZeBCiQ,91
386
+ akshare-1.14.65.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
387
+ akshare-1.14.65.dist-info/RECORD,,