akshare 1.16.57__py3-none-any.whl → 1.16.59__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.
akshare/__init__.py CHANGED
@@ -3066,9 +3066,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
3066
3066
  1.16.55 fix: fix stock_zh_a_spot_em interface
3067
3067
  1.16.56 fix: fix stock_zh_a_daily interface
3068
3068
  1.16.57 fix: fix stock_market_pe_lg interface
3069
+ 1.16.58 fix: fix stock_zh_a_spot interface
3070
+ 1.16.59 fix: fix option_czce_hist interface
3069
3071
  """
3070
3072
 
3071
- __version__ = "1.16.57"
3073
+ __version__ = "1.16.59"
3072
3074
  __author__ = "AKFamily"
3073
3075
 
3074
3076
  import sys
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2021/7/21 14:22
4
+ Date: 2025/3/22 16:30
5
5
  Desc: 郑州商品交易所-交易数据-历史行情下载-期权历史行情下载
6
6
  http://www.czce.com.cn/cn/jysj/lshqxz/H770319index_1.htm
7
7
  自 20200101 起,成交量、空盘量、成交额、行权量均为单边计算
@@ -12,7 +12,21 @@ http://www.czce.com.cn/cn/jysj/lshqxz/H770319index_1.htm
12
12
  "MA": "20191217"
13
13
  "RM": "20200116"
14
14
  "ZC": "20200630"
15
+ "OI": "20220826"
16
+ "PK": "20220826"
17
+ "PX": "20230915"
18
+ "SH": "20230915"
19
+ "SA": "20231020"
20
+ "PF": "20231020"
21
+ "SM": "20231020"
22
+ "SF": "20231020"
23
+ "UR": "20231020"
24
+ "AP": "20231020"
25
+ "CJ": "20240621"
26
+ "FG": "20240621"
27
+ "PR": "20241227"
15
28
  """
29
+
16
30
  from io import StringIO
17
31
  import warnings
18
32
 
@@ -24,7 +38,9 @@ def option_czce_hist(symbol: str = "SR", year: str = "2021") -> pd.DataFrame:
24
38
  """
25
39
  郑州商品交易所-交易数据-历史行情下载-期权历史行情下载
26
40
  http://www.czce.com.cn/cn/jysj/lshqxz/H770319index_1.htm
27
- :param symbol: choice of {"白糖": "SR", "棉花": "CF", "PTA": "TA", "甲醇": "MA", "菜籽粕": "RM", "动力煤": "ZC"}
41
+ :param symbol: choice of {"白糖": "SR", "棉花": "CF", "PTA": "TA", "甲醇": "MA", "菜籽粕": "RM",
42
+ "动力煤": "ZC", "菜籽油": "OI", "花生": "PK", "对二甲苯": "PX", "烧碱": "SH", "纯碱": "SA", "短纤": "PF",
43
+ "锰硅": "SM", "硅铁": "SF", "尿素": "UR", "苹果": "AP", "红枣": "CJ", "玻璃": "FG", "瓶片": "PR"}
28
44
  :type symbol: str
29
45
  :param year: 需要获取数据的年份, 注意品种的上市时间
30
46
  :type year: str
@@ -38,17 +54,29 @@ def option_czce_hist(symbol: str = "SR", year: str = "2021") -> pd.DataFrame:
38
54
  "MA": "2019",
39
55
  "RM": "2020",
40
56
  "ZC": "2020",
57
+ "OI": "2022",
58
+ "PK": "2022",
59
+ "PX": "2023",
60
+ "SH": "2023",
61
+ "SA": "2023",
62
+ "PF": "2023",
63
+ "SM": "2023",
64
+ "SF": "2023",
65
+ "UR": "2023",
66
+ "AP": "2023",
67
+ "CJ": "2024",
68
+ "FG": "2024",
69
+ "PR": "2024",
41
70
  }
42
71
  if int(symbol_year_dict[symbol]) > int(year):
43
72
  warnings.warn(f"{year} year, symbol {symbol} is not on trade")
44
- return None
45
- warnings.warn("正在下载中, 请稍等")
46
- url = f'http://www.czce.com.cn/cn/DFSStaticFiles/Option/2021/OptionDataAllHistory/{symbol}OPTIONS{year}.txt'
73
+ return pd.DataFrame()
74
+ url = f"http://www.czce.com.cn/cn/DFSStaticFiles/Option/{year}/OptionDataAllHistory/{symbol}OPTIONS{year}.txt"
47
75
  r = requests.get(url)
48
76
  option_df = pd.read_table(StringIO(r.text), skiprows=1, sep="|", low_memory=False)
49
77
  return option_df
50
78
 
51
79
 
52
80
  if __name__ == "__main__":
53
- option_czce_hist_df = option_czce_hist(symbol="ZC", year="2021")
81
+ option_czce_hist_df = option_czce_hist(symbol="RM", year="2025")
54
82
  print(option_czce_hist_df)
@@ -10,6 +10,7 @@ import json
10
10
  import re
11
11
 
12
12
  import pandas as pd
13
+ import py_mini_racer
13
14
  import requests
14
15
 
15
16
  from akshare.stock.cons import (
@@ -23,7 +24,6 @@ from akshare.stock.cons import (
23
24
  zh_sina_a_stock_amount_url,
24
25
  )
25
26
  from akshare.utils import demjson
26
- from akshare.utils.multi_decrypt import execute_js_in_executor
27
27
  from akshare.utils.tqdm import get_tqdm
28
28
 
29
29
 
@@ -175,15 +175,13 @@ def stock_zh_a_daily(
175
175
  return _fq_factor(adjust.split("-")[0])
176
176
 
177
177
  r = requests.get(zh_sina_a_stock_hist_url.format(symbol))
178
- # 使用示例
179
- dict_list = execute_js_in_executor(
180
- hk_js_decode, # JS 代码
181
- "call", # 方法类型
182
- "d", # 函数名
183
- r.text.split("=")[1].split(";")[0].replace('"', ""), # 函数参数
184
- )
178
+ js_code = py_mini_racer.MiniRacer()
179
+ js_code.eval(hk_js_decode)
180
+ dict_list = js_code.call(
181
+ "d", r.text.split("=")[1].split(";")[0].replace('"', "")
182
+ ) # 执行js解密代码
185
183
  data_df = pd.DataFrame(dict_list)
186
- data_df.index = pd.to_datetime(data_df["date"], errors="coerce").dt.date
184
+ data_df.index = pd.to_datetime(data_df["date"]).dt.date
187
185
  del data_df["date"]
188
186
  try:
189
187
  del data_df["prevclose"]
@@ -346,13 +344,12 @@ def stock_zh_a_cdr_daily(
346
344
  :return: specific data
347
345
  :rtype: pandas.DataFrame
348
346
  """
349
- r = requests.get(zh_sina_a_stock_hist_url.format(symbol))
350
- dict_list = execute_js_in_executor(
351
- hk_js_decode, # JS 代码
352
- "call", # 方法类型
353
- "d", # 函数名
354
- r.text.split("=")[1].split(";")[0].replace('"', ""), # 函数参数
355
- )
347
+ res = requests.get(zh_sina_a_stock_hist_url.format(symbol))
348
+ js_code = py_mini_racer.MiniRacer()
349
+ js_code.eval(hk_js_decode)
350
+ dict_list = js_code.call(
351
+ "d", res.text.split("=")[1].split(";")[0].replace('"', "")
352
+ ) # 执行js解密代码
356
353
  data_df = pd.DataFrame(dict_list)
357
354
  data_df.index = pd.to_datetime(data_df["date"])
358
355
  del data_df["date"]
@@ -397,10 +394,7 @@ def stock_zh_a_minute(
397
394
  data_json = json.loads(data_text.split("=(")[1].split(");")[0])
398
395
  temp_df = pd.DataFrame(data_json).iloc[:, :6]
399
396
  except: # noqa: E722
400
- url = (
401
- f"https://quotes.sina.cn/cn/api/jsonp_v2.php/var%20_{symbol}_{period}_1658852984203="
402
- f"/CN_MarketDataService.getKLineData"
403
- )
397
+ url = f"https://quotes.sina.cn/cn/api/jsonp_v2.php/var%20_{symbol}_{period}_1658852984203=/CN_MarketDataService.getKLineData"
404
398
  params = {
405
399
  "symbol": symbol,
406
400
  "scale": period,
@@ -1,3 +1,13 @@
1
+ """
2
+ 利用多进行执行 js 代码方案
3
+
4
+ 1. 未能解决 gevent 调用问题
5
+ 2. 导致 js 代码执行缓慢
6
+ 3. 该方案废弃,这里仅作参考
7
+
8
+ 同时发现 gevent 里面无法调用异步的接口
9
+ """
10
+
1
11
  import concurrent.futures
2
12
 
3
13
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: akshare
3
- Version: 1.16.57
3
+ Version: 1.16.59
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=jzkG2puExLIua-1Q6qPR2FjRBi7wDNbs1PJd4PIH3NM,191765
1
+ akshare/__init__.py,sha256=HEbv8G2scqyBqUsgEWkVoDdfIwIZ0hYB_d3y8J_g3W8,191852
2
2
  akshare/datasets.py,sha256=rKuRNZrqi6IMsZ9nyvO3Rx02js0tH3zMLjz8HQNAoPQ,963
3
3
  akshare/exceptions.py,sha256=WEJjIhSmJ_xXNW6grwV4nufE_cfmmyuhmueVGiN1VAg,878
4
4
  akshare/request.py,sha256=HtFFf9MhfEibR-ETWe-1Tts6ELU4VKSqA-ghaXjegQM,4252
@@ -197,7 +197,7 @@ akshare/option/cons.py,sha256=zTRZ62RFwOcAKfmso-7nZJtT3a8Dt1nQbNnEjSqgjpI,4811
197
197
  akshare/option/option_comm_qihuo.py,sha256=kjbdp-94KJJJi1ex5U03abtlgviqwP0Aahb6FwddPkk,3128
198
198
  akshare/option/option_commodity.py,sha256=KQ690k83wKnjYN5Sf3meLx0pvEYAc5dE2tOkv3AK3dk,26758
199
199
  akshare/option/option_commodity_sina.py,sha256=r6qK_K7w3A6Uqp5ZtBb4pW7vH04oMyeCEZLLGqi0jpA,7776
200
- akshare/option/option_czce.py,sha256=L4i7TVKcOns5ZKoqq-mrSykdx3SGwu6OL4eI77-A_lc,1812
200
+ akshare/option/option_czce.py,sha256=TxmLZn6hxjZa8TyEpwhZazL2m5XbympRHaRjJw1q7lk,2509
201
201
  akshare/option/option_daily_stats_sse_szse.py,sha256=Ip_vE81qbEGt4ocbtWfUT7XGu0HWU0zKkzauZeq9RJA,4962
202
202
  akshare/option/option_em.py,sha256=SV_pBGDE4rer1wZ3wsBsfjtOIIudBAHPuk6_5kPAPBc,5860
203
203
  akshare/option/option_finance.py,sha256=7rnEeHo-7Sddrs36Q4c99CXL_9m8IJzw9S1Aqh3Bw90,12568
@@ -281,7 +281,7 @@ akshare/stock/stock_us_pink.py,sha256=BX7-tG4Zs0k2vSYGxHH0Yob-moD6AAu2a-ytZpxgIR
281
281
  akshare/stock/stock_us_sina.py,sha256=D4fhJgpmvnlVoeSV2wQQ7H6lig8h6vaJp71o88dZhDg,8200
282
282
  akshare/stock/stock_weibo_nlp.py,sha256=eM7ofsNSrKiYeS0g38Qj9CxT6dkJZrn_pmziIiTqp4U,3286
283
283
  akshare/stock/stock_xq.py,sha256=mPBVg2zA4XkTVAUXeZx8c3nzchm4D1AaMBbC-g87yLQ,4641
284
- akshare/stock/stock_zh_a_sina.py,sha256=VrtDVSp_7S82H2RB8CD7CkDt8tBZeLhVUfRteWkva-4,19061
284
+ akshare/stock/stock_zh_a_sina.py,sha256=-LbBNkqs2i_AAJ77PylfgXRK26pjResCHfM35_n-7G8,18907
285
285
  akshare/stock/stock_zh_a_special.py,sha256=VInvKbA6u_hJjjUKj7I5pG9rqt3kSZzJrZNfVs2Fqas,10169
286
286
  akshare/stock/stock_zh_a_tick_tx.py,sha256=TJUAWLKAeoLEaVVJQlj0t-1smZGoAO0X0rPsUPVhZZ4,2131
287
287
  akshare/stock/stock_zh_ah_tx.py,sha256=1DfvP1xF9G4jDnqlacZiYIMWZBujxW9Kycre3yr6MhM,9212
@@ -387,13 +387,13 @@ akshare/utils/cons.py,sha256=PFZndkG3lMW1Qhg-wqcZmSowFXwQUsYYCLZT4s1Xkwc,225
387
387
  akshare/utils/context.py,sha256=Hl4kPUzQ1CecRzu5JvTKpTpiMLfzAzYzG7F5hktlsCQ,934
388
388
  akshare/utils/demjson.py,sha256=xW2z0UGS2zzyH_dzhd765ZveuXRbfjkM7KBiI8H5fJA,241609
389
389
  akshare/utils/func.py,sha256=4cwmXFztU86yJNONJ40KJLvsIEQHBbct4iMm3zT2v30,2315
390
- akshare/utils/multi_decrypt.py,sha256=0GDWfnMTd71ncLR_YqmgAcP6vfOLRBNI_O8M1OeJUmI,1446
390
+ akshare/utils/multi_decrypt.py,sha256=aWoL2iEPeuXHJg8-n7OtMKixLnIhfzepACgxfrfmQB4,1657
391
391
  akshare/utils/token_process.py,sha256=K4rGXjh_tgugbRcyOK2h2x0jP3PT65IIK7nxhUKhOeQ,666
392
392
  akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
393
- akshare-1.16.57.dist-info/licenses/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
393
+ akshare-1.16.59.dist-info/licenses/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
394
394
  tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
395
395
  tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
396
- akshare-1.16.57.dist-info/METADATA,sha256=vyKla8HWa_fe6sj2EYRCkAiKkGV4gMQroJOUJTMcQ9I,13767
397
- akshare-1.16.57.dist-info/WHEEL,sha256=tTnHoFhvKQHCh4jz3yCn0WPTYIy7wXx3CJtJ7SJGV7c,91
398
- akshare-1.16.57.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
399
- akshare-1.16.57.dist-info/RECORD,,
396
+ akshare-1.16.59.dist-info/METADATA,sha256=xHAVn1deyr5CGklutnkGXcrEpQL4mZICtpHUqnO_NeA,13767
397
+ akshare-1.16.59.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
398
+ akshare-1.16.59.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
399
+ akshare-1.16.59.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (77.0.1)
2
+ Generator: setuptools (77.0.3)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5