mns-common 1.5.1.6__tar.gz → 1.5.1.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mns-common might be problematic. Click here for more details.

Files changed (168) hide show
  1. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/PKG-INFO +1 -1
  2. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/proxies/liu_guan_proxy_api.py +18 -5
  3. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/proxies/proxy_common_api.py +31 -8
  4. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/constant/db_name_constant.py +3 -1
  5. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common.egg-info/PKG-INFO +1 -1
  6. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common.egg-info/SOURCES.txt +0 -18
  7. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/setup.py +1 -1
  8. mns_common-1.5.1.6/mns_common/api/akshare/k_line_api.py +0 -123
  9. mns_common-1.5.1.6/mns_common/api/akshare/stock_bid_ask_api.py +0 -94
  10. mns_common-1.5.1.6/mns_common/api/akshare/stock_dt_pool.py +0 -47
  11. mns_common-1.5.1.6/mns_common/api/akshare/stock_zb_pool.py +0 -48
  12. mns_common-1.5.1.6/mns_common/api/akshare/stock_zt_pool_api.py +0 -47
  13. mns_common-1.5.1.6/mns_common/api/akshare/yjyg_sync_api.py +0 -98
  14. mns_common-1.5.1.6/mns_common/api/em/concept/em_concept_index_api.py +0 -230
  15. mns_common-1.5.1.6/mns_common/api/em/gd/east_money_stock_gdfx_free_top_10_api.py +0 -252
  16. mns_common-1.5.1.6/mns_common/api/em/real_time/east_money_debt_api.py +0 -306
  17. mns_common-1.5.1.6/mns_common/api/em/real_time/east_money_etf_api.py +0 -374
  18. mns_common-1.5.1.6/mns_common/api/em/real_time/east_money_stock_a_api.py +0 -376
  19. mns_common-1.5.1.6/mns_common/api/em/real_time/east_money_stock_a_v2_api.py +0 -296
  20. mns_common-1.5.1.6/mns_common/api/em/real_time/east_money_stock_hk_api.py +0 -337
  21. mns_common-1.5.1.6/mns_common/api/em/real_time/east_money_stock_us_api.py +0 -234
  22. mns_common-1.5.1.6/mns_common/component/tfp/__init__.py +0 -7
  23. mns_common-1.5.1.6/mns_common/component/us/__init__.py +0 -7
  24. mns_common-1.5.1.6/mns_common/db/v2/__init__.py +0 -7
  25. mns_common-1.5.1.6/mns_common/utils/__init__.py +0 -8
  26. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/README.md +0 -0
  27. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/__init__.py +0 -0
  28. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/__init__.py +0 -0
  29. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/em/__init__.py +0 -0
  30. {mns_common-1.5.1.6/mns_common/api/em/concept → mns_common-1.5.1.8/mns_common/api/hk}/__init__.py +0 -0
  31. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/hk/ths_hk_company_info_api.py +0 -0
  32. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/k_line/__init__.py +0 -0
  33. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/k_line/stock_k_line_data_api.py +0 -0
  34. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/k_line/stock_minute_data_api.py +0 -0
  35. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/kpl/__init__.py +0 -0
  36. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/kpl/common/__init__.py +0 -0
  37. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/kpl/common/kpl_common_api.py +0 -0
  38. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/kpl/common/kpl_common_field_constant.py +0 -0
  39. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/kpl/concept/__init__.py +0 -0
  40. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/kpl/concept/kpl_concept_api.py +0 -0
  41. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/kpl/constant/__init__.py +0 -0
  42. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/kpl/constant/kpl_constant.py +0 -0
  43. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/kpl/industry/__init__.py +0 -0
  44. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/kpl/industry/kpl_industry_api.py +0 -0
  45. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/kpl/selection/__init__.py +0 -0
  46. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/kpl/selection/kpl_selection_plate_api.py +0 -0
  47. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/kpl/symbol/__init__.py +0 -0
  48. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/kpl/symbol/kpl_real_time_quotes_api.py +0 -0
  49. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/kpl/symbol/kpl_symbol_common_field_constant.py +0 -0
  50. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/kpl/symbol/symbol_his_quotes_api.py +0 -0
  51. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/msg/__init__.py +0 -0
  52. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/msg/push_msg_api.py +0 -0
  53. {mns_common-1.5.1.6/mns_common/api/em/gd → mns_common-1.5.1.8/mns_common/api/proxies}/__init__.py +0 -0
  54. {mns_common-1.5.1.6/mns_common/api/em/real_time → mns_common-1.5.1.8/mns_common/api/qmt}/__init__.py +0 -0
  55. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/qmt/qmt_minunte_tick_data.py +0 -0
  56. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/__init__.py +0 -0
  57. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/big_deal/__init__.py +0 -0
  58. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/big_deal/ths_big_deal_api.py +0 -0
  59. {mns_common-1.5.1.6/mns_common/api/hk → mns_common-1.5.1.8/mns_common/api/ths/company}/__init__.py +0 -0
  60. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/company/company_product_area_industry_index_query.py +0 -0
  61. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/company/ths_company_announce_api.py +0 -0
  62. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/company/ths_company_info_api.py +0 -0
  63. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/concept/__init__.py +0 -0
  64. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/concept/app/__init__.py +0 -0
  65. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/concept/app/ths_concept_detail_app.py +0 -0
  66. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/concept/app/ths_concept_index_app.py +0 -0
  67. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/concept/web/__init__.py +0 -0
  68. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/concept/web/ths_common_js_api.py +0 -0
  69. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/concept/web/ths_company_info_web.py +0 -0
  70. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/concept/web/ths_concept_detail_web.py +0 -0
  71. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/concept/web/ths_concept_index_web.py +0 -0
  72. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/self_choose/__init__.py +0 -0
  73. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/self_choose/ths_self_choose_api.py +0 -0
  74. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/wen_cai/__init__.py +0 -0
  75. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/wen_cai/ths_wen_cai_api.py +0 -0
  76. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/zt/__init__.py +0 -0
  77. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/zt/ths_stock_zt_pool_api.py +0 -0
  78. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/ths/zt/ths_stock_zt_pool_v2_api.py +0 -0
  79. {mns_common-1.5.1.6/mns_common/api/proxies → mns_common-1.5.1.8/mns_common/api/us}/__init__.py +0 -0
  80. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/us/ths_us_company_info_api.py +0 -0
  81. {mns_common-1.5.1.6/mns_common/api/qmt → mns_common-1.5.1.8/mns_common/api/xueqiu}/__init__.py +0 -0
  82. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/api/xueqiu/xue_qiu_k_line_api.py +0 -0
  83. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/__init__.py +0 -0
  84. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/cache/__init__.py +0 -0
  85. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/cache/cache_service.py +0 -0
  86. {mns_common-1.5.1.6/mns_common/api/ths/company → mns_common-1.5.1.8/mns_common/component/classify}/__init__.py +0 -0
  87. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/classify/symbol_classify_api.py +0 -0
  88. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/classify/symbol_classify_param.py +0 -0
  89. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/common_service_fun_api.py +0 -0
  90. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/company/__init__.py +0 -0
  91. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/company/company_common_service_api.py +0 -0
  92. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/company/company_common_service_new_api.py +0 -0
  93. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/concept/__init__.py +0 -0
  94. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/concept/kpl_concept_common_service_api.py +0 -0
  95. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/concept/ths_concept_common_service_api.py +0 -0
  96. {mns_common-1.5.1.6/mns_common/api/us → mns_common-1.5.1.8/mns_common/component/cookie}/__init__.py +0 -0
  97. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/cookie/cookie_enum.py +0 -0
  98. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/cookie/cookie_info_service.py +0 -0
  99. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/data/__init__.py +0 -0
  100. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/data/data_init_api.py +0 -0
  101. {mns_common-1.5.1.6/mns_common/api/xueqiu → mns_common-1.5.1.8/mns_common/component/deal}/__init__.py +0 -0
  102. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/deal/deal_service_api.py +0 -0
  103. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/deal/deal_service_v2_api.py +0 -0
  104. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/deal/terminal_enum.py +0 -0
  105. {mns_common-1.5.1.6/mns_common/component/classify → mns_common-1.5.1.8/mns_common/component/em}/__init__.py +0 -0
  106. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/em/em_real_time_quotes_api.py +0 -0
  107. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/em/em_stock_info_api.py +0 -0
  108. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/exception/ExceptionMonitor.py +0 -0
  109. {mns_common-1.5.1.6/mns_common/component/cookie → mns_common-1.5.1.8/mns_common/component/exception}/__init__.py +0 -0
  110. {mns_common-1.5.1.6/mns_common/component/deal → mns_common-1.5.1.8/mns_common/component/hk}/__init__.py +0 -0
  111. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/hk/company_hk_service_api.py +0 -0
  112. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/industry/__init__.py +0 -0
  113. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/industry/ths_industry_index_api.py +0 -0
  114. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/k_line/__init__.py +0 -0
  115. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/k_line/clean/__init__.py +0 -0
  116. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/k_line/clean/k_line_param.py +0 -0
  117. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/k_line/clean/sh_small_normal_zt_k_line_check_api.py +0 -0
  118. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/k_line/common/__init__.py +0 -0
  119. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/k_line/common/k_line_common_service_api.py +0 -0
  120. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/k_line/patterns/__init__.py +0 -0
  121. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/k_line/patterns/k_line_patterns_service_api.py +0 -0
  122. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/k_line/patterns/pattern_Enum.py +0 -0
  123. {mns_common-1.5.1.6/mns_common/component/em → mns_common-1.5.1.8/mns_common/component/price}/__init__.py +0 -0
  124. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/price/trade_price_service_api.py +0 -0
  125. {mns_common-1.5.1.6/mns_common/component/exception → mns_common-1.5.1.8/mns_common/component/proxies}/__init__.py +0 -0
  126. {mns_common-1.5.1.6/mns_common/component/hk → mns_common-1.5.1.8/mns_common/component/qmt}/__init__.py +0 -0
  127. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/qmt/qmt_buy_service.py +0 -0
  128. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/real_time/__init__.py +0 -0
  129. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/real_time/real_time_common_service_api.py +0 -0
  130. {mns_common-1.5.1.6/mns_common/component/price → mns_common-1.5.1.8/mns_common/component/redis_msg}/__init__.py +0 -0
  131. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/redis_msg/redis_msg_publish_service.py +0 -0
  132. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/self_choose/__init__.py +0 -0
  133. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/self_choose/black_list_service_api.py +0 -0
  134. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/self_choose/self_choose_service_api.py +0 -0
  135. {mns_common-1.5.1.6/mns_common/component/proxies → mns_common-1.5.1.8/mns_common/component/task}/__init__.py +0 -0
  136. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/task/real_time_data_sync_check.py +0 -0
  137. {mns_common-1.5.1.6/mns_common/component/qmt → mns_common-1.5.1.8/mns_common/component/tfp}/__init__.py +0 -0
  138. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/tfp/stock_tfp_api.py +0 -0
  139. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/trade_date/__init__.py +0 -0
  140. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/trade_date/trade_date_common_service_api.py +0 -0
  141. {mns_common-1.5.1.6/mns_common/component/redis_msg → mns_common-1.5.1.8/mns_common/component/us}/__init__.py +0 -0
  142. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/us/us_stock_etf_info_api.py +0 -0
  143. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/zt/__init__.py +0 -0
  144. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/component/zt/zt_common_service_api.py +0 -0
  145. {mns_common-1.5.1.6/mns_common/api/akshare → mns_common-1.5.1.8/mns_common/constant}/__init__.py +0 -0
  146. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/constant/black_list_classify_enum.py +0 -0
  147. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/constant/east_money_stock_api.py +0 -0
  148. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/constant/extra_income_db_name.py +0 -0
  149. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/constant/price_enum.py +0 -0
  150. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/constant/redis_msg_constant.py +0 -0
  151. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/constant/self_choose_constant.py +0 -0
  152. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/constant/strategy_classify.py +0 -0
  153. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/db/MongodbUtil.py +0 -0
  154. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/db/MongodbUtilLocal.py +0 -0
  155. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/db/__init__.py +0 -0
  156. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/db/v2/MongodbUtilV2.py +0 -0
  157. {mns_common-1.5.1.6/mns_common/component/task → mns_common-1.5.1.8/mns_common/db/v2}/__init__.py +0 -0
  158. {mns_common-1.5.1.6/mns_common/constant → mns_common-1.5.1.8/mns_common/utils}/__init__.py +0 -0
  159. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/utils/async_fun.py +0 -0
  160. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/utils/cmd_util.py +0 -0
  161. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/utils/data_frame_util.py +0 -0
  162. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/utils/date_handle_util.py +0 -0
  163. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/utils/db_util.py +0 -0
  164. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/utils/file_util.py +0 -0
  165. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common/utils/ip_util.py +0 -0
  166. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common.egg-info/dependency_links.txt +0 -0
  167. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/mns_common.egg-info/top_level.txt +0 -0
  168. {mns_common-1.5.1.6 → mns_common-1.5.1.8}/setup.cfg +0 -0
@@ -1,3 +1,3 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns_common
3
- Version: 1.5.1.6
3
+ Version: 1.5.1.8
@@ -10,6 +10,13 @@ import requests
10
10
  import time
11
11
  import hashlib
12
12
  import json
13
+ from mns_common.db.MongodbUtil import MongodbUtil
14
+ from functools import lru_cache
15
+ import mns_common.constant.db_name_constant as db_name_constant
16
+
17
+ mongodb_util = MongodbUtil('27017')
18
+
19
+ import random
13
20
 
14
21
  # 提取订单
15
22
  """
@@ -26,10 +33,19 @@ import json
26
33
  """
27
34
 
28
35
 
36
+ @lru_cache(maxsize=None)
37
+ def query_province_and_city_info():
38
+ return mongodb_util.find_all_data(db_name_constant.IP_PROXY_CITY_PROVINCE)
39
+
40
+
29
41
  def get_proxy_api(order_id, secret, unbind_time):
42
+ province_and_city_info_df = query_province_and_city_info()
43
+ random_row = province_and_city_info_df.sample(n=1)
44
+ cid = str(list(random_row['cid'])[0])
45
+ pid = str(list(random_row['pid'])[0])
46
+
30
47
  num = "1"
31
- pid = "-1"
32
- cid = ""
48
+
33
49
  noDuplicate = "1"
34
50
  lineSeparator = "0"
35
51
  singleIp = "0"
@@ -91,9 +107,6 @@ def get_proxy_pool_api(order_id, secret, unbind_time, ip_num):
91
107
  return ip_pool_list
92
108
 
93
109
 
94
-
95
-
96
-
97
110
  if __name__ == '__main__':
98
111
  order_id_test = ''
99
112
  secret_test = ''
@@ -27,7 +27,7 @@ query_pool = {'ip_type': IP_POOL}
27
27
 
28
28
 
29
29
  def query_liu_guan_proxy_ip():
30
- ip_proxy_pool = mongodb_util.find_one_query(db_name_constant.IP_PROXY_POOL, query_one)
30
+ ip_proxy_pool = mongodb_util.find_query_data(db_name_constant.IP_PROXY_POOL, query_one)
31
31
  return ip_proxy_pool
32
32
 
33
33
 
@@ -53,12 +53,19 @@ def get_account_cache():
53
53
 
54
54
 
55
55
  def generate_proxy_ip_api(minutes):
56
- stock_account_info = get_account_cache()
57
- order_id = list(stock_account_info['password'])[0]
58
- secret = list(stock_account_info['account'])[0]
59
- # 获取10分钟动态ip
60
- ip = liu_guan_proxy_api.get_proxy_api(order_id, secret, str(60 * minutes))
61
- return ip
56
+ try_numer = 3
57
+ while try_numer > 0:
58
+ try:
59
+ stock_account_info = get_account_cache()
60
+ order_id = list(stock_account_info['password'])[0]
61
+ secret = list(stock_account_info['account'])[0]
62
+ # 获取10分钟动态ip
63
+ ip = liu_guan_proxy_api.get_proxy_api(order_id, secret, str(60 * minutes))
64
+ try_numer = try_numer - 1
65
+ return ip
66
+ except BaseException as e:
67
+ time.sleep(1)
68
+ continue
62
69
 
63
70
 
64
71
  def generate_proxy_ip(minutes):
@@ -221,5 +228,21 @@ def call_with_timeout(func, *args, timeout=2, **kwargs):
221
228
  return result
222
229
 
223
230
 
231
+ @lru_cache(maxsize=None)
232
+ def query_province_and_city_info():
233
+ return mongodb_util.find_all_data(db_name_constant.IP_PROXY_CITY_PROVINCE)
234
+
235
+
236
+ def import_province_and_city():
237
+ # 设置文件夹路径
238
+ folder_path = r'E:\province-and-city.xlsx'
239
+ df = pd.read_excel(folder_path)
240
+ df['_id'] = df['cid']
241
+
242
+ mongodb_util.save_mongo(df, db_name_constant.IP_PROXY_CITY_PROVINCE)
243
+ return df
244
+
245
+
224
246
  if __name__ == "__main__":
225
- get_proxy_ip_pool(1, 50, 2)
247
+ import_province_and_city()
248
+ # get_proxy_ip_pool(1, 50, 2)
@@ -24,6 +24,9 @@ EM_US_STOCK_INFO = 'em_us_stock_info'
24
24
  # ip代理池
25
25
  IP_PROXY_POOL = 'ip_proxy_pool'
26
26
 
27
+ # ip代理城市信息
28
+ IP_PROXY_CITY_PROVINCE = 'ip_proxy_city_province'
29
+
27
30
  # 大单同步表
28
31
  BIG_DEAL_NAME = "ths_big_deal_fund"
29
32
  # 大单选择表
@@ -151,7 +154,6 @@ COMPANY_HOLDING_INFO = 'company_holding_info'
151
154
  # 公司业务组成
152
155
  COMPANY_BUSINESS_INFO = 'company_business_info'
153
156
 
154
-
155
157
  # 公司公告信息
156
158
  COMPANY_ANNOUNCE_INFO = 'company_announce_info'
157
159
 
@@ -1,3 +1,3 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns-common
3
- Version: 1.5.1.6
3
+ Version: 1.5.1.8
@@ -6,25 +6,7 @@ mns_common.egg-info/SOURCES.txt
6
6
  mns_common.egg-info/dependency_links.txt
7
7
  mns_common.egg-info/top_level.txt
8
8
  mns_common/api/__init__.py
9
- mns_common/api/akshare/__init__.py
10
- mns_common/api/akshare/k_line_api.py
11
- mns_common/api/akshare/stock_bid_ask_api.py
12
- mns_common/api/akshare/stock_dt_pool.py
13
- mns_common/api/akshare/stock_zb_pool.py
14
- mns_common/api/akshare/stock_zt_pool_api.py
15
- mns_common/api/akshare/yjyg_sync_api.py
16
9
  mns_common/api/em/__init__.py
17
- mns_common/api/em/concept/__init__.py
18
- mns_common/api/em/concept/em_concept_index_api.py
19
- mns_common/api/em/gd/__init__.py
20
- mns_common/api/em/gd/east_money_stock_gdfx_free_top_10_api.py
21
- mns_common/api/em/real_time/__init__.py
22
- mns_common/api/em/real_time/east_money_debt_api.py
23
- mns_common/api/em/real_time/east_money_etf_api.py
24
- mns_common/api/em/real_time/east_money_stock_a_api.py
25
- mns_common/api/em/real_time/east_money_stock_a_v2_api.py
26
- mns_common/api/em/real_time/east_money_stock_hk_api.py
27
- mns_common/api/em/real_time/east_money_stock_us_api.py
28
10
  mns_common/api/hk/__init__.py
29
11
  mns_common/api/hk/ths_hk_company_info_api.py
30
12
  mns_common/api/k_line/__init__.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='mns_common',
5
- version='1.5.1.6',
5
+ version='1.5.1.8',
6
6
  # packages=["mns_common", "mns_common.api",
7
7
  # "mns_common.api.akshare",
8
8
  # "mns_common.api.em",
@@ -1,123 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 14
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
- import requests
9
- import pandas as pd
10
- import mns_common.component.common_service_fun_api as common_service_fun_api
11
- from datetime import datetime
12
- import numpy as np
13
-
14
-
15
- def stock_zh_a_hist(
16
- symbol: str = "0.000001",
17
- period: str = 'daily',
18
- start_date: str = "19700101",
19
- end_date: str = "22220101",
20
- adjust: str = "",
21
- proxies: str = None
22
- ) -> pd.DataFrame:
23
- """
24
- 东方财富网-行情首页-沪深京 A 股-每日行情
25
- http://quote.eastmoney.com/concept/sh603777.html?from=classic
26
- :param symbol: 股票代码
27
- :type symbol: str
28
- :param period: choice of {'daily', 'weekly', 'monthly'}
29
- :type period: str
30
- :param start_date: 开始日期
31
- :type start_date: str
32
- :param end_date: 结束日期
33
- :type end_date: str
34
- :param adjust: choice of {"qfq": "前复权", "hfq": "后复权", "": "不复权"}
35
- :type adjust: str
36
- :param proxies: 代理ip
37
- :type proxies: str
38
-
39
- :return: 每日行情
40
- :rtype: pandas.DataFrame
41
- """
42
- adjust_dict = {"qfq": "1", "hfq": "2", "": "0"}
43
- period_dict = {'daily': '101', 'weekly': '102', 'monthly': '103'}
44
- url = "http://push2his.eastmoney.com/api/qt/stock/kline/get"
45
- now_date = datetime.now()
46
- now_time = int(now_date.timestamp() * 1000)
47
- now_time = str(now_time)
48
-
49
- params = {
50
- "fields1": "f1,f2,f3,f4,f5,f6",
51
- "fields2": "f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f116",
52
- "ut": "7eea3edcaed734bea9cbfc24409ed989",
53
- "klt": period_dict[period],
54
- "fqt": adjust_dict[adjust],
55
- "secid": symbol,
56
- "beg": "0",
57
- "end": "20500000",
58
- "_": now_time,
59
- }
60
-
61
- if proxies is None:
62
- r = requests.get(url, params=params)
63
- else:
64
- r = requests.get(url, params=params, proxies=proxies)
65
-
66
- data_json = r.json()
67
- temp_df = pd.DataFrame([item.split(",") for item in data_json["data"]["klines"]])
68
- temp_df.columns = [
69
- "date",
70
- "open",
71
- "close",
72
- "high",
73
- "low",
74
- "volume",
75
- "amount",
76
- "pct_chg",
77
- "chg",
78
- "change",
79
- "exchange",
80
- ]
81
-
82
- temp_df['date'] = temp_df['date'].apply(
83
- lambda x: x.replace("-", ""))
84
- temp_df.index = temp_df["date"]
85
- temp_df = temp_df[start_date:end_date]
86
- temp_df.reset_index(inplace=True, drop=True)
87
- temp_df['open'] = pd.to_numeric(temp_df['open'])
88
- temp_df['close'] = pd.to_numeric(temp_df['close'])
89
- temp_df['high'] = pd.to_numeric(temp_df['high'])
90
- temp_df['low'] = pd.to_numeric(temp_df['low'])
91
- temp_df['volume'] = pd.to_numeric(temp_df['volume'])
92
- temp_df['amount'] = pd.to_numeric(temp_df['amount'])
93
- temp_df['pct_chg'] = pd.to_numeric(temp_df['pct_chg'])
94
- temp_df['chg'] = pd.to_numeric(temp_df['chg'])
95
- temp_df['change'] = pd.to_numeric(temp_df['change'])
96
- temp_df['exchange'] = pd.to_numeric(temp_df['exchange'])
97
-
98
- temp_df['symbol'] = symbol
99
- temp_df['_id'] = temp_df['symbol'] + '-' + temp_df['date']
100
- temp_df['last_price'] = round(((temp_df['close']) / (1 + temp_df['chg'] / 100)), 2)
101
- temp_df['max_chg'] = round(
102
- ((temp_df['high'] - temp_df['last_price']) / temp_df['last_price']) * 100, 2)
103
- temp_df['amount_level'] = round((temp_df['amount'] / common_service_fun_api.HUNDRED_MILLION), 2)
104
- temp_df['flow_mv'] = round(temp_df['amount'] * 100 / temp_df['exchange'], 2)
105
- temp_df['flow_mv_sp'] = round(temp_df['flow_mv'] / common_service_fun_api.HUNDRED_MILLION, 2)
106
-
107
- temp_df.replace([np.inf, -np.inf], 0, inplace=True)
108
- temp_df.fillna(0, inplace=True)
109
- return temp_df
110
-
111
-
112
- import mns_common.component.proxies.proxy_common_api as proxy_common_api
113
-
114
- if __name__ == '__main__':
115
- while True:
116
- proxy_ip = proxy_common_api.get_proxy_ip(5)
117
- df = stock_zh_a_hist("0.000001",
118
- 'daily',
119
- "19700101",
120
- "22220101",
121
- "",
122
- proxy_ip)
123
- print(df)
@@ -1,94 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 7
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
- import pandas as pd
9
- import requests
10
-
11
-
12
- def stock_bid_ask_em(symbol: str = "000001") -> pd.DataFrame:
13
- """
14
- 东方财富-行情报价
15
- https://quote.eastmoney.com/sz000001.html
16
- :param symbol: 股票代码
17
- :type symbol: str
18
- :return: 行情报价
19
- :rtype: pandas.DataFrame
20
- """
21
- url = "https://push2.eastmoney.com/api/qt/stock/get"
22
- params = {
23
- "fltt": "2",
24
- "invt": "2",
25
- "fields": "f120,f121,f122,f174,f175,f59,f163,f43,f57,f58,f169,f170,f46,f44,f51,"
26
- "f168,f47,f164,f116,f60,f45,f52,f50,f48,f167,f117,f71,f161,f49,f530,"
27
- "f135,f136,f137,f138,f139,f141,f142,f144,f145,f147,f148,f140,f143,f146,"
28
- "f149,f55,f62,f162,f92,f173,f104,f105,f84,f85,f183,f184,f185,f186,f187,"
29
- "f188,f189,f190,f191,f192,f107,f111,f86,f177,f78,f110,f262,f263,f264,f267,"
30
- "f268,f255,f256,f257,f258,f127,f199,f128,f198,f259,f260,f261,f171,f277,f278,"
31
- "f279,f288,f152,f250,f251,f252,f253,f254,f269,f270,f271,f272,f273,f274,f275,"
32
- "f276,f265,f266,f289,f290,f286,f285,f292,f293,f294,f295",
33
-
34
- "secid": symbol,
35
- }
36
- r = requests.get(url, params=params)
37
- data_json = r.json()
38
- tick_dict = {
39
- "now_price": data_json["data"]["f43"],
40
- "dt_price": data_json["data"]["f52"],
41
- "zt_price": data_json["data"]["f51"],
42
- "wei_bi": data_json["data"]["f191"],
43
- "sell_5": data_json["data"]["f31"],
44
- "sell_5_vol": data_json["data"]["f32"] * 100,
45
- "sell_4": data_json["data"]["f33"],
46
- "sell_4_vol": data_json["data"]["f34"] * 100,
47
- "sell_3": data_json["data"]["f35"],
48
- "sell_3_vol": data_json["data"]["f36"] * 100,
49
- "sell_2": data_json["data"]["f37"],
50
- "sell_2_vol": data_json["data"]["f38"] * 100,
51
- "sell_1": data_json["data"]["f39"],
52
- "sell_1_vol": data_json["data"]["f40"] * 100,
53
- "buy_1": data_json["data"]["f19"],
54
- "buy_1_vol": data_json["data"]["f20"] * 100,
55
- "buy_2": data_json["data"]["f17"],
56
- "buy_2_vol": data_json["data"]["f18"] * 100,
57
- "buy_3": data_json["data"]["f15"],
58
- "buy_3_vol": data_json["data"]["f16"] * 100,
59
- "buy_4": data_json["data"]["f13"],
60
- "buy_4_vol": data_json["data"]["f14"] * 100,
61
- "buy_5": data_json["data"]["f11"],
62
- "buy_5_vol": data_json["data"]["f12"] * 100,
63
- }
64
- temp_df = pd.DataFrame(tick_dict, index=[1])
65
- temp_df.reset_index(inplace=True)
66
- temp_df.loc[temp_df['wei_bi'] == '-', 'wei_bi'] = 0
67
- temp_df.loc[temp_df['sell_5_vol'] == '-', 'sell_5_vol'] = 0
68
- temp_df.loc[temp_df['sell_5'] == '-', 'sell_5'] = 0
69
- temp_df.loc[temp_df['sell_4_vol'] == '-', 'sell_4_vol'] = 0
70
- temp_df.loc[temp_df['sell_4'] == '-', 'sell_4'] = 0
71
- temp_df.loc[temp_df['sell_3_vol'] == '-', 'sell_3_vol'] = 0
72
- temp_df.loc[temp_df['sell_3'] == '-', 'sell_3'] = 0
73
- temp_df.loc[temp_df['sell_2_vol'] == '-', 'sell_2_vol'] = 0
74
- temp_df.loc[temp_df['sell_2'] == '-', 'sell_2'] = 0
75
- temp_df.loc[temp_df['sell_1_vol'] == '-', 'sell_1_vol'] = 0
76
- temp_df.loc[temp_df['sell_1'] == '-', 'sell_1'] = 0
77
- temp_df.loc[temp_df['buy_1_vol'] == '-', 'buy_1_vol'] = 0
78
- temp_df.loc[temp_df['buy_1'] == '-', 'buy_1'] = 0
79
- temp_df.loc[temp_df['buy_2_vol'] == '-', 'buy_2_vol'] = 0
80
- temp_df.loc[temp_df['buy_2'] == '-', 'buy_2'] = 0
81
- temp_df.loc[temp_df['buy_3_vol'] == '-', 'buy_3_vol'] = 0
82
- temp_df.loc[temp_df['buy_3'] == '-', 'buy_3'] = 0
83
- temp_df.loc[temp_df['buy_4_vol'] == '-', 'buy_4_vol'] = 0
84
- temp_df.loc[temp_df['buy_4'] == '-', 'buy_4'] = 0
85
- temp_df.loc[temp_df['buy_5_vol'] == '-', 'buy_5_vol'] = 0
86
- temp_df.loc[temp_df['buy_5'] == '-', 'buy_5'] = 0
87
- temp_df['symbol'] = symbol
88
- return temp_df
89
-
90
-
91
- if __name__ == '__main__':
92
- while True:
93
- df = stock_bid_ask_em('0.000001')
94
- print(df)
@@ -1,47 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 14
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
- import akshare as ak
9
- from loguru import logger
10
- import mns_common.utils.data_frame_util as data_frame_util
11
- import mns_common.utils.date_handle_util as date_handle_util
12
-
13
-
14
- def stock_em_dt_pool_df(date):
15
- try:
16
- date = date_handle_util.no_slash_date(date)
17
- stock_dt_pool_df = ak.stock_zt_pool_dtgc_em(date)
18
- if data_frame_util.is_empty(stock_dt_pool_df):
19
- return None
20
- stock_dt_pool_df.rename(columns={"序号": "index",
21
- "代码": "symbol",
22
- "名称": "name",
23
- "涨跌幅": "chg",
24
- "最新价": "now_price",
25
- "成交额": "amount",
26
- "流通市值": "flow_mv",
27
- "总市值": "total_mv",
28
- "动态市盈率": "ttm_pe",
29
- "换手率": "exchange",
30
- "封单资金": "closure_funds",
31
- "最后封板时间": "last_closure_time",
32
- "板上成交额": "plates_deal",
33
- "连续跌停": "connected_boards_numbers",
34
- "开板次数": "frying_plates_numbers",
35
- "所属行业": "industry"
36
- }, inplace=True)
37
- stock_dt_pool_df.loc[stock_dt_pool_df['amount'] == '-', 'amount'] = 0
38
- stock_dt_pool_df.loc[stock_dt_pool_df['exchange'] == '-', 'exchange'] = 0
39
- stock_dt_pool_df.loc[stock_dt_pool_df['closure_funds'] == '-', 'closure_funds'] = 0
40
- return stock_dt_pool_df
41
- except BaseException as e:
42
- logger.error("同步股票跌停数据出现异常:{},{}", date, e)
43
- return None
44
-
45
-
46
- if __name__ == '__main__':
47
- stock_em_dt_pool_df('20231215')
@@ -1,48 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 14
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
- import akshare as ak
9
- from loguru import logger
10
- import mns_common.utils.data_frame_util as data_frame_util
11
- import mns_common.utils.date_handle_util as date_handle_util
12
-
13
-
14
- def stock_zb_pool_df(date):
15
- try:
16
- date = date_handle_util.no_slash_date(date)
17
- stock_zb_pool = ak.stock_zt_pool_zbgc_em(date)
18
- if data_frame_util.is_empty(stock_zb_pool):
19
- return None
20
- stock_zb_pool.rename(columns={"序号": "index",
21
- "代码": "symbol",
22
- "名称": "name",
23
- "涨跌幅": "chg",
24
- "最新价": "now_price",
25
- "炸板股价": "zt_price",
26
- "成交额": "amount",
27
- "流通市值": "flow_mv",
28
- "总市值": "total_mv",
29
- "动态市盈率": "ttm_pe",
30
- "换手率": "exchange",
31
- "涨速": "speed",
32
- "首次封板时间": "first_closure_time",
33
- "炸板次数": "frying_plates_numbers",
34
- "炸板股统计": "statistics",
35
- "振幅": "pct_chg",
36
- "所属行业": "industry"
37
- }, inplace=True)
38
- stock_zb_pool.loc[stock_zb_pool['amount'] == '-', 'amount'] = 0
39
- stock_zb_pool.loc[stock_zb_pool['exchange'] == '-', 'exchange'] = 0
40
- return stock_zb_pool
41
- except BaseException as e:
42
- logger.error("同步股票炸板数据出现异常:{},{}", date, e)
43
- return None
44
-
45
-
46
- if __name__ == '__main__':
47
- df = stock_zb_pool_df('2024-09-04')
48
- print(df)
@@ -1,47 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 14
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
- import akshare as ak
9
- from loguru import logger
10
- import mns_common.utils.date_handle_util as date_handle_util
11
-
12
-
13
- def stock_em_zt_pool_df(date):
14
- try:
15
- date = date_handle_util.no_slash_date(date)
16
- zt_df = ak.stock_zt_pool_em(date)
17
- if zt_df is None or zt_df.shape[0] == 0:
18
- return None
19
- zt_df.rename(columns={"序号": "index",
20
- "代码": "symbol",
21
- "名称": "name",
22
- "最新价": "now_price",
23
- "涨跌幅": "chg",
24
- "成交额": "amount",
25
- "流通市值": "flow_mv",
26
- "总市值": "total_mv",
27
- "换手率": "exchange",
28
- "封板资金": "closure_funds",
29
- "首次封板时间": "first_closure_time",
30
- "最后封板时间": "last_closure_time",
31
- "炸板次数": "frying_plates_numbers",
32
- "涨停统计": "statistics",
33
- "连板数": "connected_boards_numbers",
34
- "所属行业": "industry"
35
- }, inplace=True)
36
- zt_df.loc[zt_df['amount'] == '-', 'amount'] = 0
37
- zt_df.loc[zt_df['exchange'] == '-', 'exchange'] = 0
38
- zt_df.loc[zt_df['closure_funds'] == '-', 'closure_funds'] = 0
39
- return zt_df
40
- except BaseException as e:
41
- logger.error("同步股票涨停数据出现异常:{},{}", date, e)
42
- return None
43
-
44
-
45
- if __name__ == '__main__':
46
- df = stock_em_zt_pool_df('2025-10-24')
47
- print(df)
@@ -1,98 +0,0 @@
1
- import sys
2
- import os
3
- import akshare as ak
4
- from mns_common.db.MongodbUtil import MongodbUtil
5
- import mns_common.utils.data_frame_util as data_frame_util
6
- import pandas as pd
7
- from datetime import datetime
8
-
9
- file_path = os.path.abspath(__file__)
10
- end = file_path.index('mns') + 14
11
- project_path = file_path[0:end]
12
- sys.path.append(project_path)
13
- mongodb_util = MongodbUtil('27017')
14
-
15
- predictor_translation_map = {
16
- "主营业务收入": "main_operating_revenue",
17
- "净利润": "net_profit",
18
- "归属于上市公司股东的净利润": "net_profit_attributable_to_shareholders",
19
- "扣除后营业收入": "operating_revenue_deducted",
20
- "扣除非经常性损益后的净利润": "net_profit_excluding_non_recurring_items",
21
- "扣非后每股收益": "earnings_per_share_excluding_non_recurring_items",
22
- "每股收益": "earnings_per_share",
23
- "营业收入": "operating_revenue",
24
- "非经常性损益": "non_recurring_items"
25
- }
26
- # ['net_profit', 'net_profit_attributable_to_shareholders', 'net_profit_excluding_non_recurring_items',
27
- # 'earnings_per_share_excluding_non_recurring_items', 'earnings_per_share']
28
- predict_type_translation_map = {
29
- "不确定": "uncertain",
30
- "减亏": "loss_reduction",
31
- "增亏": "increased_loss",
32
- "扭亏": "turnaround",
33
- "略减": "slight_decrease",
34
- "略增": "slight_increase",
35
- "续亏": "continued_loss",
36
- "续盈": "continued_profit",
37
- "预减": "pre_loss",
38
- "预增": "pre_increase",
39
- "首亏": "first_loss"
40
- }
41
-
42
-
43
- # ['turnaround', 'slight_increase', 'continued_profit', 'pre_increase']
44
-
45
-
46
- def sync_yjyg_data(period):
47
- stock_yjyg_em_df = ak.stock_yjyg_em(date=period)
48
- if data_frame_util.is_empty(stock_yjyg_em_df):
49
- return None
50
- now_date = datetime.now()
51
- str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
52
- sync_day = now_date.strftime('%Y-%m-%d')
53
- stock_yjyg_em_df.rename(columns={"序号": "index",
54
- "股票代码": "symbol",
55
- "股票简称": "name",
56
- "预测指标": "predictor",
57
- "业绩变动": "perform_change_detail",
58
- "预测数值": "predicted_value",
59
- "业绩变动幅度": "perform_chg",
60
- "业绩变动原因": "perform_change_reason",
61
- "预告类型": "predict_type",
62
- "上年同期值": "last_year_period",
63
- "公告日期": "release_day"}, inplace=True)
64
-
65
- stock_yjyg_em_df['predictor_en'] = stock_yjyg_em_df['predictor'].map(lambda x: predictor_translation_map.get(x, x))
66
- stock_yjyg_em_df['predict_type_en'] = stock_yjyg_em_df['predict_type'].map(
67
- lambda x: predict_type_translation_map.get(x, x))
68
-
69
- stock_yjyg_em_df.loc[:, 'period'] = period
70
- stock_yjyg_em_df.loc[:, 'sync_day'] = sync_day
71
- stock_yjyg_em_df.loc[:, 'str_now_date'] = str_now_date
72
- stock_yjyg_em_df['release_day'] = pd.to_datetime(stock_yjyg_em_df['release_day'])
73
- stock_yjyg_em_df['release_day'] = stock_yjyg_em_df['release_day'].dt.strftime('%Y-%m-%d')
74
-
75
- stock_yjyg_em_df['perform_chg'].fillna(0, inplace=True)
76
- stock_yjyg_em_df['_id'] = stock_yjyg_em_df['symbol'] + '_' + period + '_' + stock_yjyg_em_df[
77
- 'predictor_en'] + '_' + stock_yjyg_em_df['predict_type_en']
78
- stock_yjyg_em_df = stock_yjyg_em_df[
79
- ['_id', 'symbol', 'name', 'predictor',
80
- 'predictor_en',
81
- 'perform_change_detail',
82
- 'predicted_value',
83
- 'perform_chg',
84
- 'perform_change_reason',
85
- 'predict_type',
86
- 'predict_type_en',
87
- 'last_year_period',
88
- 'release_day',
89
- 'period',
90
- 'sync_day',
91
- 'str_now_date',
92
- 'index']]
93
-
94
- mongodb_util.save_mongo(stock_yjyg_em_df, 'stock_yjyg_em_df')
95
-
96
-
97
- if __name__ == '__main__':
98
- sync_yjyg_data('20230630')