akshare 1.13.46__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 (388) hide show
  1. akshare/__init__.py +757 -161
  2. akshare/air/air_hebei.py +79 -53
  3. akshare/air/air_zhenqi.py +3 -7
  4. akshare/air/cons.py +1 -0
  5. akshare/air/crypto.js +1 -1
  6. akshare/air/outcrypto.js +1 -1
  7. akshare/air/sunrise_tad.py +32 -17
  8. akshare/article/cons.py +1 -0
  9. akshare/article/epu_index.py +4 -3
  10. akshare/article/ff_factor.py +19 -8
  11. akshare/article/fred_md.py +4 -1
  12. akshare/article/risk_rv.py +3 -8
  13. akshare/bank/bank_cbirc_2020.py +11 -11
  14. akshare/bank/cons.py +7 -6
  15. akshare/bond/bond_buy_back_em.py +228 -0
  16. akshare/bond/bond_cb_sina.py +1 -0
  17. akshare/bond/bond_cb_ths.py +17 -9
  18. akshare/bond/bond_cbond.py +19 -14
  19. akshare/bond/bond_china.py +38 -39
  20. akshare/bond/bond_china_money.py +75 -48
  21. akshare/bond/bond_convert.py +10 -9
  22. akshare/bond/bond_em.py +37 -17
  23. akshare/bond/bond_info_cm.py +28 -8
  24. akshare/bond/bond_issue_cninfo.py +73 -30
  25. akshare/bond/bond_summary.py +38 -37
  26. akshare/bond/bond_zh_cov.py +31 -40
  27. akshare/bond/bond_zh_sina.py +61 -51
  28. akshare/bond/cons.py +14 -11
  29. akshare/cal/__init__.py +0 -0
  30. akshare/cal/rv.py +170 -0
  31. akshare/cost/cost_living.py +7 -5
  32. akshare/crypto/__init__.py +1 -1
  33. akshare/crypto/crypto_bitcoin_cme.py +9 -7
  34. akshare/crypto/crypto_hold.py +4 -2
  35. akshare/currency/currency.py +1 -0
  36. akshare/currency/currency_china_bank_sina.py +11 -6
  37. akshare/currency/currency_safe.py +7 -6
  38. akshare/data/__init__.py +1 -1
  39. akshare/data/cninfo.js +1 -1
  40. akshare/datasets.py +10 -21
  41. akshare/economic/cons.py +10 -3
  42. akshare/economic/macro_australia.py +74 -69
  43. akshare/economic/macro_bank.py +95 -653
  44. akshare/economic/macro_canada.py +92 -81
  45. akshare/economic/macro_china.py +163 -117
  46. akshare/economic/macro_china_hk.py +0 -1
  47. akshare/economic/macro_china_nbs.py +24 -7
  48. akshare/economic/macro_euro.py +103 -56
  49. akshare/economic/macro_finance_ths.py +135 -0
  50. akshare/economic/macro_germany.py +1 -1
  51. akshare/economic/macro_info_ws.py +100 -0
  52. akshare/economic/macro_japan.py +0 -1
  53. akshare/economic/macro_other.py +1 -6
  54. akshare/economic/macro_swiss.py +2 -3
  55. akshare/economic/macro_uk.py +1 -1
  56. akshare/economic/macro_usa.py +7 -9
  57. akshare/economic/marco_cnbs.py +11 -6
  58. akshare/energy/energy_carbon.py +94 -126
  59. akshare/energy/energy_oil_em.py +1 -2
  60. akshare/event/cons.py +1 -0
  61. akshare/event/migration.py +3 -2
  62. akshare/exceptions.py +43 -0
  63. akshare/file_fold/calendar.json +245 -2
  64. akshare/forex/__init__.py +0 -0
  65. akshare/forex/cons.py +192 -0
  66. akshare/forex/forex_em.py +149 -0
  67. akshare/fortune/fortune_500.py +15 -48
  68. akshare/fortune/fortune_bloomberg.py +6 -3
  69. akshare/fortune/fortune_forbes_500.py +3 -6
  70. akshare/fortune/fortune_hurun.py +2 -1
  71. akshare/fortune/fortune_xincaifu_500.py +17 -14
  72. akshare/fund/fund_amac.py +38 -15
  73. akshare/fund/fund_announcement_em.py +145 -0
  74. akshare/fund/fund_aum_em.py +49 -35
  75. akshare/fund/fund_em.py +251 -220
  76. akshare/fund/fund_etf_em.py +44 -35
  77. akshare/fund/fund_etf_sina.py +76 -27
  78. akshare/fund/fund_etf_ths.py +95 -0
  79. akshare/fund/fund_fee_em.py +172 -0
  80. akshare/fund/fund_fhsp_em.py +42 -32
  81. akshare/fund/fund_init_em.py +8 -5
  82. akshare/fund/fund_lof_em.py +12 -19
  83. akshare/fund/fund_manager.py +25 -11
  84. akshare/fund/fund_overview_em.py +42 -0
  85. akshare/fund/fund_portfolio_em.py +78 -66
  86. akshare/fund/fund_position_lg.py +19 -8
  87. akshare/fund/fund_rank_em.py +90 -84
  88. akshare/fund/fund_rating.py +33 -12
  89. akshare/fund/fund_report_cninfo.py +63 -48
  90. akshare/fund/fund_scale_em.py +24 -13
  91. akshare/fund/fund_scale_sina.py +20 -10
  92. akshare/fund/fund_xq.py +3 -2
  93. akshare/futures/cons.py +141 -46
  94. akshare/futures/cot.py +89 -88
  95. akshare/futures/futures_basis.py +99 -33
  96. akshare/futures/futures_comex_em.py +1 -0
  97. akshare/futures/futures_comm_ctp.py +13 -2
  98. akshare/futures/futures_contract_detail.py +59 -9
  99. akshare/futures/futures_daily_bar.py +75 -62
  100. akshare/futures/futures_foreign.py +14 -8
  101. akshare/futures/futures_hf_em.py +215 -61
  102. akshare/futures/futures_hist_em.py +191 -0
  103. akshare/futures/futures_hq_sina.py +79 -61
  104. akshare/futures/futures_index_ccidx.py +24 -82
  105. akshare/futures/futures_inventory_99.py +70 -272
  106. akshare/futures/futures_inventory_em.py +14 -11
  107. akshare/futures/futures_news_shmet.py +2 -2
  108. akshare/futures/futures_roll_yield.py +11 -24
  109. akshare/futures/futures_rule.py +7 -3
  110. akshare/futures/futures_rule_em.py +38 -0
  111. akshare/futures/futures_settlement_price_sgx.py +21 -6
  112. akshare/futures/futures_stock_js.py +1 -2
  113. akshare/futures/futures_to_spot.py +43 -39
  114. akshare/futures/futures_warehouse_receipt.py +53 -48
  115. akshare/futures/futures_zh_sina.py +4 -4
  116. akshare/futures/receipt.py +298 -165
  117. akshare/futures/requests_fun.py +16 -3
  118. akshare/futures/symbol_var.py +32 -13
  119. akshare/futures_derivative/cons.py +100 -103
  120. akshare/futures_derivative/futures_contract_info_cffex.py +55 -39
  121. akshare/futures_derivative/futures_contract_info_czce.py +2 -0
  122. akshare/futures_derivative/futures_contract_info_dce.py +43 -17
  123. akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
  124. akshare/futures_derivative/futures_contract_info_ine.py +43 -34
  125. akshare/futures_derivative/futures_contract_info_shfe.py +7 -8
  126. akshare/futures_derivative/futures_cot_sina.py +28 -19
  127. akshare/futures_derivative/futures_index_sina.py +25 -13
  128. akshare/fx/cons.py +12 -7
  129. akshare/fx/currency_investing.py +19 -285
  130. akshare/fx/fx_c_swap_cm.py +62 -0
  131. akshare/fx/fx_quote.py +3 -2
  132. akshare/fx/fx_quote_baidu.py +2 -1
  133. akshare/hf/__init__.py +1 -1
  134. akshare/hf/hf_sp500.py +8 -7
  135. akshare/index/cons.py +132 -28
  136. akshare/index/index_cflp.py +29 -26
  137. akshare/index/index_cni.py +89 -91
  138. akshare/index/index_cons.py +26 -10
  139. akshare/index/index_csindex.py +68 -0
  140. akshare/index/index_cx.py +263 -62
  141. akshare/index/index_drewry.py +17 -16
  142. akshare/index/index_eri.py +1 -0
  143. akshare/index/index_global_em.py +167 -0
  144. akshare/index/index_global_sina.py +82 -0
  145. akshare/index/index_kq_fz.py +17 -14
  146. akshare/index/index_kq_ss.py +1 -0
  147. akshare/index/index_option_qvix.py +351 -16
  148. akshare/index/index_research_sw.py +38 -38
  149. akshare/index/index_spot.py +9 -5
  150. akshare/index/index_stock_hk.py +6 -10
  151. akshare/index/index_stock_us_sina.py +1 -1
  152. akshare/index/index_stock_zh.py +193 -101
  153. akshare/index/index_stock_zh_csindex.py +15 -369
  154. akshare/index/index_sugar.py +18 -4
  155. akshare/index/index_sw.py +62 -34
  156. akshare/index/index_yw.py +53 -75
  157. akshare/index/index_zh_em.py +15 -82
  158. akshare/interest_rate/interbank_rate_em.py +14 -10
  159. akshare/movie/artist_yien.py +32 -5
  160. akshare/movie/jm.js +0 -1
  161. akshare/movie/movie_yien.py +92 -18
  162. akshare/movie/video_yien.py +28 -5
  163. akshare/news/__init__.py +1 -1
  164. akshare/news/news_baidu.py +395 -220
  165. akshare/news/news_cctv.py +38 -38
  166. akshare/news/news_stock.py +49 -13
  167. akshare/nlp/nlp_interface.py +7 -8
  168. akshare/option/cons.py +12 -12
  169. akshare/option/option_comm_qihuo.py +86 -0
  170. akshare/option/option_commodity.py +355 -211
  171. akshare/option/option_commodity_sina.py +22 -26
  172. akshare/option/option_contract_info_ctp.py +63 -0
  173. akshare/option/option_current_sse.py +61 -0
  174. akshare/option/option_current_szse.py +84 -0
  175. akshare/option/option_czce.py +37 -9
  176. akshare/option/option_daily_stats_sse_szse.py +145 -0
  177. akshare/option/option_em.py +4 -8
  178. akshare/option/option_finance.py +60 -12
  179. akshare/option/option_finance_sina.py +28 -26
  180. akshare/option/option_lhb_em.py +62 -57
  181. akshare/option/option_margin.py +62 -0
  182. akshare/option/option_premium_analysis_em.py +58 -53
  183. akshare/option/option_risk_analysis_em.py +11 -8
  184. akshare/option/option_risk_indicator_sse.py +18 -16
  185. akshare/option/option_value_analysis_em.py +62 -55
  186. akshare/other/__init__.py +1 -1
  187. akshare/other/other_car_cpca.py +20 -20
  188. akshare/pro/__init__.py +0 -1
  189. akshare/pro/client.py +6 -4
  190. akshare/pro/cons.py +3 -2
  191. akshare/pro/data_pro.py +6 -5
  192. akshare/qdii/__init__.py +0 -0
  193. akshare/qdii/qdii_jsl.py +233 -0
  194. akshare/qhkc/__init__.py +1 -6
  195. akshare/qhkc/qhkc_api.py +64 -22
  196. akshare/qhkc_web/__init__.py +1 -6
  197. akshare/qhkc_web/qhkc_fund.py +10 -6
  198. akshare/qhkc_web/qhkc_index.py +28 -14
  199. akshare/qhkc_web/qhkc_tool.py +62 -59
  200. akshare/rate/__init__.py +1 -1
  201. akshare/rate/repo_rate.py +36 -32
  202. akshare/reits/__init__.py +1 -1
  203. akshare/reits/reits_basic.py +149 -13
  204. akshare/request.py +117 -0
  205. akshare/spot/__init__.py +1 -1
  206. akshare/spot/spot_hog_soozhu.py +232 -0
  207. akshare/spot/spot_price_qh.py +121 -0
  208. akshare/spot/spot_sge.py +70 -9
  209. akshare/stock/cons.py +60 -23
  210. akshare/stock/stock_allotment_cninfo.py +10 -9
  211. akshare/stock/stock_ask_bid_em.py +3 -78
  212. akshare/stock/stock_board_concept_em.py +160 -35
  213. akshare/stock/stock_board_industry_em.py +163 -70
  214. akshare/stock/stock_cg_equity_mortgage.py +15 -11
  215. akshare/stock/stock_cg_guarantee.py +41 -51
  216. akshare/stock/stock_cg_lawsuit.py +36 -35
  217. akshare/stock/stock_dividend_cninfo.py +36 -16
  218. akshare/stock/stock_dzjy_em.py +347 -260
  219. akshare/stock/stock_fund_em.py +73 -64
  220. akshare/stock/stock_fund_hold.py +1 -2
  221. akshare/stock/stock_gsrl_em.py +1 -0
  222. akshare/stock/stock_hk_comparison_em.py +175 -0
  223. akshare/stock/stock_hk_famous.py +107 -0
  224. akshare/stock/stock_hk_fhpx_ths.py +2 -1
  225. akshare/stock/stock_hk_hot_rank_em.py +1 -0
  226. akshare/stock/stock_hk_sina.py +91 -42
  227. akshare/stock/stock_hold_control_cninfo.py +100 -15
  228. akshare/stock/stock_hold_control_em.py +4 -5
  229. akshare/stock/stock_hold_num_cninfo.py +18 -12
  230. akshare/stock/stock_hot_rank_em.py +4 -1
  231. akshare/stock/stock_hot_search_baidu.py +32 -19
  232. akshare/stock/stock_hot_up_em.py +4 -1
  233. akshare/stock/stock_hsgt_em.py +155 -0
  234. akshare/stock/stock_industry.py +1 -0
  235. akshare/stock/stock_industry_cninfo.py +25 -20
  236. akshare/stock/stock_industry_pe_cninfo.py +45 -31
  237. akshare/stock/stock_industry_sw.py +5 -9
  238. akshare/stock/stock_info.py +31 -19
  239. akshare/stock/stock_info_em.py +17 -11
  240. akshare/stock/stock_intraday_em.py +9 -80
  241. akshare/stock/stock_intraday_sina.py +2 -2
  242. akshare/stock/stock_ipo_summary_cninfo.py +25 -10
  243. akshare/stock/stock_new_cninfo.py +32 -19
  244. akshare/stock/stock_news_cx.py +39 -0
  245. akshare/stock/stock_profile_cninfo.py +9 -8
  246. akshare/stock/stock_profile_em.py +302 -0
  247. akshare/stock/stock_rank_forecast.py +8 -6
  248. akshare/stock/stock_repurchase_em.py +7 -2
  249. akshare/stock/stock_share_changes_cninfo.py +18 -14
  250. akshare/stock/stock_share_hold.py +24 -20
  251. akshare/stock/stock_stop.py +6 -6
  252. akshare/stock/stock_summary.py +153 -417
  253. akshare/stock/stock_us_famous.py +19 -11
  254. akshare/stock/stock_us_js.py +3 -2
  255. akshare/stock/stock_us_pink.py +38 -27
  256. akshare/stock/stock_us_sina.py +15 -12
  257. akshare/stock/stock_weibo_nlp.py +18 -20
  258. akshare/stock/stock_xq.py +36 -9
  259. akshare/stock/stock_zh_a_sina.py +58 -80
  260. akshare/stock/stock_zh_a_special.py +240 -243
  261. akshare/stock/stock_zh_a_tick_tx.py +11 -3
  262. akshare/stock/stock_zh_ah_tx.py +23 -26
  263. akshare/stock/stock_zh_b_sina.py +32 -55
  264. akshare/stock/stock_zh_comparison_em.py +250 -0
  265. akshare/stock/stock_zh_kcb_report.py +11 -9
  266. akshare/stock/stock_zh_kcb_sina.py +67 -64
  267. akshare/stock_a/__init__.py +0 -0
  268. akshare/stock_a/stock_board_concept_name_em.py +170 -0
  269. akshare/stock_a/stock_individual_fund_flow_rank.py +258 -0
  270. akshare/stock_a/stock_zh_a_spot.py +212 -0
  271. akshare/stock_feature/cons.py +1 -0
  272. akshare/stock_feature/stock_a_below_net_asset_statistics.py +5 -2
  273. akshare/stock_feature/stock_a_high_low.py +5 -2
  274. akshare/stock_feature/stock_a_indicator.py +15 -57
  275. akshare/stock_feature/stock_a_pe_and_pb.py +39 -9
  276. akshare/stock_feature/stock_account_em.py +0 -1
  277. akshare/stock_feature/stock_all_pb.py +2 -1
  278. akshare/stock_feature/stock_analyst_em.py +36 -30
  279. akshare/stock_feature/stock_board_concept_ths.py +144 -252
  280. akshare/stock_feature/stock_board_industry_ths.py +137 -401
  281. akshare/stock_feature/stock_buffett_index_lg.py +10 -8
  282. akshare/stock_feature/stock_classify_sina.py +3 -6
  283. akshare/stock_feature/stock_comment_em.py +81 -144
  284. akshare/stock_feature/stock_concept_futu.py +183 -0
  285. akshare/stock_feature/stock_congestion_lg.py +2 -1
  286. akshare/stock_feature/stock_cyq_em.py +5 -11
  287. akshare/stock_feature/stock_disclosure_cninfo.py +20 -10
  288. akshare/stock_feature/stock_dxsyl_em.py +121 -74
  289. akshare/stock_feature/stock_ebs_lg.py +5 -4
  290. akshare/stock_feature/stock_esg_sina.py +33 -15
  291. akshare/stock_feature/stock_fhps_em.py +62 -26
  292. akshare/stock_feature/stock_fhps_ths.py +34 -7
  293. akshare/stock_feature/stock_fund_flow.py +38 -25
  294. akshare/stock_feature/stock_gddh_em.py +19 -11
  295. akshare/stock_feature/stock_gdfx_em.py +226 -113
  296. akshare/stock_feature/stock_gdhs.py +75 -50
  297. akshare/stock_feature/stock_gdzjc_em.py +21 -10
  298. akshare/stock_feature/stock_gpzy_em.py +78 -46
  299. akshare/stock_feature/stock_gxl_lg.py +3 -2
  300. akshare/stock_feature/stock_hist_em.py +158 -237
  301. akshare/stock_feature/stock_hist_tx.py +13 -10
  302. akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
  303. akshare/stock_feature/stock_hot_xq.py +4 -6
  304. akshare/stock_feature/stock_hsgt_em.py +269 -97
  305. akshare/stock_feature/stock_hsgt_exchange_rate.py +115 -87
  306. akshare/stock_feature/stock_hsgt_min_em.py +13 -16
  307. akshare/stock_feature/stock_info.py +8 -81
  308. akshare/stock_feature/stock_inner_trade_xq.py +38 -31
  309. akshare/stock_feature/stock_irm_cninfo.py +32 -9
  310. akshare/stock_feature/stock_jgdy_em.py +43 -40
  311. akshare/stock_feature/stock_lh_yybpm.py +36 -37
  312. akshare/stock_feature/stock_lhb_em.py +165 -35
  313. akshare/stock_feature/stock_lhb_sina.py +93 -46
  314. akshare/stock_feature/stock_margin_em.py +101 -0
  315. akshare/stock_feature/{stock_sse_margin.py → stock_margin_sse.py} +21 -17
  316. akshare/stock_feature/{stock_szse_margin.py → stock_margin_szse.py} +7 -7
  317. akshare/stock_feature/stock_market_legu.py +4 -2
  318. akshare/stock_feature/stock_pankou_em.py +71 -35
  319. akshare/stock_feature/stock_qsjy_em.py +13 -4
  320. akshare/stock_feature/stock_report_em.py +152 -8
  321. akshare/stock_feature/stock_research_report_em.py +55 -20
  322. akshare/stock_feature/stock_sns_sseinfo.py +15 -12
  323. akshare/stock_feature/stock_sy_em.py +20 -15
  324. akshare/stock_feature/stock_technology_ths.py +152 -120
  325. akshare/stock_feature/stock_tfp_em.py +37 -14
  326. akshare/stock_feature/stock_three_report_em.py +120 -78
  327. akshare/stock_feature/stock_ttm_lyr.py +18 -9
  328. akshare/stock_feature/stock_value_em.py +83 -0
  329. akshare/stock_feature/stock_yjbb_em.py +58 -32
  330. akshare/stock_feature/stock_yjyg_cninfo.py +6 -2
  331. akshare/stock_feature/stock_yjyg_em.py +1 -1
  332. akshare/stock_feature/stock_yzxdr_em.py +24 -22
  333. akshare/stock_feature/stock_zdhtmx_em.py +20 -6
  334. akshare/stock_feature/stock_zh_valuation_baidu.py +3 -2
  335. akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
  336. akshare/stock_feature/stock_ztb_em.py +39 -24
  337. akshare/stock_fundamental/__init__.py +1 -1
  338. akshare/stock_fundamental/stock_basic_info_xq.py +119 -0
  339. akshare/stock_fundamental/{stock_finance_hk.py → stock_finance_hk_em.py} +23 -16
  340. akshare/stock_fundamental/{stock_finance.py → stock_finance_sina.py} +203 -59
  341. akshare/stock_fundamental/stock_finance_ths.py +524 -57
  342. akshare/stock_fundamental/stock_finance_us_em.py +268 -0
  343. akshare/stock_fundamental/stock_gbjg_em.py +80 -0
  344. akshare/stock_fundamental/stock_hold.py +26 -17
  345. akshare/stock_fundamental/stock_ipo_declare.py +1 -0
  346. akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
  347. akshare/stock_fundamental/stock_kcb_sse.py +26 -25
  348. akshare/stock_fundamental/stock_notice.py +41 -18
  349. akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
  350. akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
  351. akshare/stock_fundamental/stock_profit_forecast_ths.py +86 -35
  352. akshare/stock_fundamental/stock_recommend.py +20 -4
  353. akshare/stock_fundamental/stock_register_em.py +448 -0
  354. akshare/stock_fundamental/stock_zygc.py +5 -62
  355. akshare/tool/trade_date_hist.py +1 -1
  356. akshare/utils/context.py +43 -0
  357. akshare/utils/demjson.py +2009 -1338
  358. akshare/utils/func.py +49 -2
  359. akshare/utils/multi_decrypt.py +53 -0
  360. akshare/utils/token_process.py +6 -5
  361. akshare/utils/tqdm.py +13 -3
  362. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/METADATA +56 -86
  363. akshare-1.17.99.dist-info/RECORD +409 -0
  364. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
  365. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info/licenses}/LICENSE +1 -1
  366. tests/test_func.py +3 -5
  367. akshare/bond/bond_futures.py +0 -50
  368. akshare/bond/bond_investing.py +0 -139
  369. akshare/crypto/crypto_hist_investing.py +0 -249
  370. akshare/fortune/fortune_it_juzi.py +0 -123
  371. akshare/fund/fund_announcement.py +0 -56
  372. akshare/futures/futures_international.py +0 -170
  373. akshare/futures/futures_news_baidu.py +0 -54
  374. akshare/futures/inventory_data.py +0 -100
  375. akshare/futures_derivative/futures_index_price_nh.py +0 -61
  376. akshare/futures_derivative/futures_index_return_nh.py +0 -47
  377. akshare/futures_derivative/futures_index_volatility_nh.py +0 -51
  378. akshare/futures_derivative/futures_other_index_nh.py +0 -145
  379. akshare/index/index_fear_greed_funddb.py +0 -78
  380. akshare/index/index_investing.py +0 -232
  381. akshare/sport/__init__.py +0 -6
  382. akshare/sport/sport_olympic.py +0 -27
  383. akshare/sport/sport_olympic_winter.py +0 -39
  384. akshare/stock_feature/stock_wencai.py +0 -104
  385. akshare/stock_fundamental/stock_mda_ym.py +0 -40
  386. akshare/stock_fundamental/stock_register.py +0 -292
  387. akshare-1.13.46.dist-info/RECORD +0 -380
  388. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/top_level.txt +0 -0
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/3/10 17:00
4
+ Date: 2025/3/5 18:00
5
5
  Desc: 新浪财经-外盘期货
6
6
  https://finance.sina.com.cn/money/future/hf.html
7
7
  """
8
+
8
9
  import time
9
10
  from typing import Union, List
10
11
 
@@ -27,8 +28,8 @@ def _get_real_name_list() -> list:
27
28
  r.encoding = "gb2312"
28
29
  data_text = r.text
29
30
  need_text = data_text[
30
- data_text.find("var oHF_1 = ") + 12: data_text.find("var oHF_2") - 2
31
- ].replace("\n\t", "")
31
+ data_text.find("var oHF_1 = ") + 12 : data_text.find("var oHF_2") - 2
32
+ ].replace("\n\t", "")
32
33
  data_json = demjson.decode(need_text)
33
34
  name_list = [item[0].strip() for item in data_json.values()]
34
35
  return name_list
@@ -47,7 +48,7 @@ def futures_foreign_commodity_subscribe_exchange_symbol() -> list:
47
48
  data_text = r.text
48
49
  data_json = demjson.decode(
49
50
  data_text[
50
- data_text.find("var oHF_1 = ") + 12: data_text.find("var oHF_2 = ") - 2
51
+ data_text.find("var oHF_1 = ") + 12 : data_text.find("var oHF_2 = ") - 2
51
52
  ]
52
53
  )
53
54
  code_list = list(data_json.keys())
@@ -62,39 +63,40 @@ def futures_hq_subscribe_exchange_symbol() -> pd.DataFrame:
62
63
  :rtype: pandas.DataFrame
63
64
  """
64
65
  inner_dict = {
65
- "新交所 TSI CFR 中国铁矿石(62%铁粉)指数": 'FEF',
66
- "马棕油": 'FCPO',
67
- "日橡胶": 'RSS3',
68
- "CME比特币期货": 'BTC',
69
- "NYBOT-棉花": 'CT',
70
- "LME镍3个月": 'NID',
71
- "LME3个月": 'PBD',
72
- "LME3个月": 'SND',
73
- "LME3个月": 'ZSD',
74
- "LME3个月": 'AHD',
75
- "LME3个月": 'CAD',
76
- "CBOT-黄豆": 'S',
77
- "CBOT-小麦": 'W',
78
- "CBOT-玉米": 'C',
79
- "CBOT-黄豆油": 'BO',
80
- "CBOT-黄豆粉": 'SM',
81
- "日本橡胶": 'TRB',
82
- "COMEX铜": 'HG',
83
- "NYMEX天然气": 'NG',
84
- "NYMEX原油": 'CL',
85
- "COMEX白银": 'SI',
86
- "COMEX黄金": 'GC',
87
- "CME-瘦肉猪": 'LHC',
88
- "布伦特原油": 'OIL',
89
- "伦敦金": 'XAU',
90
- "伦敦银": 'XAG',
91
- "伦敦铂金": 'XPT',
92
- "伦敦钯金": 'XPD',
93
- "欧洲碳排放": 'EUA',
66
+ "新加坡铁矿石": "FEF",
67
+ "马棕油": "FCPO",
68
+ "日橡胶": "RSS3",
69
+ "美国原糖": "RS",
70
+ "CME比特币期货": "BTC",
71
+ "NYBOT-棉花": "CT",
72
+ "LME3个月": "NID",
73
+ "LME3个月": "PBD",
74
+ "LME3个月": "SND",
75
+ "LME3个月": "ZSD",
76
+ "LME3个月": "AHD",
77
+ "LME铜3个月": "CAD",
78
+ "CBOT-黄豆": "S",
79
+ "CBOT-小麦": "W",
80
+ "CBOT-玉米": "C",
81
+ "CBOT-黄豆油": "BO",
82
+ "CBOT-黄豆粉": "SM",
83
+ "日本橡胶": "TRB",
84
+ "COMEX铜": "HG",
85
+ "NYMEX天然气": "NG",
86
+ "NYMEX原油": "CL",
87
+ "COMEX白银": "SI",
88
+ "COMEX黄金": "GC",
89
+ "CME-瘦肉猪": "LHC",
90
+ "布伦特原油": "OIL",
91
+ "伦敦金": "XAU",
92
+ "伦敦银": "XAG",
93
+ "伦敦铂金": "XPT",
94
+ "伦敦钯金": "XPD",
95
+ "欧洲碳排放": "EUA",
94
96
  }
95
- temp_df = pd.DataFrame.from_dict(inner_dict, orient='index')
97
+ temp_df = pd.DataFrame.from_dict(inner_dict, orient="index")
96
98
  temp_df.reset_index(inplace=True)
97
- temp_df.columns = ['symbol', 'code']
99
+ temp_df.columns = ["symbol", "code"]
98
100
  return temp_df
99
101
 
100
102
 
@@ -114,21 +116,22 @@ def futures_foreign_commodity_realtime(symbol: Union[str, List[str]]) -> pd.Data
114
116
  payload = "?list=" + ",".join(["hf_" + item for item in symbol])
115
117
  url = "https://hq.sinajs.cn/" + payload
116
118
  headers = {
117
- 'Accept': '*/*',
118
- 'Accept-Encoding': 'gzip, deflate, br',
119
- 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
120
- 'Cache-Control': 'no-cache',
121
- 'Connection': 'keep-alive',
122
- 'Host': 'hq.sinajs.cn',
123
- 'Pragma': 'no-cache',
124
- 'Referer': 'https://finance.sina.com.cn/',
125
- 'sec-ch-ua': '" Not;A Brand";v="99", "Google Chrome";v="97", "Chromium";v="97"',
126
- 'sec-ch-ua-mobile': '?0',
127
- 'sec-ch-ua-platform': '"Windows"',
128
- 'Sec-Fetch-Dest': 'script',
129
- 'Sec-Fetch-Mode': 'no-cors',
130
- 'Sec-Fetch-Site': 'cross-site',
131
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'
119
+ "Accept": "*/*",
120
+ "Accept-Encoding": "gzip, deflate, br",
121
+ "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
122
+ "Cache-Control": "no-cache",
123
+ "Connection": "keep-alive",
124
+ "Host": "hq.sinajs.cn",
125
+ "Pragma": "no-cache",
126
+ "Referer": "https://finance.sina.com.cn/",
127
+ "sec-ch-ua": '" Not;A Brand";v="99", "Google Chrome";v="97", "Chromium";v="97"',
128
+ "sec-ch-ua-mobile": "?0",
129
+ "sec-ch-ua-platform": '"Windows"',
130
+ "Sec-Fetch-Dest": "script",
131
+ "Sec-Fetch-Mode": "no-cors",
132
+ "Sec-Fetch-Site": "cross-site",
133
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
134
+ "Chrome/97.0.4692.71 Safari/537.36",
132
135
  }
133
136
  r = requests.get(url, headers=headers)
134
137
  data_text = r.text
@@ -141,6 +144,11 @@ def futures_foreign_commodity_realtime(symbol: Union[str, List[str]]) -> pd.Data
141
144
  )
142
145
  data_df.iloc[:, 0] = data_df.iloc[:, 0].str.replace('"', "")
143
146
  data_df.iloc[:, -1] = data_df.iloc[:, -1].str.replace('"', "")
147
+
148
+ # 处理伦敦金 XAU 的情况
149
+ if len(data_df.columns) == 14:
150
+ data_df["temp"] = None
151
+
144
152
  data_df.columns = [
145
153
  "current_price",
146
154
  "-",
@@ -159,7 +167,9 @@ def futures_foreign_commodity_realtime(symbol: Union[str, List[str]]) -> pd.Data
159
167
  "current_price_rmb",
160
168
  ]
161
169
  temp_symbol_code_df = futures_hq_subscribe_exchange_symbol()
162
- temp_symbol_code_dict = dict(zip(temp_symbol_code_df['code'], temp_symbol_code_df['symbol']))
170
+ temp_symbol_code_dict = dict(
171
+ zip(temp_symbol_code_df["code"], temp_symbol_code_df["symbol"])
172
+ )
163
173
  data_df["symbol"] = [temp_symbol_code_dict[subscribe] for subscribe in symbol]
164
174
  data_df = data_df[
165
175
  [
@@ -202,7 +212,9 @@ def futures_foreign_commodity_realtime(symbol: Union[str, List[str]]) -> pd.Data
202
212
  data_df["开盘价"] = pd.to_numeric(data_df["开盘价"], errors="coerce")
203
213
  data_df["持仓量"] = pd.to_numeric(data_df["持仓量"], errors="coerce")
204
214
  data_df["涨跌额"] = data_df["最新价"] - data_df["昨日结算价"]
205
- data_df["涨跌幅"] = (data_df["最新价"] - data_df["昨日结算价"]) / data_df["昨日结算价"] * 100
215
+ data_df["涨跌幅"] = (
216
+ (data_df["最新价"] - data_df["昨日结算价"]) / data_df["昨日结算价"] * 100
217
+ )
206
218
  data_df = data_df[
207
219
  [
208
220
  "名称",
@@ -225,13 +237,13 @@ def futures_foreign_commodity_realtime(symbol: Union[str, List[str]]) -> pd.Data
225
237
  # 获取转换比例数据
226
238
  url = "https://finance.sina.com.cn/money/future/hf.html"
227
239
  r = requests.get(url)
228
- r.encoding = "gb2312"
229
- soup = BeautifulSoup(r.text, "lxml")
230
- data_text = soup.find_all("script", attrs={"type": "text/javascript"})[
240
+ r.encoding = "utf-8"
241
+ soup = BeautifulSoup(r.text, features="lxml")
242
+ data_text = soup.find_all(name="script", attrs={"type": "text/javascript"})[
231
243
  -2
232
244
  ].string.strip()
233
- raw_text = data_text[data_text.find("oHF_1 = "): data_text.find("oHF_2")]
234
- need_text = raw_text[raw_text.find("{"): raw_text.rfind("}") + 1]
245
+ raw_text = data_text[data_text.find("oHF_1 = ") : data_text.find("oHF_2")]
246
+ need_text = raw_text[raw_text.find("{") : raw_text.rfind("}") + 1]
235
247
  data_json = demjson.decode(need_text)
236
248
  price_mul = pd.DataFrame(
237
249
  [
@@ -240,17 +252,23 @@ def futures_foreign_commodity_realtime(symbol: Union[str, List[str]]) -> pd.Data
240
252
  ]
241
253
  ).T
242
254
  price_mul.columns = ["symbol", "price"]
255
+ price_mul = price_mul[price_mul["symbol"].isin(data_df["名称"])]
256
+ price_mul.reset_index(inplace=True, drop=True)
257
+ price_mul["price"] = pd.to_numeric(price_mul["price"], errors="coerce")
243
258
 
244
259
  # 获取汇率数据
245
260
  url = "https://hq.sinajs.cn/?list=USDCNY"
246
261
  r = requests.get(url, headers=headers)
247
262
  data_text = r.text
248
263
  usd_rmb = float(
249
- data_text[data_text.find('"') + 1: data_text.find(",美元人民币")].split(",")[-1]
264
+ data_text[data_text.find('"') + 1 : data_text.find(",美元人民币")].split(",")[
265
+ -1
266
+ ]
250
267
  )
251
268
 
252
269
  # 计算人民币报价
253
- data_df["人民币报价"] = data_df["最新价"] * price_mul["price"] * usd_rmb
270
+ data_df["最新价"] = pd.to_numeric(data_df["最新价"], errors="coerce")
271
+ data_df["人民币报价"] = data_df["最新价"] * price_mul["price"] * float(usd_rmb)
254
272
  data_df.dropna(thresh=4, inplace=True)
255
273
  return data_df
256
274
 
@@ -263,12 +281,12 @@ if __name__ == "__main__":
263
281
  subscribes = futures_foreign_commodity_subscribe_exchange_symbol()
264
282
 
265
283
  futures_foreign_commodity_realtime_df = futures_foreign_commodity_realtime(
266
- symbol='CT,NID'
284
+ symbol="CT,NID"
267
285
  )
268
286
  print(futures_foreign_commodity_realtime_df)
269
287
 
270
288
  futures_foreign_commodity_realtime_df = futures_foreign_commodity_realtime(
271
- symbol=['CT', 'NID']
289
+ symbol=["XAU"]
272
290
  )
273
291
  print(futures_foreign_commodity_realtime_df)
274
292
 
@@ -1,11 +1,12 @@
1
1
  # -*- coding:utf-8 -*-
2
2
  # !/usr/bin/env python
3
3
  """
4
- Date: 2023/11/9 14:00
4
+ Date: 2025/10/29 15:00
5
5
  Desc: 中证商品指数
6
6
  http://www.ccidx.com/
7
7
  """
8
- from io import BytesIO
8
+
9
+ import json
9
10
 
10
11
  import pandas as pd
11
12
  import requests
@@ -24,94 +25,35 @@ def futures_index_ccidx(symbol: str = "中证商品期货指数") -> pd.DataFram
24
25
  "中证商品期货指数": "100001.CCI",
25
26
  "中证商品期货价格指数": "000001.CCI",
26
27
  }
27
- url = "http://www.ccidx.com/front/ajax_downZSHQ.do"
28
- params = {"indexCode": futures_index_map[symbol]}
28
+ url = "http://www.ccidx.com/CCI-ZZZS/index/getDateLine"
29
+ params = {"indexId": futures_index_map[symbol]}
29
30
  r = requests.get(url, params=params)
30
- temp_df = pd.read_excel(BytesIO(r.content), header=1, engine="openpyxl")
31
- temp_df.columns = [
32
- "日期",
33
- "指数代码",
34
- "指数中文全称",
35
- "指数中文简称",
36
- "指数英文全称",
37
- "指数英文简称",
38
- "开盘",
39
- "最高",
40
- "最低",
41
- "收盘",
42
- "结算",
43
- "涨跌",
44
- "涨跌幅",
45
- ]
31
+ data_json = r.json()
32
+ temp_df = pd.DataFrame(
33
+ [json.loads(item) for item in data_json["data"]["dateLineJson"]]
34
+ )
35
+ temp_df.rename(
36
+ columns={
37
+ "tradeDate": "日期",
38
+ "indexId": "指数代码",
39
+ "closingPrice": "收盘点位",
40
+ "settlePrice": "结算点位",
41
+ "dailyIncreaseAndDecrease": "涨跌",
42
+ "dailyIncreaseAndDecreasePercentage": "涨跌幅",
43
+ },
44
+ inplace=True,
45
+ )
46
+
46
47
  temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
47
- temp_df["开盘"] = pd.to_numeric(temp_df["开盘"], errors="coerce")
48
- temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
49
- temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
50
- temp_df["收盘"] = pd.to_numeric(temp_df["收盘"], errors="coerce")
51
- temp_df["结算"] = pd.to_numeric(temp_df["结算"], errors="coerce")
48
+ temp_df["收盘点位"] = pd.to_numeric(temp_df["收盘点位"], errors="coerce")
49
+ temp_df["结算点位"] = pd.to_numeric(temp_df["结算点位"], errors="coerce")
52
50
  temp_df["涨跌"] = pd.to_numeric(temp_df["涨跌"], errors="coerce")
53
51
  temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
54
- temp_df.sort_values(by=['日期'], inplace=True)
52
+ temp_df.sort_values(by=["日期"], inplace=True)
55
53
  temp_df.reset_index(inplace=True, drop=True)
56
54
  return temp_df
57
55
 
58
56
 
59
- def futures_index_min_ccidx(symbol: str = "中证监控油脂油料期货指数") -> pd.DataFrame:
60
- """
61
- 中证商品指数-商品指数-分时数据
62
- http://www.ccidx.com/index.html
63
- :param symbol: choice of {"中证商品期货指数", "中证商品期货价格指数", "中证监控油脂油料期货指数", "中证监控软商品期货指数", "中证监控能化期货指数", "中证监控钢铁期货指数"}
64
- :type symbol: str
65
- :return: 商品指数-分时数据
66
- :rtype: pandas.DataFrame
67
- """
68
- futures_index_map = {
69
- "中证商品期货指数": ["100001.CCI", "0"],
70
- "中证商品期货价格指数": ["000001.CCI", "1"],
71
- "中证监控油脂油料期货指数": ["606005.CCI", "2"],
72
- "中证监控软商品期货指数": ["606008.CCI", "3"],
73
- "中证监控能化期货指数": ["606010.CCI", "4"],
74
- "中证监控钢铁期货指数": ["606011.CCI", "5"],
75
- }
76
- url = "http://www.ccidx.com/cscidx/csciAction/loadTimeData"
77
- params = {"r": "0.08644997232349438"}
78
- payload = {
79
- "indexCode": futures_index_map[symbol][0],
80
- "indexType": futures_index_map[symbol][1],
81
- "pointer": "all",
82
- }
83
- headers = {
84
- "Accept": "application/json, text/javascript, */*; q=0.01",
85
- "Accept-Encoding": "gzip, deflate",
86
- "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
87
- "Cache-Control": "no-cache",
88
- "Content-Length": "44",
89
- "Connection": "keep-alive",
90
- "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
91
- "Host": "www.ccidx.com",
92
- "Origin": "http://www.ccidx.com",
93
- "Pragma": "no-cache",
94
- "Proxy-Connection": "keep-alive",
95
- "Referer": "http://www.ccidx.com/cscidx/quote1",
96
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36",
97
- "X-Requested-With": "XMLHttpRequest",
98
- }
99
- r = requests.post(url, params=params, data=payload, headers=headers)
100
- data_json = r.json()
101
- temp_df = pd.DataFrame(
102
- [data_json["dataMap"]["axisList"], data_json["dataMap"]["lineList"]]
103
- ).T
104
- temp_df.columns = [
105
- "datetime",
106
- "value",
107
- ]
108
- temp_df["value"] = pd.to_numeric(temp_df["value"], errors="coerce")
109
- return temp_df
110
-
111
-
112
57
  if __name__ == "__main__":
113
58
  futures_index_ccidx_df = futures_index_ccidx(symbol="中证商品期货指数")
114
59
  print(futures_index_ccidx_df)
115
-
116
- futures_index_min_ccidx_df = futures_index_min_ccidx(symbol="中证商品期货指数")
117
- print(futures_index_min_ccidx_df)