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: 2022/9/28 17:02
4
+ Date: 2025/2/24 18:30
5
5
  Desc: 东方财富网-行情中心-美股市场-知名美股
6
- http://quote.eastmoney.com/center/gridlist.html#us_wellknown
6
+ https://quote.eastmoney.com/center/gridlist.html#us_wellknown
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -12,8 +13,8 @@ import requests
12
13
  def stock_us_famous_spot_em(symbol: str = "科技类") -> pd.DataFrame:
13
14
  """
14
15
  东方财富网-行情中心-美股市场-知名美股
15
- http://quote.eastmoney.com/center/gridlist.html#us_wellknown
16
- :symbol: choice of {'科技类', '金融类', '医药食品类', '媒体类', '汽车能源类', '制造零售类'}
16
+ https://quote.eastmoney.com/center/gridlist.html#us_wellknown
17
+ :param symbol: choice of {'科技类', '金融类', '医药食品类', '媒体类', '汽车能源类', '制造零售类'}
17
18
  :type: str
18
19
  :return: 知名美股实时行情
19
20
  :rtype: pandas.DataFrame
@@ -26,23 +27,23 @@ def stock_us_famous_spot_em(symbol: str = "科技类") -> pd.DataFrame:
26
27
  "汽车能源类": "0219",
27
28
  "制造零售类": "0221",
28
29
  }
29
- url = "http://69.push2.eastmoney.com/api/qt/clist/get"
30
+ url = "https://69.push2.eastmoney.com/api/qt/clist/get"
30
31
  params = {
31
32
  "pn": "1",
32
- "pz": "2000",
33
+ "pz": "50000",
33
34
  "po": "1",
34
- "np": "1",
35
+ "np": "2",
35
36
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
36
37
  "fltt": "2",
37
38
  "invt": "2",
38
39
  "fid": "f3",
39
40
  "fs": f"b:MK{market_map[symbol]}",
40
- "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",
41
- "_": "1631271634231",
41
+ "fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,"
42
+ "f25,f26,f22,f33,f11,f62,f128,f136,f115,f152",
42
43
  }
43
44
  r = requests.get(url, params=params)
44
45
  data_json = r.json()
45
- temp_df = pd.DataFrame(data_json["data"]["diff"])
46
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
46
47
  temp_df.columns = [
47
48
  "_",
48
49
  "最新价",
@@ -111,6 +112,13 @@ def stock_us_famous_spot_em(symbol: str = "科技类") -> pd.DataFrame:
111
112
 
112
113
 
113
114
  if __name__ == "__main__":
114
- for item in {"科技类", "金融类", "医药食品类", "媒体类", "汽车能源类", "制造零售类"}:
115
+ for item in {
116
+ "科技类",
117
+ "金融类",
118
+ "医药食品类",
119
+ "媒体类",
120
+ "汽车能源类",
121
+ "制造零售类",
122
+ }:
115
123
  stock_us_famous_spot_em_df = stock_us_famous_spot_em(symbol=item)
116
124
  print(stock_us_famous_spot_em_df)
@@ -5,6 +5,7 @@ Date: 2022/11/27 13:30
5
5
  Desc: 美股目标价 or 港股目标价
6
6
  https://www.ushknews.com/report.html
7
7
  """
8
+
8
9
  import requests
9
10
  import pandas as pd
10
11
 
@@ -20,8 +21,8 @@ def stock_price_js(symbol: str = "us") -> pd.DataFrame:
20
21
  """
21
22
  url = "https://calendar-api.ushknews.com/getWebTargetPriceList"
22
23
  params = {
23
- 'limit': '20',
24
- 'category': symbol,
24
+ "limit": "20",
25
+ "category": symbol,
25
26
  }
26
27
  headers = {
27
28
  "accept": "application/json, text/plain, */*",
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/4/11 17:00
4
+ Date: 2025/6/17 14:00
5
5
  Desc: 东方财富网-行情中心-美股市场-粉单市场
6
6
  https://quote.eastmoney.com/center/gridlist.html#us_pinksheet
7
7
  """
@@ -9,6 +9,8 @@ https://quote.eastmoney.com/center/gridlist.html#us_pinksheet
9
9
  import pandas as pd
10
10
  import requests
11
11
 
12
+ from akshare.utils.tqdm import get_tqdm
13
+
12
14
 
13
15
  def stock_us_pink_spot_em() -> pd.DataFrame:
14
16
  """
@@ -19,23 +21,32 @@ def stock_us_pink_spot_em() -> pd.DataFrame:
19
21
  """
20
22
  url = "https://23.push2.eastmoney.com/api/qt/clist/get"
21
23
  params = {
22
- "pn": "1",
23
- "pz": "2000",
24
- "po": "1",
25
24
  "np": "1",
26
- "ut": "bd1d9ddb04089700cf9c27f6f7426281",
27
- "fltt": "2",
28
- "invt": "2",
29
- "fid": "f3",
25
+ "fltt": "1",
26
+ "invt": "1",
30
27
  "fs": "m:153",
31
28
  "fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,"
32
- "f26,f22,f33,f11,f62,f128,f136,f115,f152",
33
- "_": "1631271634231",
29
+ "f26,f22,f33,f11,f62,f128,f136,f115,f152",
30
+ "fid": "f3",
31
+ "pn": "1",
32
+ "pz": "100",
33
+ "po": "1",
34
+ "dect": "1",
35
+ "ut": "bd1d9ddb04089700cf9c27f6f7426281",
34
36
  }
35
37
  r = requests.get(url, params=params)
36
38
  data_json = r.json()
37
- temp_df = pd.DataFrame(data_json["data"]["diff"])
38
- temp_df.columns = [
39
+ import math
40
+ total_page = math.ceil(data_json['data']["total"] / 100)
41
+ tqdm = get_tqdm()
42
+ big_df = pd.DataFrame()
43
+ for page in tqdm(range(1, total_page + 1), leave=False):
44
+ params.update({"pn": page})
45
+ r = requests.get(url, params=params)
46
+ data_json = r.json()
47
+ temp_df = pd.DataFrame(data_json["data"]["diff"])
48
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
49
+ big_df.columns = [
39
50
  "_",
40
51
  "最新价",
41
52
  "涨跌幅",
@@ -70,11 +81,11 @@ def stock_us_pink_spot_em() -> pd.DataFrame:
70
81
  "_",
71
82
  "_",
72
83
  ]
73
- temp_df.reset_index(inplace=True)
74
- temp_df["index"] = range(1, len(temp_df) + 1)
75
- temp_df.rename(columns={"index": "序号"}, inplace=True)
76
- temp_df["代码"] = temp_df["编码"].astype(str) + "." + temp_df["简称"]
77
- temp_df = temp_df[
84
+ big_df.reset_index(inplace=True)
85
+ big_df["index"] = range(1, len(big_df) + 1)
86
+ big_df.rename(columns={"index": "序号"}, inplace=True)
87
+ big_df["代码"] = big_df["编码"].astype(str) + "." + big_df["简称"]
88
+ big_df = big_df[
78
89
  [
79
90
  "序号",
80
91
  "名称",
@@ -90,16 +101,16 @@ def stock_us_pink_spot_em() -> pd.DataFrame:
90
101
  "代码",
91
102
  ]
92
103
  ]
93
- temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
94
- temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce")
95
- temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
96
- temp_df["开盘价"] = pd.to_numeric(temp_df["开盘价"], errors="coerce")
97
- temp_df["最高价"] = pd.to_numeric(temp_df["最高价"], errors="coerce")
98
- temp_df["最低价"] = pd.to_numeric(temp_df["最低价"], errors="coerce")
99
- temp_df["昨收价"] = pd.to_numeric(temp_df["昨收价"], errors="coerce")
100
- temp_df["总市值"] = pd.to_numeric(temp_df["总市值"], errors="coerce")
101
- temp_df["市盈率"] = pd.to_numeric(temp_df["市盈率"], errors="coerce")
102
- return temp_df
104
+ big_df["最新价"] = pd.to_numeric(big_df["最新价"], errors="coerce")
105
+ big_df["涨跌额"] = pd.to_numeric(big_df["涨跌额"], errors="coerce")
106
+ big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"], errors="coerce")
107
+ big_df["开盘价"] = pd.to_numeric(big_df["开盘价"], errors="coerce")
108
+ big_df["最高价"] = pd.to_numeric(big_df["最高价"], errors="coerce")
109
+ big_df["最低价"] = pd.to_numeric(big_df["最低价"], errors="coerce")
110
+ big_df["昨收价"] = pd.to_numeric(big_df["昨收价"], errors="coerce")
111
+ big_df["总市值"] = pd.to_numeric(big_df["总市值"], errors="coerce")
112
+ big_df["市盈率"] = pd.to_numeric(big_df["市盈率"], errors="coerce")
113
+ return big_df
103
114
 
104
115
 
105
116
  if __name__ == "__main__":
@@ -1,16 +1,17 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/12/7 15:30
4
+ Date: 2025/1/14 17:00
5
5
  Desc: 新浪财经-美股实时行情数据和历史行情数据
6
6
  https://finance.sina.com.cn/stock/usstock/sector.shtml
7
7
  """
8
+
8
9
  import json
9
10
  from functools import lru_cache
10
11
 
11
12
  import pandas as pd
12
13
  import requests
13
- from py_mini_racer import py_mini_racer
14
+ import py_mini_racer
14
15
  from tqdm import tqdm
15
16
 
16
17
  from akshare.stock.cons import (
@@ -42,7 +43,7 @@ def __get_us_page_count() -> int:
42
43
  us_sina_stock_list_url.format(dict_list),
43
44
  params=us_sina_stock_dict_payload,
44
45
  )
45
- data_json = json.loads(res.text[res.text.find("({") + 1: res.text.rfind(");")])
46
+ data_json = json.loads(res.text[res.text.find("({") + 1 : res.text.rfind(");")])
46
47
  if not isinstance(int(data_json["count"]) / 20, int):
47
48
  page_count = int(int(data_json["count"]) / 20) + 1
48
49
  else:
@@ -75,8 +76,10 @@ def get_us_stock_name() -> pd.DataFrame:
75
76
  us_sina_stock_list_url.format(dict_list),
76
77
  params=us_sina_stock_dict_payload,
77
78
  )
78
- data_json = json.loads(res.text[res.text.find("({") + 1: res.text.rfind(");")])
79
- big_df = pd.concat([big_df, pd.DataFrame(data_json["data"])], ignore_index=True)
79
+ data_json = json.loads(res.text[res.text.find("({") + 1 : res.text.rfind(");")])
80
+ big_df = pd.concat(
81
+ objs=[big_df, pd.DataFrame(data_json["data"])], ignore_index=True
82
+ )
80
83
  return big_df[["name", "cname", "symbol"]]
81
84
 
82
85
 
@@ -104,8 +107,10 @@ def stock_us_spot() -> pd.DataFrame:
104
107
  us_sina_stock_list_url.format(dict_list),
105
108
  params=us_sina_stock_dict_payload,
106
109
  )
107
- data_json = json.loads(res.text[res.text.find("({") + 1: res.text.rfind(");")])
108
- big_df = pd.concat([big_df, pd.DataFrame(data_json["data"])], ignore_index=True)
110
+ data_json = json.loads(res.text[res.text.find("({") + 1 : res.text.rfind(");")])
111
+ big_df = pd.concat(
112
+ objs=[big_df, pd.DataFrame(data_json["data"])], ignore_index=True
113
+ )
109
114
  return big_df
110
115
 
111
116
 
@@ -127,9 +132,7 @@ def stock_us_daily(symbol: str = "FB", adjust: str = "") -> pd.DataFrame:
127
132
  res = requests.get(url)
128
133
  js_code = py_mini_racer.MiniRacer()
129
134
  js_code.eval(zh_js_decode)
130
- dict_list = js_code.call(
131
- "d", res.text.split("=")[1].split(";")[0].replace('"', "")
132
- )
135
+ dict_list = js_code.call("d", res.text.split("=")[1].split(";")[0].replace('"', ""))
133
136
  data_df = pd.DataFrame(dict_list)
134
137
  data_df["date"] = pd.to_datetime(data_df["date"]).dt.date
135
138
  data_df.index = pd.to_datetime(data_df["date"])
@@ -168,7 +171,7 @@ def stock_us_daily(symbol: str = "FB", adjust: str = "") -> pd.DataFrame:
168
171
  try:
169
172
  # try for pandas >= 2.1.0
170
173
  temp_df.ffill(inplace=True)
171
- except Exception as e:
174
+ except Exception:
172
175
  try:
173
176
  # try for pandas < 2.1.0
174
177
  temp_df.fillna(method="ffill", inplace=True)
@@ -177,7 +180,7 @@ def stock_us_daily(symbol: str = "FB", adjust: str = "") -> pd.DataFrame:
177
180
  try:
178
181
  # try for pandas >= 2.1.0
179
182
  temp_df.bfill(inplace=True)
180
- except Exception as e:
183
+ except Exception:
181
184
  try:
182
185
  # try for pandas < 2.1.0
183
186
  temp_df.fillna(method="bfill", inplace=True)
@@ -9,6 +9,7 @@ https://datacenter.jin10.com/market
9
9
  红色颜色越深,表明该股票讨论热度越高,其当前的涨幅更大。
10
10
  绿色颜色越深,表明该股票讨论的热度越低,其当前的跌幅更大。
11
11
  """
12
+
12
13
  import time
13
14
  from typing import Dict
14
15
 
@@ -55,34 +56,31 @@ def stock_js_weibo_report(time_period: str = "CNHOUR12") -> pd.DataFrame:
55
56
  :rtype: pandas.DataFrame
56
57
  """
57
58
  url = "https://datacenter-api.jin10.com/weibo/list"
58
- payload = {
59
- "timescale": time_period,
60
- "_": int(time.time() * 1000)
61
- }
59
+ payload = {"timescale": time_period, "_": int(time.time() * 1000)}
62
60
  headers = {
63
- 'authority': 'datacenter-api.jin10.com',
64
- 'pragma': 'no-cache',
65
- 'cache-control': 'no-cache',
66
- 'accept': '*/*',
67
- 'x-app-id': 'rU6QIu7JHe2gOUeR',
68
- 'sec-fetch-dest': 'empty',
69
- 'x-csrf-token': '',
70
- 'x-version': '1.0.0',
71
- 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36',
72
- 'origin': 'https://datacenter.jin10.com',
73
- 'sec-fetch-site': 'same-site',
74
- 'sec-fetch-mode': 'cors',
75
- 'referer': 'https://datacenter.jin10.com/market',
76
- 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8'
61
+ "authority": "datacenter-api.jin10.com",
62
+ "pragma": "no-cache",
63
+ "cache-control": "no-cache",
64
+ "accept": "*/*",
65
+ "x-app-id": "rU6QIu7JHe2gOUeR",
66
+ "sec-fetch-dest": "empty",
67
+ "x-csrf-token": "",
68
+ "x-version": "1.0.0",
69
+ "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36",
70
+ "origin": "https://datacenter.jin10.com",
71
+ "sec-fetch-site": "same-site",
72
+ "sec-fetch-mode": "cors",
73
+ "referer": "https://datacenter.jin10.com/market",
74
+ "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
77
75
  }
78
76
 
79
77
  r = requests.get(url, params=payload, headers=headers)
80
78
  temp_df = pd.DataFrame(r.json()["data"])
81
- temp_df['rate'] = pd.to_numeric(temp_df['rate'])
79
+ temp_df["rate"] = pd.to_numeric(temp_df["rate"])
82
80
  return temp_df
83
81
 
84
82
 
85
- if __name__ == '__main__':
83
+ if __name__ == "__main__":
86
84
  stock_js_weibo_nlp_time_map = stock_js_weibo_nlp_time()
87
85
  print(stock_js_weibo_nlp_time_map)
88
86
 
akshare/stock/stock_xq.py CHANGED
@@ -1,19 +1,34 @@
1
1
  # !/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/4/9 16:30
4
+ Date: 2025/8/30 15:00
5
5
  Desc: 雪球-行情中心-个股
6
6
  https://xueqiu.com/S/SH513520
7
7
  """
8
8
 
9
9
  import re
10
+ from datetime import datetime
10
11
 
11
12
  import pandas as pd
12
13
  import requests
13
14
 
14
15
 
16
+ def _convert_timestamp(timestamp_ms: int) -> str:
17
+ """
18
+ 时间戳转换为字符串时间
19
+ :param timestamp_ms: 时间戳
20
+ :type timestamp_ms: int
21
+ :return: 字符串
22
+ :rtype: str
23
+ """
24
+ timestamp_s = timestamp_ms / 1000
25
+ datetime_obj = datetime.fromtimestamp(timestamp_s)
26
+ return datetime_obj.strftime("%Y-%m-%d %H:%M:%S")
27
+
28
+
15
29
  def stock_individual_spot_xq(
16
30
  symbol: str = "SH600000",
31
+ token: str = None,
17
32
  timeout: float = None,
18
33
  ) -> pd.DataFrame:
19
34
  """
@@ -21,15 +36,20 @@ def stock_individual_spot_xq(
21
36
  https://xueqiu.com/S/SH600000
22
37
  :param symbol: 证券代码,可以是 A 股代码,A 股场内基金代码,A 股指数,美股代码, 美股指数
23
38
  :type symbol: str
39
+ :param token: set xueqiu token
40
+ :type token: str
24
41
  :param timeout: choice of None or a positive float number
25
42
  :type timeout: float
26
43
  :return: 证券最新行情
27
44
  :rtype: pandas.DataFrame
28
45
  """
46
+ from akshare.stock.cons import xq_a_token
29
47
  session = requests.Session()
48
+ xq_a_token = token or xq_a_token
30
49
  headers = {
31
- "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
32
- "Chrome/78.0.3904.108 Safari/537.36"
50
+ "cookie": f"xq_a_token={xq_a_token};",
51
+ "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 "
52
+ "(KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1",
33
53
  }
34
54
  session.get(url="https://xueqiu.com", headers=headers)
35
55
  url = f"https://stock.xueqiu.com/v5/stock/quote.json?symbol={symbol}&extend=detail"
@@ -78,33 +98,40 @@ def stock_individual_spot_xq(
78
98
  "turnover_rate": "周转率",
79
99
  "unit_nav": "单位净值",
80
100
  "volume": "成交量",
101
+ "time": "时间",
81
102
  }
82
- json_data = r.json()["data"]["quote"]
83
- temp_df = pd.json_normalize(json_data)
103
+ json_data = r.json()
104
+ temp_df = pd.json_normalize(json_data["data"]["quote"])
84
105
  temp_df.columns = [
85
106
  *map(
86
107
  lambda x: column_name_map[x] if x in column_name_map.keys() else x,
87
108
  temp_df.columns,
88
- ) # 由于传入的symbol可能是个股,可能是指数,也可能是基金,所以这里取列的最大公约数,没有数据的列内容为None
109
+ ) # 由于传入的 symbol 可能是个股,可能是指数,也可能是基金,所以这里取列的最大公约数,没有数据的列内容为 None
89
110
  ]
90
111
  temp_df = temp_df[
91
112
  list(
92
113
  filter(
93
114
  lambda x: re.search(pattern="[\u4e00-\u9fa5]", string=x),
94
115
  temp_df.columns,
95
- ) # 过滤temp_df,留下包含汉字的列
116
+ ) # 过滤 temp_df,留下包含汉字的列
96
117
  )
97
118
  ]
98
119
  temp_df = temp_df.T.reset_index()
99
120
  temp_df.columns = ["item", "value"]
121
+ temp_df.loc[temp_df["item"] == "时间", "value"] = temp_df.loc[
122
+ temp_df["item"] == "时间", "value"
123
+ ].apply(lambda x: _convert_timestamp(int(x)) if x and not pd.isna(x) else None)
124
+ temp_df.loc[temp_df["item"] == "发行日期", "value"] = temp_df.loc[
125
+ temp_df["item"] == "发行日期", "value"
126
+ ].apply(lambda x: _convert_timestamp(int(x)) if x and not pd.isna(x) else None)
100
127
  return temp_df
101
128
 
102
129
 
103
130
  if __name__ == "__main__":
104
- stock_individual_spot_xq_df = stock_individual_spot_xq(symbol="SH600000")
131
+ stock_individual_spot_xq_df = stock_individual_spot_xq(symbol="BJ430139")
105
132
  print(stock_individual_spot_xq_df)
106
133
 
107
- stock_individual_spot_xq_df = stock_individual_spot_xq(symbol="SH000001")
134
+ stock_individual_spot_xq_df = stock_individual_spot_xq(symbol="SH600000")
108
135
  print(stock_individual_spot_xq_df)
109
136
 
110
137
  stock_individual_spot_xq_df = stock_individual_spot_xq(symbol="SPY")