akshare 1.14.49__py3-none-any.whl → 1.17.99__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.
Files changed (343) hide show
  1. akshare/__init__.py +595 -129
  2. akshare/air/air_hebei.py +77 -54
  3. akshare/air/air_zhenqi.py +0 -4
  4. akshare/air/cons.py +1 -0
  5. akshare/air/crypto.js +1 -1
  6. akshare/air/outcrypto.js +1 -1
  7. akshare/article/cons.py +1 -0
  8. akshare/article/epu_index.py +4 -3
  9. akshare/article/ff_factor.py +19 -8
  10. akshare/article/fred_md.py +4 -1
  11. akshare/article/risk_rv.py +3 -8
  12. akshare/bank/bank_cbirc_2020.py +11 -11
  13. akshare/bank/cons.py +7 -6
  14. akshare/bond/bond_buy_back_em.py +228 -0
  15. akshare/bond/bond_cb_sina.py +1 -0
  16. akshare/bond/bond_cb_ths.py +17 -9
  17. akshare/bond/bond_cbond.py +19 -14
  18. akshare/bond/bond_china.py +38 -39
  19. akshare/bond/bond_china_money.py +1 -1
  20. akshare/bond/bond_convert.py +10 -9
  21. akshare/bond/bond_em.py +37 -17
  22. akshare/bond/bond_summary.py +38 -37
  23. akshare/bond/bond_zh_cov.py +31 -40
  24. akshare/bond/bond_zh_sina.py +4 -0
  25. akshare/bond/cons.py +14 -11
  26. akshare/cal/__init__.py +0 -0
  27. akshare/cal/rv.py +170 -0
  28. akshare/cost/cost_living.py +7 -5
  29. akshare/crypto/__init__.py +1 -1
  30. akshare/crypto/crypto_bitcoin_cme.py +9 -7
  31. akshare/crypto/crypto_hold.py +4 -2
  32. akshare/currency/currency.py +1 -0
  33. akshare/currency/currency_china_bank_sina.py +11 -6
  34. akshare/data/__init__.py +1 -1
  35. akshare/data/cninfo.js +1 -1
  36. akshare/datasets.py +10 -21
  37. akshare/economic/cons.py +10 -3
  38. akshare/economic/macro_australia.py +74 -69
  39. akshare/economic/macro_bank.py +95 -653
  40. akshare/economic/macro_canada.py +92 -81
  41. akshare/economic/macro_china.py +97 -105
  42. akshare/economic/macro_china_hk.py +0 -1
  43. akshare/economic/macro_euro.py +103 -56
  44. akshare/economic/macro_finance_ths.py +7 -5
  45. akshare/economic/macro_germany.py +1 -1
  46. akshare/economic/macro_japan.py +0 -1
  47. akshare/economic/macro_other.py +1 -6
  48. akshare/economic/macro_swiss.py +2 -3
  49. akshare/economic/macro_uk.py +1 -1
  50. akshare/economic/macro_usa.py +7 -9
  51. akshare/economic/marco_cnbs.py +11 -6
  52. akshare/energy/energy_carbon.py +0 -1
  53. akshare/energy/energy_oil_em.py +1 -2
  54. akshare/event/cons.py +1 -0
  55. akshare/exceptions.py +43 -0
  56. akshare/file_fold/calendar.json +245 -2
  57. akshare/forex/__init__.py +0 -0
  58. akshare/forex/cons.py +192 -0
  59. akshare/forex/forex_em.py +149 -0
  60. akshare/fortune/fortune_500.py +1 -37
  61. akshare/fortune/fortune_bloomberg.py +6 -3
  62. akshare/fortune/fortune_forbes_500.py +3 -6
  63. akshare/fortune/fortune_hurun.py +2 -1
  64. akshare/fortune/fortune_xincaifu_500.py +17 -14
  65. akshare/fund/fund_announcement_em.py +145 -0
  66. akshare/fund/fund_aum_em.py +49 -35
  67. akshare/fund/fund_em.py +251 -220
  68. akshare/fund/fund_etf_em.py +44 -35
  69. akshare/fund/fund_etf_sina.py +75 -27
  70. akshare/fund/fund_etf_ths.py +2 -0
  71. akshare/fund/fund_fee_em.py +172 -0
  72. akshare/fund/fund_fhsp_em.py +42 -32
  73. akshare/fund/fund_init_em.py +8 -5
  74. akshare/fund/fund_lof_em.py +12 -19
  75. akshare/fund/fund_manager.py +25 -11
  76. akshare/fund/fund_overview_em.py +42 -0
  77. akshare/fund/fund_portfolio_em.py +23 -21
  78. akshare/fund/fund_position_lg.py +19 -8
  79. akshare/fund/fund_rank_em.py +2 -5
  80. akshare/fund/fund_rating.py +33 -12
  81. akshare/fund/fund_scale_em.py +24 -13
  82. akshare/fund/fund_scale_sina.py +20 -10
  83. akshare/fund/fund_xq.py +3 -2
  84. akshare/futures/cons.py +135 -39
  85. akshare/futures/cot.py +55 -56
  86. akshare/futures/futures_basis.py +49 -11
  87. akshare/futures/futures_comex_em.py +1 -0
  88. akshare/futures/futures_comm_ctp.py +1 -1
  89. akshare/futures/futures_contract_detail.py +59 -9
  90. akshare/futures/futures_daily_bar.py +66 -59
  91. akshare/futures/futures_foreign.py +14 -8
  92. akshare/futures/futures_hf_em.py +215 -61
  93. akshare/futures/futures_hist_em.py +191 -0
  94. akshare/futures/futures_hq_sina.py +5 -3
  95. akshare/futures/futures_index_ccidx.py +24 -82
  96. akshare/futures/futures_inventory_99.py +70 -272
  97. akshare/futures/futures_inventory_em.py +14 -11
  98. akshare/futures/futures_news_shmet.py +2 -2
  99. akshare/futures/futures_roll_yield.py +11 -24
  100. akshare/futures/futures_rule.py +7 -3
  101. akshare/futures/futures_rule_em.py +38 -0
  102. akshare/futures/futures_settlement_price_sgx.py +21 -6
  103. akshare/futures/futures_stock_js.py +0 -1
  104. akshare/futures/futures_to_spot.py +5 -6
  105. akshare/futures/futures_warehouse_receipt.py +48 -47
  106. akshare/futures/futures_zh_sina.py +3 -3
  107. akshare/futures/receipt.py +298 -165
  108. akshare/futures/requests_fun.py +16 -3
  109. akshare/futures/symbol_var.py +32 -13
  110. akshare/futures_derivative/cons.py +100 -103
  111. akshare/futures_derivative/futures_contract_info_cffex.py +55 -39
  112. akshare/futures_derivative/futures_contract_info_czce.py +2 -0
  113. akshare/futures_derivative/futures_contract_info_dce.py +43 -17
  114. akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
  115. akshare/futures_derivative/futures_contract_info_ine.py +43 -34
  116. akshare/futures_derivative/futures_contract_info_shfe.py +3 -4
  117. akshare/futures_derivative/futures_cot_sina.py +8 -6
  118. akshare/futures_derivative/futures_index_sina.py +25 -13
  119. akshare/fx/cons.py +12 -7
  120. akshare/fx/fx_c_swap_cm.py +62 -0
  121. akshare/fx/fx_quote.py +3 -2
  122. akshare/fx/fx_quote_baidu.py +2 -1
  123. akshare/hf/__init__.py +1 -1
  124. akshare/hf/hf_sp500.py +8 -7
  125. akshare/index/cons.py +132 -28
  126. akshare/index/index_cni.py +7 -7
  127. akshare/index/index_cons.py +2 -2
  128. akshare/index/index_csindex.py +68 -0
  129. akshare/index/index_cx.py +20 -20
  130. akshare/index/index_drewry.py +17 -16
  131. akshare/index/index_eri.py +1 -0
  132. akshare/index/index_global_em.py +167 -0
  133. akshare/index/index_global_sina.py +82 -0
  134. akshare/index/index_kq_fz.py +17 -14
  135. akshare/index/index_kq_ss.py +1 -0
  136. akshare/index/index_option_qvix.py +351 -16
  137. akshare/index/index_research_sw.py +21 -21
  138. akshare/index/index_spot.py +9 -5
  139. akshare/index/index_stock_hk.py +5 -9
  140. akshare/index/index_stock_zh.py +111 -24
  141. akshare/index/index_stock_zh_csindex.py +3 -367
  142. akshare/index/index_sugar.py +18 -4
  143. akshare/index/index_sw.py +10 -2
  144. akshare/index/index_yw.py +53 -75
  145. akshare/index/index_zh_em.py +15 -82
  146. akshare/interest_rate/interbank_rate_em.py +0 -1
  147. akshare/movie/jm.js +0 -1
  148. akshare/news/__init__.py +1 -1
  149. akshare/news/news_baidu.py +395 -222
  150. akshare/news/news_stock.py +49 -16
  151. akshare/option/cons.py +2 -2
  152. akshare/option/option_commodity.py +341 -220
  153. akshare/option/option_commodity_sina.py +22 -26
  154. akshare/option/option_contract_info_ctp.py +63 -0
  155. akshare/option/option_current_sse.py +61 -0
  156. akshare/option/option_current_szse.py +84 -0
  157. akshare/option/option_czce.py +37 -9
  158. akshare/option/option_daily_stats_sse_szse.py +0 -1
  159. akshare/option/option_em.py +4 -8
  160. akshare/option/option_finance.py +60 -12
  161. akshare/option/option_finance_sina.py +7 -7
  162. akshare/option/option_lhb_em.py +0 -1
  163. akshare/option/option_margin.py +62 -0
  164. akshare/option/option_premium_analysis_em.py +58 -53
  165. akshare/option/option_risk_analysis_em.py +11 -8
  166. akshare/option/option_risk_indicator_sse.py +3 -4
  167. akshare/option/option_value_analysis_em.py +62 -55
  168. akshare/other/__init__.py +1 -1
  169. akshare/pro/__init__.py +0 -1
  170. akshare/pro/client.py +6 -4
  171. akshare/pro/cons.py +3 -2
  172. akshare/pro/data_pro.py +6 -5
  173. akshare/qdii/__init__.py +0 -0
  174. akshare/qdii/qdii_jsl.py +233 -0
  175. akshare/qhkc/__init__.py +1 -6
  176. akshare/qhkc/qhkc_api.py +64 -22
  177. akshare/qhkc_web/__init__.py +1 -6
  178. akshare/qhkc_web/qhkc_fund.py +10 -6
  179. akshare/qhkc_web/qhkc_index.py +28 -14
  180. akshare/qhkc_web/qhkc_tool.py +62 -59
  181. akshare/rate/__init__.py +1 -1
  182. akshare/rate/repo_rate.py +36 -32
  183. akshare/reits/__init__.py +1 -1
  184. akshare/reits/reits_basic.py +149 -13
  185. akshare/request.py +117 -0
  186. akshare/spot/__init__.py +1 -1
  187. akshare/spot/spot_hog_soozhu.py +165 -3
  188. akshare/spot/spot_sge.py +70 -9
  189. akshare/stock/cons.py +60 -23
  190. akshare/stock/stock_allotment_cninfo.py +8 -8
  191. akshare/stock/stock_ask_bid_em.py +3 -78
  192. akshare/stock/stock_board_concept_em.py +160 -35
  193. akshare/stock/stock_board_industry_em.py +163 -70
  194. akshare/stock/stock_dividend_cninfo.py +31 -17
  195. akshare/stock/stock_dzjy_em.py +347 -260
  196. akshare/stock/stock_fund_em.py +72 -64
  197. akshare/stock/stock_fund_hold.py +1 -2
  198. akshare/stock/stock_gsrl_em.py +1 -0
  199. akshare/stock/stock_hk_comparison_em.py +175 -0
  200. akshare/stock/stock_hk_famous.py +4 -5
  201. akshare/stock/stock_hk_fhpx_ths.py +2 -1
  202. akshare/stock/stock_hk_hot_rank_em.py +1 -0
  203. akshare/stock/stock_hk_sina.py +84 -36
  204. akshare/stock/stock_hold_control_cninfo.py +82 -0
  205. akshare/stock/stock_hold_control_em.py +0 -2
  206. akshare/stock/stock_hot_rank_em.py +4 -1
  207. akshare/stock/stock_hot_search_baidu.py +32 -19
  208. akshare/stock/stock_hot_up_em.py +4 -1
  209. akshare/stock/stock_hsgt_em.py +155 -0
  210. akshare/stock/stock_industry.py +1 -0
  211. akshare/stock/stock_industry_cninfo.py +1 -2
  212. akshare/stock/stock_info.py +6 -4
  213. akshare/stock/stock_info_em.py +17 -11
  214. akshare/stock/stock_intraday_em.py +4 -78
  215. akshare/stock/stock_intraday_sina.py +2 -2
  216. akshare/stock/stock_news_cx.py +39 -0
  217. akshare/stock/stock_profile_cninfo.py +7 -7
  218. akshare/stock/stock_profile_em.py +302 -0
  219. akshare/stock/stock_rank_forecast.py +6 -5
  220. akshare/stock/stock_repurchase_em.py +7 -2
  221. akshare/stock/stock_share_changes_cninfo.py +7 -5
  222. akshare/stock/stock_share_hold.py +24 -20
  223. akshare/stock/stock_stop.py +6 -6
  224. akshare/stock/stock_summary.py +153 -417
  225. akshare/stock/stock_us_famous.py +5 -6
  226. akshare/stock/stock_us_js.py +3 -2
  227. akshare/stock/stock_us_pink.py +38 -27
  228. akshare/stock/stock_us_sina.py +7 -3
  229. akshare/stock/stock_weibo_nlp.py +18 -20
  230. akshare/stock/stock_xq.py +24 -22
  231. akshare/stock/stock_zh_a_sina.py +8 -5
  232. akshare/stock/stock_zh_a_special.py +240 -243
  233. akshare/stock/stock_zh_a_tick_tx.py +11 -3
  234. akshare/stock/stock_zh_ah_tx.py +23 -26
  235. akshare/stock/stock_zh_b_sina.py +2 -2
  236. akshare/stock/stock_zh_comparison_em.py +250 -0
  237. akshare/stock/stock_zh_kcb_sina.py +67 -64
  238. akshare/stock_a/__init__.py +0 -0
  239. akshare/stock_a/stock_board_concept_name_em.py +170 -0
  240. akshare/stock_a/stock_individual_fund_flow_rank.py +258 -0
  241. akshare/stock_a/stock_zh_a_spot.py +212 -0
  242. akshare/stock_feature/cons.py +1 -0
  243. akshare/stock_feature/stock_a_indicator.py +9 -54
  244. akshare/stock_feature/stock_a_pe_and_pb.py +23 -5
  245. akshare/stock_feature/stock_account_em.py +0 -1
  246. akshare/stock_feature/stock_all_pb.py +2 -1
  247. akshare/stock_feature/stock_analyst_em.py +36 -30
  248. akshare/stock_feature/stock_board_concept_ths.py +328 -0
  249. akshare/stock_feature/stock_board_industry_ths.py +57 -2
  250. akshare/stock_feature/stock_buffett_index_lg.py +10 -8
  251. akshare/stock_feature/stock_classify_sina.py +3 -6
  252. akshare/stock_feature/stock_comment_em.py +81 -144
  253. akshare/stock_feature/stock_congestion_lg.py +2 -1
  254. akshare/stock_feature/stock_cyq_em.py +5 -11
  255. akshare/stock_feature/stock_disclosure_cninfo.py +6 -6
  256. akshare/stock_feature/stock_dxsyl_em.py +121 -74
  257. akshare/stock_feature/stock_ebs_lg.py +5 -4
  258. akshare/stock_feature/stock_esg_sina.py +29 -7
  259. akshare/stock_feature/stock_fhps_em.py +2 -1
  260. akshare/stock_feature/stock_fhps_ths.py +15 -7
  261. akshare/stock_feature/stock_fund_flow.py +30 -22
  262. akshare/stock_feature/stock_gddh_em.py +19 -11
  263. akshare/stock_feature/stock_gdfx_em.py +226 -113
  264. akshare/stock_feature/stock_gdhs.py +75 -50
  265. akshare/stock_feature/stock_gdzjc_em.py +21 -10
  266. akshare/stock_feature/stock_gpzy_em.py +78 -46
  267. akshare/stock_feature/stock_gxl_lg.py +3 -2
  268. akshare/stock_feature/stock_hist_em.py +137 -234
  269. akshare/stock_feature/stock_hist_tx.py +13 -10
  270. akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
  271. akshare/stock_feature/stock_hot_xq.py +4 -6
  272. akshare/stock_feature/stock_hsgt_em.py +269 -97
  273. akshare/stock_feature/stock_hsgt_exchange_rate.py +115 -87
  274. akshare/stock_feature/stock_hsgt_min_em.py +13 -16
  275. akshare/stock_feature/stock_info.py +7 -80
  276. akshare/stock_feature/stock_inner_trade_xq.py +38 -31
  277. akshare/stock_feature/stock_jgdy_em.py +43 -40
  278. akshare/stock_feature/stock_lhb_em.py +119 -3
  279. akshare/stock_feature/stock_margin_em.py +0 -1
  280. akshare/stock_feature/stock_margin_sse.py +0 -2
  281. akshare/stock_feature/stock_pankou_em.py +71 -35
  282. akshare/stock_feature/stock_qsjy_em.py +13 -4
  283. akshare/stock_feature/stock_report_em.py +151 -7
  284. akshare/stock_feature/stock_research_report_em.py +55 -20
  285. akshare/stock_feature/stock_sy_em.py +20 -15
  286. akshare/stock_feature/stock_technology_ths.py +122 -77
  287. akshare/stock_feature/stock_tfp_em.py +2 -1
  288. akshare/stock_feature/stock_three_report_em.py +21 -5
  289. akshare/stock_feature/stock_ttm_lyr.py +18 -9
  290. akshare/stock_feature/stock_value_em.py +83 -0
  291. akshare/stock_feature/stock_yjbb_em.py +58 -32
  292. akshare/stock_feature/stock_yjyg_cninfo.py +6 -2
  293. akshare/stock_feature/stock_yjyg_em.py +1 -1
  294. akshare/stock_feature/stock_yzxdr_em.py +24 -22
  295. akshare/stock_feature/stock_zdhtmx_em.py +20 -6
  296. akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
  297. akshare/stock_feature/stock_ztb_em.py +39 -24
  298. akshare/stock_fundamental/__init__.py +1 -1
  299. akshare/stock_fundamental/stock_basic_info_xq.py +119 -0
  300. akshare/stock_fundamental/{stock_finance_hk.py → stock_finance_hk_em.py} +23 -16
  301. akshare/stock_fundamental/{stock_finance.py → stock_finance_sina.py} +60 -7
  302. akshare/stock_fundamental/stock_finance_ths.py +524 -57
  303. akshare/stock_fundamental/stock_finance_us_em.py +268 -0
  304. akshare/stock_fundamental/stock_gbjg_em.py +80 -0
  305. akshare/stock_fundamental/stock_hold.py +26 -17
  306. akshare/stock_fundamental/stock_ipo_declare.py +1 -0
  307. akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
  308. akshare/stock_fundamental/stock_kcb_sse.py +26 -25
  309. akshare/stock_fundamental/stock_notice.py +12 -3
  310. akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
  311. akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
  312. akshare/stock_fundamental/stock_profit_forecast_ths.py +86 -35
  313. akshare/stock_fundamental/stock_recommend.py +20 -4
  314. akshare/stock_fundamental/stock_zygc.py +5 -62
  315. akshare/utils/context.py +43 -0
  316. akshare/utils/demjson.py +2009 -1338
  317. akshare/utils/func.py +49 -2
  318. akshare/utils/multi_decrypt.py +53 -0
  319. akshare/utils/token_process.py +6 -5
  320. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/METADATA +54 -80
  321. akshare-1.17.99.dist-info/RECORD +409 -0
  322. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
  323. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info/licenses}/LICENSE +1 -1
  324. tests/test_func.py +3 -5
  325. akshare/bond/bond_futures.py +0 -50
  326. akshare/bond/bond_investing.py +0 -139
  327. akshare/crypto/crypto_hist_investing.py +0 -249
  328. akshare/fund/fund_announcement.py +0 -56
  329. akshare/futures/futures_international.py +0 -170
  330. akshare/futures/futures_news_baidu.py +0 -54
  331. akshare/futures/inventory_data.py +0 -100
  332. akshare/futures_derivative/futures_index_price_nh.py +0 -61
  333. akshare/futures_derivative/futures_index_return_nh.py +0 -47
  334. akshare/futures_derivative/futures_index_volatility_nh.py +0 -53
  335. akshare/futures_derivative/futures_other_index_nh.py +0 -145
  336. akshare/index/index_fear_greed_funddb.py +0 -78
  337. akshare/index/index_investing.py +0 -232
  338. akshare/sport/__init__.py +0 -6
  339. akshare/sport/sport_olympic.py +0 -27
  340. akshare/stock_feature/stock_wencai.py +0 -104
  341. akshare/stock_fundamental/stock_mda_ym.py +0 -40
  342. akshare-1.14.49.dist-info/RECORD +0 -387
  343. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/top_level.txt +0 -0
akshare/utils/func.py CHANGED
@@ -1,12 +1,59 @@
1
1
  # !/usr/bin/env python
2
2
  """
3
- Date: 2024/4/7 15:30
3
+ Date: 2025/3/10 18:00
4
4
  Desc: 通用帮助函数
5
5
  """
6
6
 
7
- from typing import List
7
+ import math
8
+ from typing import List, Dict
8
9
 
9
10
  import pandas as pd
11
+ import requests
12
+
13
+ from akshare.utils.tqdm import get_tqdm
14
+
15
+
16
+ def fetch_paginated_data(url: str, base_params: Dict, timeout: int = 15):
17
+ """
18
+ 东方财富-分页获取数据并合并结果
19
+ https://quote.eastmoney.com/f1.html?newcode=0.000001
20
+ :param url: 股票代码
21
+ :type url: str
22
+ :param base_params: 基础请求参数
23
+ :type base_params: dict
24
+ :param timeout: 请求超时时间
25
+ :type timeout: str
26
+ :return: 合并后的数据
27
+ :rtype: pandas.DataFrame
28
+ """
29
+ # 复制参数以避免修改原始参数
30
+ params = base_params.copy()
31
+ # 获取第一页数据,用于确定分页信息
32
+ r = requests.get(url, params=params, timeout=timeout)
33
+ data_json = r.json()
34
+ # 计算分页信息
35
+ per_page_num = len(data_json["data"]["diff"])
36
+ total_page = math.ceil(data_json["data"]["total"] / per_page_num)
37
+ # 存储所有页面数据
38
+ temp_list = []
39
+ # 添加第一页数据
40
+ temp_list.append(pd.DataFrame(data_json["data"]["diff"]))
41
+ # 获取进度条
42
+ tqdm = get_tqdm()
43
+ # 获取剩余页面数据
44
+ for page in tqdm(range(2, total_page + 1), leave=False):
45
+ params.update({"pn": page})
46
+ r = requests.get(url, params=params, timeout=timeout)
47
+ data_json = r.json()
48
+ inner_temp_df = pd.DataFrame(data_json["data"]["diff"])
49
+ temp_list.append(inner_temp_df)
50
+ # 合并所有数据
51
+ temp_df = pd.concat(temp_list, ignore_index=True)
52
+ temp_df["f3"] = pd.to_numeric(temp_df["f3"], errors="coerce")
53
+ temp_df.sort_values(by=["f3"], ascending=False, inplace=True, ignore_index=True)
54
+ temp_df.reset_index(inplace=True)
55
+ temp_df["index"] = temp_df["index"].astype(int) + 1
56
+ return temp_df
10
57
 
11
58
 
12
59
  def set_df_columns(df: pd.DataFrame, cols: List[str]) -> pd.DataFrame:
@@ -0,0 +1,53 @@
1
+ """
2
+ 利用多进行执行 js 代码方案
3
+
4
+ 1. 未能解决 gevent 调用问题
5
+ 2. 导致 js 代码执行缓慢
6
+ 3. 该方案废弃,这里仅作参考
7
+
8
+ 同时发现 gevent 里面无法调用异步的接口
9
+ """
10
+
11
+ import concurrent.futures
12
+
13
+
14
+ # 定义在模块级别的函数
15
+ def js_executor_function(js_code_str, method, args):
16
+ """在新进程中执行 JavaScript 代码的函数"""
17
+ from py_mini_racer import MiniRacer
18
+
19
+ js_code = MiniRacer()
20
+ js_code.eval(js_code_str)
21
+
22
+ if method == "call":
23
+ fn_name = args[0]
24
+ fn_args = args[1:]
25
+ return js_code.call(fn_name, *fn_args)
26
+ elif method == "eval":
27
+ return js_code.eval(args[0])
28
+ else:
29
+ raise ValueError(f"不支持的方法: {method}")
30
+
31
+
32
+ def execute_js_in_executor(js_code_str, method, *args, timeout=30):
33
+ """
34
+ 使用 ProcessPoolExecutor 在独立进程中执行 JavaScript
35
+
36
+ 参数:
37
+ js_code_str: JavaScript 代码字符串
38
+ method: 'call' 或 'eval'
39
+ args: 如果 method 是 'call',第一个参数是函数名,后续是函数参数
40
+ 如果 method 是 'eval',只需提供一个参数:要评估的代码
41
+ timeout: 超时时间(秒)
42
+
43
+ 返回:
44
+ 执行结果
45
+ """
46
+ with concurrent.futures.ProcessPoolExecutor(max_workers=1) as executor:
47
+ future = executor.submit(js_executor_function, js_code_str, method, args)
48
+ try:
49
+ return future.result(timeout=timeout)
50
+ except concurrent.futures.TimeoutError:
51
+ # 清理资源并抛出超时异常
52
+ executor.shutdown(wait=False)
53
+ raise TimeoutError("JavaScript 执行超时")
@@ -4,6 +4,7 @@
4
4
  Date: 2020/2/13 21:22
5
5
  Desc: 存储和读取 Token 文件
6
6
  """
7
+
7
8
  import os
8
9
 
9
10
  import pandas as pd
@@ -12,22 +13,22 @@ from akshare.pro import cons
12
13
 
13
14
 
14
15
  def set_token(token):
15
- df = pd.DataFrame([token], columns=['token'])
16
- user_home = os.path.expanduser('~')
16
+ df = pd.DataFrame([token], columns=["token"])
17
+ user_home = os.path.expanduser("~")
17
18
  fp = os.path.join(user_home, cons.TOKEN_F_P)
18
19
  df.to_csv(fp, index=False)
19
20
 
20
21
 
21
22
  def get_token():
22
- user_home = os.path.expanduser('~')
23
+ user_home = os.path.expanduser("~")
23
24
  fp = os.path.join(user_home, cons.TOKEN_F_P)
24
25
  if os.path.exists(fp):
25
26
  df = pd.read_csv(fp)
26
- return str(df.iloc[0]['token'])
27
+ return str(df.iloc[0]["token"])
27
28
  else:
28
29
  print(cons.TOKEN_ERR_MSG)
29
30
  return
30
31
 
31
32
 
32
- if __name__ == '__main__':
33
+ if __name__ == "__main__":
33
34
  pass
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: akshare
3
- Version: 1.14.49
3
+ Version: 1.17.99
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
@@ -12,44 +12,61 @@ Classifier: Programming Language :: Python :: 3.9
12
12
  Classifier: Programming Language :: Python :: 3.10
13
13
  Classifier: Programming Language :: Python :: 3.11
14
14
  Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
15
17
  Classifier: License :: OSI Approved :: MIT License
16
18
  Classifier: Operating System :: OS Independent
17
19
  Requires-Python: >=3.8
18
20
  Description-Content-Type: text/markdown
19
21
  License-File: LICENSE
20
- Requires-Dist: beautifulsoup4 >=4.9.1
21
- Requires-Dist: lxml >=4.2.1
22
- Requires-Dist: pandas >=0.25
23
- Requires-Dist: requests >=2.22.0
24
- Requires-Dist: html5lib >=1.0.1
25
- Requires-Dist: xlrd >=1.2.0
26
- Requires-Dist: urllib3 >=1.25.8
27
- Requires-Dist: tqdm >=4.43.0
28
- Requires-Dist: openpyxl >=3.0.3
29
- Requires-Dist: jsonpath >=0.82
30
- Requires-Dist: tabulate >=0.8.6
31
- Requires-Dist: decorator >=4.4.2
32
- Requires-Dist: mini-racer >=0.12.4
22
+ Requires-Dist: aiohttp>=3.11.13
23
+ Requires-Dist: beautifulsoup4>=4.9.1
24
+ Requires-Dist: lxml>=4.2.1
25
+ Requires-Dist: pandas>=0.25
26
+ Requires-Dist: requests>=2.22.0
27
+ Requires-Dist: curl_cffi>=0.13.0
28
+ Requires-Dist: html5lib>=1.0.1
29
+ Requires-Dist: xlrd>=1.2.0
30
+ Requires-Dist: urllib3>=1.25.8
31
+ Requires-Dist: tqdm>=4.43.0
32
+ Requires-Dist: openpyxl>=3.0.3
33
+ Requires-Dist: jsonpath>=0.82
34
+ Requires-Dist: tabulate>=0.8.6
35
+ Requires-Dist: decorator>=4.4.2
36
+ Requires-Dist: nest_asyncio>=1.6.0
37
+ Requires-Dist: mini-racer>=0.12.4; platform_system != "Linux"
38
+ Requires-Dist: py-mini-racer>=0.6.0; platform_system == "Linux"
39
+ Requires-Dist: akracer>=0.0.13; platform_system == "Linux"
33
40
  Provides-Extra: full
34
- Requires-Dist: akqmt ; extra == 'full'
41
+ Requires-Dist: akqmt; extra == "full"
35
42
  Provides-Extra: qmt
36
- Requires-Dist: akqmt ; extra == 'qmt'
37
-
38
- **欢迎加入专注于财经数据和量化投资的知识社区,请点击[了解更多](https://akshare.akfamily.xyz/learn.html)**
39
-
40
- **相关视频教程已经发布:《AKShare-初阶-使用教学》、《AKShare-初阶-实战应用》、《AKShare-源码解析》、《开源项目巡礼》**,详情请访问[课程](https://app3rqjh1z21630.h5.xiaoeknow.com)查看更多课程信息!
41
-
42
- **AKQuant 量化教程请访问:[利用 PyBroker 进行量化投资](https://akquant.akfamily.xyz/)**
43
-
44
- **本次发布 [AKTools](https://github.com/akfamily/aktools) 作为 AKShare 的 HTTP API 版本,
45
- 突破 Python 语言的限制,欢迎各位小伙伴试用并提出更好的意见或建议!
46
- 点击 [AKTools](https://github.com/akfamily/aktools) 查看使用指南。另外提供 [awesome-data](https://github.com/akfamily/awesome-data) 方便各位小伙伴查询各种数据源。**
43
+ Requires-Dist: akqmt; extra == "qmt"
44
+ Dynamic: author
45
+ Dynamic: author-email
46
+ Dynamic: classifier
47
+ Dynamic: description
48
+ Dynamic: description-content-type
49
+ Dynamic: home-page
50
+ Dynamic: keywords
51
+ Dynamic: license
52
+ Dynamic: license-file
53
+ Dynamic: provides-extra
54
+ Dynamic: requires-dist
55
+ Dynamic: requires-python
56
+ Dynamic: summary
57
+
58
+ **资源分享**:对于想了解更多财经数据与量化投研的小伙伴,推荐一个专注于财经数据和量化研究的知识社区。
59
+ 该社区提供相关文档和视频学习资源,汇集了各类财经数据源和量化投研工具的使用经验。
60
+ 有兴趣深入学习的朋友可点此[了解更多](https://t.zsxq.com/ZCxUG),也推荐大家关注微信公众号【数据科学实战】。
61
+
62
+ **工具推荐**:期魔方是一款本地化期货量化分析工具,适合数据分析爱好者使用。无需复杂部署,支持数据分析和机器学习功能,研究功能免费开放。
63
+ 如需了解更多信息可访问[期魔方](https://qmfquant.com/)。
47
64
 
48
65
  ![AKShare Logo](https://github.com/akfamily/akshare/blob/main/assets/images/akshare_logo.jpg)
49
66
 
50
67
  [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/akshare.svg)](https://pypi.org/project/akshare/)
51
68
  [![PyPI](https://img.shields.io/pypi/v/akshare.svg)](https://pypi.org/project/akshare/)
52
- [![Downloads](https://pepy.tech/badge/akshare)](https://pepy.tech/project/akshare)
69
+ [![PyPI Downloads](https://static.pepy.tech/personalized-badge/akshare?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/akshare)
53
70
  [![Documentation Status](https://readthedocs.org/projects/akshare/badge/?version=latest)](https://akshare.readthedocs.io/?badge=latest)
54
71
  [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
55
72
  [![akshare](https://img.shields.io/badge/Data%20Science-AKShare-green)](https://github.com/akfamily/akshare)
@@ -62,7 +79,7 @@ Requires-Dist: akqmt ; extra == 'qmt'
62
79
 
63
80
  ## Overview
64
81
 
65
- [AKShare](https://github.com/akfamily/akshare) requires Python(64 bit) 3.8 or higher and
82
+ [AKShare](https://github.com/akfamily/akshare) requires Python(64 bit) 3.9 or higher and
66
83
  aims to simplify the process of fetching financial data.
67
84
 
68
85
  **Write less, get more!**
@@ -159,21 +176,6 @@ Output:
159
176
 
160
177
  ![KLine](https://jfds-1252952517.cos.ap-chengdu.myqcloud.com/akshare/readme/home/AAPL_candle.png)
161
178
 
162
- ## Communication
163
-
164
- Welcome to join the **数据科学实战** knowledge planet to learn more about quantitative investment,
165
- please visit [数据科学实战](https://akshare.akfamily.xyz/learn.html) for more information:
166
-
167
- <div>
168
- <img alt="data science" src="https://jfds-1252952517.cos.ap-chengdu.myqcloud.com/akshare/readme/qrcode/data_scientist.png">
169
- </div>
170
-
171
- Pay attention to **数据科学实战** WeChat Official Accounts to get the [AKShare](https://github.com/akfamily/akshare) updated info:
172
-
173
- <div>
174
- <img alt="ds" src="https://github.com/akfamily/akshare/blob/main/assets/images/ds.png">
175
- </div>
176
-
177
179
  ## Features
178
180
 
179
181
  - **Easy of use**: Just one line code to fetch the data;
@@ -234,9 +236,9 @@ Please use this **bibtex** if you want to cite this repository in your publicati
234
236
 
235
237
  ```markdown
236
238
  @misc{akshare,
237
- author = {Albert King},
239
+ author = {Albert King and Yaojie Zhang},
238
240
  title = {AKShare},
239
- year = {2019},
241
+ year = {2022},
240
242
  publisher = {GitHub},
241
243
  journal = {GitHub repository},
242
244
  howpublished = {\url{https://github.com/akfamily/akshare}},
@@ -249,26 +251,22 @@ Special thanks [FuShare](https://github.com/LowinLi/fushare) for the opportunity
249
251
 
250
252
  Special thanks [TuShare](https://github.com/waditu/tushare) for the opportunity of learning from the project;
251
253
 
252
- Thanks for the data provided by [生意社网站](http://www.100ppi.com/);
254
+ Thanks for the data provided by [东方财富网站](http://data.eastmoney.com);
253
255
 
254
- Thanks for the data provided by [奇货可查网站](https://qhkch.com/);
256
+ Thanks for the data provided by [新浪财经网站](https://finance.sina.com.cn);
257
+
258
+ Thanks for the data provided by [金十数据网站](https://www.jin10.com/);
259
+
260
+ Thanks for the data provided by [生意社网站](http://www.100ppi.com/);
255
261
 
256
262
  Thanks for the data provided by [中国银行间市场交易商协会网站](http://www.nafmii.org.cn/);
257
263
 
258
264
  Thanks for the data provided by [99期货网站](http://www.99qh.com/);
259
265
 
260
- Thanks for the data provided by [英为财情网站](https://cn.investing.com/);
261
-
262
266
  Thanks for the data provided by [中国外汇交易中心暨全国银行间同业拆借中心网站](http://www.chinamoney.com.cn/chinese/);
263
267
 
264
- Thanks for the data provided by [金十数据网站](https://www.jin10.com/);
265
-
266
268
  Thanks for the data provided by [和讯财经网站](http://www.hexun.com/);
267
269
 
268
- Thanks for the data provided by [新浪财经网站](https://finance.sina.com.cn/);
269
-
270
- Thanks for the data provided by [Oxford-Man Institute 网站](https://realized.oxford-man.ox.ac.uk/);
271
-
272
270
  Thanks for the data provided by [DACHENG-XIU 网站](https://dachxiu.chicagobooth.edu/);
273
271
 
274
272
  Thanks for the data provided by [上海证券交易所网站](http://www.sse.com.cn/assortment/options/price/);
@@ -291,16 +289,8 @@ Thanks for the data provided by [Timeanddate 网站](https://www.timeanddate.com
291
289
 
292
290
  Thanks for the data provided by [河北省空气质量预报信息发布系统网站](http://110.249.223.67/publish/);
293
291
 
294
- Thanks for the data provided by [南华期货网站](http://www.nanhua.net/nhzc/varietytrend.html);
295
-
296
292
  Thanks for the data provided by [Economic Policy Uncertainty 网站](http://www.nanhua.net/nhzc/varietytrend.html);
297
293
 
298
- Thanks for the data provided by [微博指数网站](https://data.weibo.com/index/newindex);
299
-
300
- Thanks for the data provided by [百度指数网站](http://index.baidu.com/v2/main/index.html);
301
-
302
- Thanks for the data provided by [谷歌指数网站](https://trends.google.com/trends/?geo=US);
303
-
304
294
  Thanks for the data provided by [申万指数网站](http://www.swsindex.com/idx0120.aspx?columnid=8832);
305
295
 
306
296
  Thanks for the data provided by [真气网网站](https://www.zq12369.com/);
@@ -315,28 +305,12 @@ Thanks for the data provided by [北京市碳排放权电子交易平台网站](
315
305
 
316
306
  Thanks for the data provided by [国家金融与发展实验室网站](http://www.nifd.cn/);
317
307
 
318
- Thanks for the data provided by [IT桔子网站](https://www.itjuzi.com);
319
-
320
- Thanks for the data provided by [东方财富网站](http://data.eastmoney.com/jgdy/);
321
-
322
308
  Thanks for the data provided by [义乌小商品指数网站](http://www.ywindex.com/Home/Product/index/);
323
309
 
324
- Thanks for the data provided by [中国国家发展和改革委员会网站](http://jgjc.ndrc.gov.cn/dmzs.aspx?clmId=741);
325
-
326
310
  Thanks for the data provided by [百度迁徙网站](https://qianxi.baidu.com/?from=shoubai#city=0);
327
311
 
328
- Thanks for the data provided by [慈善中国网站](http://cishan.chinanpo.gov.cn/platform/login.html);
329
-
330
312
  Thanks for the data provided by [思知网站](https://www.ownthink.com/);
331
313
 
332
314
  Thanks for the data provided by [Currencyscoop 网站](https://currencyscoop.com/);
333
315
 
334
316
  Thanks for the data provided by [新加坡交易所网站](https://www.sgx.com/zh-hans/research-education/derivatives);
335
-
336
- Thanks for the tutorials provided by [微信公众号: Python大咖谈](https://upload-images.jianshu.io/upload_images/3240514-61004f2c71be4a0b.png).
337
-
338
- ## Backer and Sponsor
339
-
340
- <a href="https://www.jetbrains.com/?from=jindaxiang/akshare" target="_blank">
341
- <img alt="jetbrains" src="https://github.com/akfamily/akshare/blob/main/assets/images/jetbrains.svg" width="100px" height="100px">
342
- </a>