mns-scheduler 1.0.9.6__tar.gz → 1.1.0.1__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-scheduler might be problematic. Click here for more details.

Files changed (131) hide show
  1. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/PKG-INFO +1 -1
  2. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/big_deal/ths_big_deal_sync.py +1 -1
  3. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/company_info/company_info_sync_api.py +5 -9
  4. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/concept/clean/ths_concept_clean_api.py +2 -2
  5. mns-scheduler-1.1.0.1/mns_scheduler/concept/common/detaill/ths_concept_detail_api.py +196 -0
  6. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +2 -2
  7. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +2 -3
  8. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_by_ak_api.py +3 -3
  9. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/concept/ths/sync_new_index/sync_ths_new_concept_by_web_api.py +4 -5
  10. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +3 -4
  11. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/risk/major_violations/register_and_investigate_stock_sync_api.py +2 -2
  12. mns-scheduler-1.1.0.1/mns_scheduler/risk/self/__init__.py +0 -0
  13. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/risk/self/wei_pan_stock_api.py +2 -2
  14. mns-scheduler-1.1.0.1/mns_scheduler/risk/transactions/__init__.py +0 -0
  15. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zt/zt_pool/zt_pool_sync_api.py +1 -1
  16. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zz_task/data_sync_task.py +5 -7
  17. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler.egg-info/PKG-INFO +1 -1
  18. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler.egg-info/SOURCES.txt +3 -4
  19. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/setup.py +1 -1
  20. mns-scheduler-1.0.9.6/mns_scheduler/backup/app/ths_new_concept_sync_app.py +0 -122
  21. mns-scheduler-1.0.9.6/mns_scheduler/backup/wen_cai/wen_cai_concept_sync.py +0 -51
  22. mns-scheduler-1.0.9.6/mns_scheduler/zt/high_chg/__init__.py +0 -7
  23. mns-scheduler-1.0.9.6/mns_scheduler/zz_task/__init__.py +0 -7
  24. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/README.md +0 -0
  25. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/__init__.py +0 -0
  26. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/backup/__init__.py +0 -0
  27. {mns-scheduler-1.0.9.6/mns_scheduler/backup/app → mns-scheduler-1.1.0.1/mns_scheduler/backup/em}/__init__.py +0 -0
  28. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/backup/em/em_new_concept_his_sync.py +0 -0
  29. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/backup/em/em_new_concept_sync_common_api.py +0 -0
  30. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/backup/em/em_new_concept_sync_web.py +0 -0
  31. {mns-scheduler-1.0.9.6/mns_scheduler/backup/em → mns-scheduler-1.1.0.1/mns_scheduler/big_deal}/__init__.py +0 -0
  32. {mns-scheduler-1.0.9.6/mns_scheduler/backup/wen_cai → mns-scheduler-1.1.0.1/mns_scheduler/company_info}/__init__.py +0 -0
  33. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/company_info/company_constant_data.py +0 -0
  34. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/company_info/de_list_stock_service.py +0 -0
  35. {mns-scheduler-1.0.9.6/mns_scheduler/big_deal → mns-scheduler-1.1.0.1/mns_scheduler/concept}/__init__.py +0 -0
  36. {mns-scheduler-1.0.9.6/mns_scheduler/company_info → mns-scheduler-1.1.0.1/mns_scheduler/concept/clean}/__init__.py +0 -0
  37. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/concept/clean/kpl_concept_clean_api.py +0 -0
  38. {mns-scheduler-1.0.9.6/mns_scheduler/risk/compliance → mns-scheduler-1.1.0.1/mns_scheduler/concept/common}/__init__.py +0 -0
  39. {mns-scheduler-1.0.9.6/mns_scheduler/risk/financial → mns-scheduler-1.1.0.1/mns_scheduler/concept/common/detaill}/__init__.py +0 -0
  40. {mns-scheduler-1.0.9.6/mns_scheduler/concept → mns-scheduler-1.1.0.1/mns_scheduler/concept/ths}/__init__.py +0 -0
  41. {mns-scheduler-1.0.9.6/mns_scheduler/concept/clean → mns-scheduler-1.1.0.1/mns_scheduler/concept/ths/common}/__init__.py +0 -0
  42. {mns-scheduler-1.0.9.6/mns_scheduler/concept/ths → mns-scheduler-1.1.0.1/mns_scheduler/concept/ths/sync_new_index}/__init__.py +0 -0
  43. {mns-scheduler-1.0.9.6/mns_scheduler/concept/ths/common → mns-scheduler-1.1.0.1/mns_scheduler/concept/ths/update_concept_info}/__init__.py +0 -0
  44. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +0 -0
  45. {mns-scheduler-1.0.9.6/mns_scheduler/concept/ths/sync_new_index → mns-scheduler-1.1.0.1/mns_scheduler/db}/__init__.py +0 -0
  46. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/db/col_move_service.py +0 -0
  47. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/db/db_status.py +0 -0
  48. {mns-scheduler-1.0.9.6/mns_scheduler/concept/ths/update_concept_info → mns-scheduler-1.1.0.1/mns_scheduler/dt}/__init__.py +0 -0
  49. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
  50. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/finance/__init__.py +0 -0
  51. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/finance/em_financial_asset_liability_sync_service_api.py +0 -0
  52. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/finance/em_financial_profit_sync_service_api.py +0 -0
  53. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/finance/finance_common_api.py +0 -0
  54. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/finance/sync_financial_report_service_api.py +0 -0
  55. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/hk/__init__.py +0 -0
  56. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/hk/hk_company_info_sync_service_api.py +0 -0
  57. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/irm/__init__.py +0 -0
  58. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/irm/api/__init__.py +0 -0
  59. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py +0 -0
  60. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py +0 -0
  61. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/irm/stock_irm_cninfo_service.py +0 -0
  62. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/k_line/__init__.py +0 -0
  63. {mns-scheduler-1.0.9.6/mns_scheduler/db → mns-scheduler-1.1.0.1/mns_scheduler/k_line/clean}/__init__.py +0 -0
  64. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/k_line/clean/daily/__init__.py +0 -0
  65. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py +0 -0
  66. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/k_line/clean/daily/daily_k_line_service.py +0 -0
  67. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py +0 -0
  68. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/k_line/clean/k_line_info_clean_task.py +0 -0
  69. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/k_line/clean/week_month/__init__.py +0 -0
  70. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py +0 -0
  71. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py +0 -0
  72. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/k_line/hot_stocks/__init__.py +0 -0
  73. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py +0 -0
  74. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/k_line/sync/__init__.py +0 -0
  75. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/k_line/sync/daily_week_month_line_sync.py +0 -0
  76. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/k_line/test/__init__.py +0 -0
  77. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/k_line/test/k_line_info_clean_his_data.py +0 -0
  78. {mns-scheduler-1.0.9.6/mns_scheduler/dt → mns-scheduler-1.1.0.1/mns_scheduler/kpl}/__init__.py +0 -0
  79. {mns-scheduler-1.0.9.6/mns_scheduler/k_line/clean → mns-scheduler-1.1.0.1/mns_scheduler/kpl/selection}/__init__.py +0 -0
  80. {mns-scheduler-1.0.9.6/mns_scheduler/kpl → mns-scheduler-1.1.0.1/mns_scheduler/kpl/selection/index}/__init__.py +0 -0
  81. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +0 -0
  82. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
  83. {mns-scheduler-1.0.9.6/mns_scheduler/kpl/selection → mns-scheduler-1.1.0.1/mns_scheduler/kpl/selection/symbol}/__init__.py +0 -0
  84. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +0 -0
  85. {mns-scheduler-1.0.9.6/mns_scheduler/kpl/selection/index → mns-scheduler-1.1.0.1/mns_scheduler/kpl/selection/total}/__init__.py +0 -0
  86. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +0 -0
  87. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/lhb/__init__.py +0 -0
  88. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/lhb/stock_lhb_sync_service.py +0 -0
  89. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/open/__init__.py +0 -0
  90. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/open/sync_one_day_open_data_to_db_service.py +0 -0
  91. {mns-scheduler-1.0.9.6/mns_scheduler/kpl/selection/symbol → mns-scheduler-1.1.0.1/mns_scheduler/real_time}/__init__.py +0 -0
  92. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/real_time/realtime_quotes_now_create_db_index.py +0 -0
  93. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/real_time/realtime_quotes_now_sync.py +0 -0
  94. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/risk/__init__.py +0 -0
  95. {mns-scheduler-1.0.9.6/mns_scheduler/risk/major_violations → mns-scheduler-1.1.0.1/mns_scheduler/risk/compliance}/__init__.py +0 -0
  96. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/risk/compliance/undisclosed_annual_report_api.py +0 -0
  97. {mns-scheduler-1.0.9.6/mns_scheduler/risk/self → mns-scheduler-1.1.0.1/mns_scheduler/risk/financial}/__init__.py +0 -0
  98. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/risk/financial/annual_report_audit_check_api.py +0 -0
  99. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/risk/financial/net_assets_check_api.py +0 -0
  100. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/risk/financial/profit_income_check_api.py +0 -0
  101. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py +0 -0
  102. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/risk/financial_report_risk_check_api.py +0 -0
  103. {mns-scheduler-1.0.9.6/mns_scheduler/risk/transactions → mns-scheduler-1.1.0.1/mns_scheduler/risk/major_violations}/__init__.py +0 -0
  104. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/risk/test/__init__.py +0 -0
  105. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/risk/test/fix_blask_list.py +0 -0
  106. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/risk/transactions/transactions_check_api.py +0 -0
  107. {mns-scheduler-1.0.9.6/mns_scheduler/kpl/selection/total → mns-scheduler-1.1.0.1/mns_scheduler/trade}/__init__.py +0 -0
  108. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/trade/auto_ipo_buy_api.py +0 -0
  109. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/trade/auto_sell_service_api.py +0 -0
  110. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/trade/sync_position_api.py +0 -0
  111. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zb/__init__.py +0 -0
  112. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zb/stock_zb_pool_sync.py +0 -0
  113. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zt/__init__.py +0 -0
  114. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zt/connected_boards/__init__.py +0 -0
  115. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zt/connected_boards/zt_five_boards_sync_api.py +0 -0
  116. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zt/export/__init__.py +0 -0
  117. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zt/export/export_kcx_high_chg_open_data_to_excel.py +0 -0
  118. {mns-scheduler-1.0.9.6/mns_scheduler/real_time → mns-scheduler-1.1.0.1/mns_scheduler/zt/high_chg}/__init__.py +0 -0
  119. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zt/high_chg/sync_high_chg_pool_service.py +0 -0
  120. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zt/high_chg/sync_high_chg_real_time_quotes_service.py +0 -0
  121. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zt/open_data/__init__.py +0 -0
  122. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zt/open_data/kcx_high_chg_open_data_sync.py +0 -0
  123. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zt/script/__init__.py +0 -0
  124. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py +0 -0
  125. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zt/script/sync_high_chg_pool_his_data.py +0 -0
  126. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zt/zt_pool/__init__.py +0 -0
  127. {mns-scheduler-1.0.9.6/mns_scheduler/trade → mns-scheduler-1.1.0.1/mns_scheduler/zz_task}/__init__.py +0 -0
  128. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler/zz_task/sync_realtime_quotes_task.py +0 -0
  129. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler.egg-info/dependency_links.txt +0 -0
  130. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/mns_scheduler.egg-info/top_level.txt +0 -0
  131. {mns-scheduler-1.0.9.6 → mns-scheduler-1.1.0.1}/setup.cfg +0 -0
@@ -1,3 +1,3 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns-scheduler
3
- Version: 1.0.9.6
3
+ Version: 1.1.0.1
@@ -10,7 +10,7 @@ from datetime import datetime, time, timedelta
10
10
  from loguru import logger
11
11
  import mns_common.utils.data_frame_util as data_frame_util
12
12
  from mns_common.db.MongodbUtil import MongodbUtil
13
- import mns_common.api.ths.ths_big_deal_api as ths_big_deal_api
13
+ import mns_common.api.ths.big_deal.ths_big_deal_api as ths_big_deal_api
14
14
  import time as sleep_time
15
15
  import mns_common.constant.db_name_constant as db_name_constant
16
16
 
@@ -9,7 +9,7 @@ sys.path.append(project_path)
9
9
  from datetime import datetime
10
10
  import pandas as pd
11
11
  from loguru import logger
12
- import mns_common.api.ths.ths_stock_api as ths_stock_api
12
+ import mns_common.api.ths.concept.web.ths_company_info_web as ths_company_info_web
13
13
  import mns_common.api.em.east_money_stock_v2_api as east_money_stock_v2_api
14
14
  import mns_scheduler.company_info.company_constant_data as company_constant_data_api
15
15
  import mns_common.component.common_service_fun_api as common_service_fun_api
@@ -21,6 +21,7 @@ import mns_common.api.kpl.constant.kpl_constant as kpl_constant
21
21
  import mns_common.component.company.company_common_service_api as company_common_service_api
22
22
  import mns_common.component.k_line.common.k_line_common_service_api as k_line_common_service_api
23
23
  import mns_common.constant.db_name_constant as db_name_constant
24
+ import mns_scheduler.concept.common.detaill.ths_concept_detail_api as ths_concept_detail_api
24
25
 
25
26
  mongodb_util = MongodbUtil('27017')
26
27
  # 分页大小
@@ -187,7 +188,7 @@ def fix_company_industry(symbol):
187
188
 
188
189
  try:
189
190
  # 次新股
190
- sub_stock = ths_stock_api.ths_stock_concept('885598')
191
+ sub_stock = ths_concept_detail_api.get_ths_concept_detail('885598', None)
191
192
  sub_stock_symbol_list = list(sub_stock['symbol'])
192
193
  except BaseException as e:
193
194
  logger.error("出现异常:{},{}", symbol, e)
@@ -272,7 +273,7 @@ def single_thread_sync_company_info(east_money_stock_info,
272
273
  fail_list = []
273
274
  for company_one in east_money_stock_info.itertuples():
274
275
  try:
275
- company_info_type = ths_stock_api.get_company_info_detail(company_one.symbol)
276
+ company_info_type = ths_company_info_web.get_company_info_detail(company_one.symbol)
276
277
  company_info_type['first_industry_code'] = company_info_type['hycode'].apply(
277
278
  lambda x: x[1:3] + '0000')
278
279
  company_info_type['second_industry_code'] = company_info_type['hy2code'].apply(
@@ -502,11 +503,6 @@ def get_recent_year_income(symbol, company_info_type):
502
503
 
503
504
 
504
505
  if __name__ == '__main__':
505
- # while True:
506
- # df = ths_stock_api.get_company_info_detail('000001')
507
- # print(df)
508
- # company_info_update()
509
- # company_info_type = ths_stock_api.get_company_info_detail('836699')
510
506
  # sync_company_base_info()
511
507
  # fix_company_industry()
512
508
  # calculate_circu_ratio("601069")
@@ -514,6 +510,6 @@ if __name__ == '__main__':
514
510
  # 300293
515
511
  # sync_company_base_info(None)
516
512
  # new_company_info_update()
517
- sync_company_base_info(['920002'])
513
+ sync_company_base_info(None)
518
514
  fix_company_industry(None)
519
515
  # group_by_industry()
@@ -7,7 +7,7 @@ project_path = file_path[0:end]
7
7
  sys.path.append(project_path)
8
8
  from mns_common.db.MongodbUtil import MongodbUtil
9
9
  import pandas as pd
10
- import mns_common.api.ths.ths_stock_api as ths_stock_api
10
+ import mns_scheduler.concept.common.detaill.ths_concept_detail_api as ths_concept_detail_api
11
11
  import time
12
12
  from loguru import logger
13
13
  import mns_common.component.company.company_common_service_api as company_common_service_api
@@ -86,7 +86,7 @@ def update_null_name():
86
86
  exist_url = concept_one.url
87
87
 
88
88
  if name == '':
89
- concept_name = ths_stock_api.get_concept_name(concept_code)
89
+ concept_name = ths_concept_detail_api.get_ths_concept_detail(concept_code, None)
90
90
  query_concept = {"symbol": concept_code}
91
91
  new_values = {'$set': {"name": concept_name}}
92
92
  mongodb_util.update_one_query(query_concept, new_values, 'ths_concept_list')
@@ -0,0 +1,196 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 17
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
8
+ import mns_common.component.concept.ths_concept_common_service_api as ths_concept_common_service_api
9
+ import mns_common.component.common_service_fun_api as common_service_fun_api
10
+ import mns_common.api.ths.concept.app.ths_concept_detail_app as ths_concept_detail_app
11
+ import mns_common.api.ths.wen_cai.ths_wen_cai_api as ths_wen_cai_api
12
+ import mns_common.api.em.east_money_stock_api as east_money_stock_api
13
+ import mns_common.component.company.company_common_service_new_api as company_common_service_new_api
14
+ import mns_common.api.ths.concept.web.ths_concept_detail_web as ths_concept_detail_web
15
+ import math
16
+ from loguru import logger
17
+ import pandas as pd
18
+ import mns_common.utils.data_frame_util as data_frame_util
19
+
20
+
21
+ def get_ths_concept_detail(concept_code, concept_name):
22
+ real_time_quotes_all_stocks = east_money_stock_api.get_real_time_quotes_all_stocks()
23
+ # 1 通过入选理获取概念组成股票详情
24
+ ths_concept_detail_by_explain = get_ths_concept_detail_by_explain(concept_code, real_time_quotes_all_stocks)
25
+ # 2 app 分享链接获取概念组成详情
26
+ ths_concept_detail_from_app = get_ths_concept_detail_from_app(concept_code, real_time_quotes_all_stocks)
27
+ # 3 通过问财
28
+ if concept_name is None or data_frame_util.is_string_empty(concept_name):
29
+ ths_concept_list = ths_concept_common_service_api.get_all_ths_concept()
30
+ ths_concept_one_df = ths_concept_list.loc[
31
+ (ths_concept_list['symbol'] == int(concept_code))
32
+ | (ths_concept_list['web_concept_code'] == int(concept_code))]
33
+ if data_frame_util.is_not_empty(ths_concept_one_df):
34
+ concept_name = list(ths_concept_one_df['name'])[0]
35
+ if data_frame_util.is_string_not_empty(concept_name) and concept_name is not None:
36
+ concept_detail_by_wen_cai_df = get_ths_concept_detail_by_wen_cai(concept_name, real_time_quotes_all_stocks)
37
+ else:
38
+ concept_detail_by_wen_cai_df = None
39
+ # 4 通过web端
40
+ ths_concept_detail_from_web_df = get_ths_concept_detail_from_web(concept_code, real_time_quotes_all_stocks)
41
+ # 判断是否都为空
42
+ all_are_none = all(
43
+ df is None for df in [ths_concept_detail_by_explain, ths_concept_detail_from_app,
44
+ concept_detail_by_wen_cai_df, ths_concept_detail_from_web_df])
45
+ if all_are_none:
46
+ return None
47
+ result_df = pd.concat([ths_concept_detail_by_explain, ths_concept_detail_from_app,
48
+ concept_detail_by_wen_cai_df, ths_concept_detail_from_web_df])
49
+
50
+ result_df.drop_duplicates('symbol', keep='last', inplace=True)
51
+ if data_frame_util.is_not_empty(ths_concept_detail_by_explain):
52
+ ths_concept_detail_by_explain_new = ths_concept_detail_by_explain.loc[
53
+ ths_concept_detail_by_explain['symbol'].isin(result_df['symbol'])]
54
+
55
+ not_in_ths_concept_detail_by_explain = result_df.loc[~(
56
+ result_df['symbol'].isin(ths_concept_detail_by_explain['symbol']))]
57
+ result_df = pd.concat([ths_concept_detail_by_explain_new, not_in_ths_concept_detail_by_explain])
58
+ return result_df
59
+
60
+
61
+ # 通过入选理获取概念组成股票详情
62
+ def get_ths_concept_detail_by_explain(concept_code, real_time_quotes_all_stocks):
63
+ page_size = 800
64
+
65
+ de_list_symbols = company_common_service_new_api.get_de_list_company()
66
+ real_time_quotes_all_stocks = real_time_quotes_all_stocks.loc[
67
+ ~(real_time_quotes_all_stocks['symbol'].isin(de_list_symbols))]
68
+
69
+ max_page_number = math.ceil(real_time_quotes_all_stocks.shape[0] / page_size)
70
+ page = 0
71
+
72
+ result_df = None
73
+
74
+ while page < max_page_number:
75
+ try:
76
+
77
+ begin_index = page * page_size
78
+ end_index = (page + 1) * page_size
79
+ page_df = real_time_quotes_all_stocks.iloc[begin_index: end_index]
80
+ code_list = ','.join(page_df['symbol'].astype(str))
81
+ all_ths_concept_detail = ths_concept_detail_app.get_concept_explain(concept_code, code_list)
82
+ if data_frame_util.is_empty(result_df) and data_frame_util.is_not_empty(all_ths_concept_detail):
83
+ result_df = all_ths_concept_detail
84
+ elif data_frame_util.is_not_empty(result_df) and data_frame_util.is_not_empty(all_ths_concept_detail):
85
+ result_df = pd.concat([all_ths_concept_detail, result_df])
86
+ except BaseException as e:
87
+ logger.error("通过ths概念入选理由列表获取详情异常:{},{}", concept_code, e)
88
+ page = page + 1
89
+ if data_frame_util.is_not_empty(result_df):
90
+ result_df = result_df[result_df['explain'].astype(str).str.len() > 0]
91
+ if data_frame_util.is_not_empty(result_df):
92
+ result_df = result_df.rename(columns={
93
+ "stockCode": "symbol",
94
+ "explain": "long"})
95
+ result_df = merge_data_common_fun(result_df, real_time_quotes_all_stocks)
96
+ return result_df
97
+ else:
98
+ return None
99
+
100
+
101
+ # 通过分享链接获取
102
+ def get_ths_concept_detail_from_app(concept_code, real_time_quotes_all_stocks):
103
+ ths_concept_detail_from_app = ths_concept_detail_app.get_ths_concept_detail_by_app(concept_code)
104
+ if data_frame_util.is_not_empty(ths_concept_detail_from_app):
105
+ ths_concept_detail_from_app['long'] = ''
106
+ ths_concept_detail_from_app = ths_concept_detail_from_app[[
107
+ 'symbol',
108
+ 'long'
109
+ ]]
110
+ ths_concept_detail_from_app = merge_data_common_fun(ths_concept_detail_from_app,
111
+ real_time_quotes_all_stocks)
112
+ return ths_concept_detail_from_app
113
+
114
+ else:
115
+ return None
116
+
117
+
118
+ # 3 通过问财
119
+ def get_ths_concept_detail_by_wen_cai(concept_name, real_time_quotes_all_stocks):
120
+ concept_detail_by_wen_cai_df = ths_wen_cai_api.get_concept_detail_by_wen_cai(concept_name)
121
+ if data_frame_util.is_not_empty(concept_detail_by_wen_cai_df):
122
+ concept_detail_by_wen_cai_df = concept_detail_by_wen_cai_df[[
123
+ 'symbol',
124
+ 'explain'
125
+ ]]
126
+
127
+ concept_detail_by_wen_cai_df = concept_detail_by_wen_cai_df.rename(columns={
128
+ "explain": "long"})
129
+ concept_detail_by_wen_cai_df = merge_data_common_fun(concept_detail_by_wen_cai_df,
130
+ real_time_quotes_all_stocks)
131
+
132
+ return concept_detail_by_wen_cai_df
133
+
134
+
135
+ # 通过web端 最近不可用
136
+ def get_ths_concept_detail_from_web(concept_code, real_time_quotes_all_stocks):
137
+ ths_concept_detail_from_web_df = ths_concept_detail_web.stock_board_cons_ths(concept_code)
138
+ if data_frame_util.is_not_empty(ths_concept_detail_from_web_df):
139
+ ths_concept_detail_from_web_df = ths_concept_detail_from_web_df[[
140
+ 'symbol'
141
+ ]]
142
+ ths_concept_detail_from_web_df['long'] = ''
143
+
144
+ ths_concept_detail_from_web_df = merge_data_common_fun(ths_concept_detail_from_web_df,
145
+ real_time_quotes_all_stocks)
146
+
147
+ return ths_concept_detail_from_web_df
148
+
149
+
150
+ def merge_data_common_fun(result_df, real_time_quotes_all_stocks):
151
+ real_time_quotes_ths_detail = real_time_quotes_all_stocks.loc[
152
+ real_time_quotes_all_stocks['symbol'].isin(result_df['symbol'])]
153
+ real_time_quotes_ths_detail = common_service_fun_api.total_mv_classification(real_time_quotes_ths_detail)
154
+ real_time_quotes_ths_detail = real_time_quotes_ths_detail[[
155
+ "symbol",
156
+ "name",
157
+ "now_price",
158
+ "chg",
159
+ "exchange",
160
+ "amount",
161
+ "flow_mv_sp",
162
+ "total_mv_sp"]]
163
+
164
+ query_field = {
165
+ "concept_name": 1,
166
+ "concept_code": 1,
167
+ "company_type": 1,
168
+ "concept_create_day": 1,
169
+ "first_relevance_industry": 1,
170
+ "second_relevance_industry": 1,
171
+ "industry": 1
172
+ }
173
+ query_field_key = str(query_field)
174
+ query_key = str({})
175
+ company_df = company_common_service_new_api.get_company_info_by_field(query_key, query_field_key)
176
+ company_ths_df = company_df.loc[company_df['_id'].isin(result_df['symbol'])]
177
+
178
+ result_df['short'] = result_df['long']
179
+ result_df = result_df.set_index(['symbol'], drop=True)
180
+ company_ths_df = company_ths_df.set_index(['_id'], drop=True)
181
+ real_time_quotes_ths_detail = real_time_quotes_ths_detail.set_index(['symbol'], drop=False)
182
+ result_df = pd.merge(real_time_quotes_ths_detail, result_df,
183
+ how='outer',
184
+ left_index=True, right_index=True)
185
+ result_df = pd.merge(result_df, company_ths_df,
186
+ how='outer',
187
+ left_index=True, right_index=True)
188
+ return result_df
189
+
190
+
191
+ if __name__ == '__main__':
192
+ get_ths_concept_detail('886073', '铜缆高速连接')
193
+ real_time_quotes_all_stocks_df = east_money_stock_api.get_real_time_quotes_all_stocks()
194
+ get_ths_concept_detail_from_web('886072', real_time_quotes_all_stocks_df)
195
+ get_ths_concept_detail_by_explain('886078', real_time_quotes_all_stocks_df)
196
+ get_ths_concept_detail_by_wen_cai('PCB概念', real_time_quotes_all_stocks_df)
@@ -2,7 +2,6 @@ import sys
2
2
  import os
3
3
 
4
4
  import pandas as pd
5
- import mns_common.api.ths.ths_stock_api as ths_stock_api
6
5
  from mns_common.db.MongodbUtil import MongodbUtil
7
6
  import mns_common.component.company.company_common_service_api as company_common_service_api
8
7
 
@@ -13,6 +12,7 @@ sys.path.append(project_path)
13
12
  mongodb_util = MongodbUtil('27017')
14
13
  import mns_common.api.msg.push_msg_api as push_msg_api
15
14
  import mns_scheduler.company_info.company_info_sync_api as company_info_sync_api
15
+ import mns_scheduler.concept.common.detaill.ths_concept_detail_api as ths_concept_detail_api
16
16
 
17
17
  max_concept_code = 886110
18
18
 
@@ -155,7 +155,7 @@ def update_company_info(new_concept_symbol_df):
155
155
 
156
156
 
157
157
  def get_concept_detail_info_web(concept_code):
158
- new_concept_symbol_list = ths_stock_api.ths_stock_concept(concept_code)
158
+ new_concept_symbol_list = ths_concept_detail_api.get_ths_concept_detail(concept_code, None)
159
159
  if new_concept_symbol_list is None or new_concept_symbol_list.shape[0] == 0:
160
160
  return None
161
161
  new_concept_symbol_list['_id'] = str(concept_code) + '-' + new_concept_symbol_list['symbol']
@@ -13,7 +13,7 @@ import mns_common.utils.data_frame_util as data_frame_util
13
13
  import mns_common.constant.db_name_constant as db_name_constant
14
14
  import mns_common.component.trade_date.trade_date_common_service_api as trade_date_common_service_api
15
15
  from datetime import datetime
16
- import mns_common.api.ths.ths_stock_api as ths_stock_api
16
+ import mns_common.api.ths.concept.web.ths_concept_detail_web as ths_concept_detail_web
17
17
  import pandas as pd
18
18
 
19
19
  mongodb_util = MongodbUtil('27017')
@@ -69,8 +69,7 @@ def update_null_reason(nan_reason_df):
69
69
  continue
70
70
  web_concept_code = list(ths_concept_one_df['web_concept_code'])[0]
71
71
 
72
- ths_concept_json = ths_stock_api.get_symbol_add_new_concept(nan_one.symbol)
73
- symbol_ths_concept_all_df = pd.DataFrame(ths_concept_json)
72
+ symbol_ths_concept_all_df = ths_concept_detail_web.get_one_symbol_all_ths_concepts(nan_one.symbol)
74
73
 
75
74
  symbol_ths_concept_one_df = symbol_ths_concept_all_df[
76
75
  symbol_ths_concept_all_df['cid'] == web_concept_code]
@@ -13,9 +13,9 @@ import pandas as pd
13
13
  from datetime import datetime
14
14
  import akshare as ak
15
15
  import mns_scheduler.concept.ths.common.ths_concept_sync_common_api as ths_concept_sync_common_api
16
- import mns_common.api.ths.ths_stock_api as ths_stock_api
17
- import mns_scheduler.concept.clean.ths_concept_clean_api as ths_concept_clean_api
18
16
 
17
+ import mns_scheduler.concept.clean.ths_concept_clean_api as ths_concept_clean_api
18
+ import mns_scheduler.concept.common.detaill.ths_concept_detail_api as ths_concept_detail_api
19
19
  mongodb_util = MongodbUtil('27017')
20
20
 
21
21
 
@@ -90,7 +90,7 @@ def handle_new_concept_msg(concept_code, concept_name, url):
90
90
 
91
91
  # 获取web端 新增概念详情
92
92
  def get_concept_detail_info_web(concept_code):
93
- new_concept_symbol_list = ths_stock_api.ths_stock_concept(concept_code)
93
+ new_concept_symbol_list = ths_concept_detail_api.get_ths_concept_detail(concept_code, None)
94
94
  if new_concept_symbol_list is None or new_concept_symbol_list.shape[0] == 0:
95
95
  return None
96
96
  new_concept_symbol_list = new_concept_symbol_list[ths_concept_sync_common_api.order_fields]
@@ -5,8 +5,8 @@ file_path = os.path.abspath(__file__)
5
5
  end = file_path.index('mns') + 17
6
6
  project_path = file_path[0:end]
7
7
  sys.path.append(project_path)
8
- import mns_common.api.ths.ths_stock_api as ths_stock_api
9
-
8
+ import mns_scheduler.concept.common.detaill.ths_concept_detail_api as ths_concept_detail_api
9
+ import mns_common.api.ths.concept.web.ths_concept_index_web as ths_concept_index_web
10
10
  import datetime
11
11
  import time
12
12
  import mns_common.api.msg.push_msg_api as push_msg_api
@@ -20,7 +20,7 @@ mongodb_util = MongodbUtil('27017')
20
20
 
21
21
  # 获取web端 新增概念详情
22
22
  def get_concept_detail_info_web(concept_code):
23
- new_concept_symbol_list = ths_stock_api.ths_stock_concept(concept_code)
23
+ new_concept_symbol_list = ths_concept_detail_api.get_ths_concept_detail(concept_code, None)
24
24
  if new_concept_symbol_list is None or new_concept_symbol_list.shape[0] == 0:
25
25
  return None
26
26
  new_concept_symbol_list = new_concept_symbol_list[ths_concept_sync_common_api.order_fields]
@@ -52,7 +52,7 @@ def sync_new_concept_data_by_web():
52
52
  time.sleep(1)
53
53
  continue
54
54
  time.sleep(2)
55
- concept_name = ths_stock_api.get_concept_name(concept_code)
55
+ concept_name = ths_concept_index_web.get_concept_name(concept_code)
56
56
  concept_name = concept_name.replace('(', '(')
57
57
  concept_name = concept_name.replace(')', ')')
58
58
 
@@ -82,7 +82,6 @@ def handle_new_concept_msg(concept_code, concept_name, url):
82
82
 
83
83
  if __name__ == '__main__':
84
84
  # code = 886025
85
- # name = ths_stock_api.get_concept_name(code)
86
85
  # push_msg_to_we_chat_web(code, name)
87
86
  # get_concept_detail_info_web(886026)
88
87
  # get_concept_detail_info_web(886035)
@@ -1,7 +1,7 @@
1
1
  import os
2
2
  import sys
3
3
  import pandas as pd
4
- import mns_common.api.ths.ths_stock_api as ths_stock_api
4
+ import mns_common.api.ths.concept.web.ths_concept_detail_web as ths_concept_detail_web
5
5
  import mns_common.api.em.east_money_stock_api as east_money_stock_api
6
6
  import mns_common.component.common_service_fun_api as common_service_fun_api
7
7
  from mns_common.db.MongodbUtil import MongodbUtil
@@ -86,9 +86,8 @@ def choose_type_new_concept(ths_concept_df):
86
86
  def update_symbol_new_concept(symbol_df, page_number):
87
87
  for stock_one in symbol_df.itertuples():
88
88
  try:
89
- ths_concept_json = ths_stock_api.get_symbol_add_new_concept(stock_one.symbol)
89
+ symbol_ths_concept_all_df = ths_concept_detail_web.get_symbol_add_new_concept(stock_one.symbol)
90
90
  logger.info("同步symbol概念信息:{}", stock_one.symbol)
91
- symbol_ths_concept_all_df = pd.DataFrame(ths_concept_json)
92
91
  if data_frame_util.is_empty(symbol_ths_concept_all_df):
93
92
  continue
94
93
 
@@ -179,4 +178,4 @@ def sync_symbol_all_concept(symbol):
179
178
 
180
179
 
181
180
  if __name__ == '__main__':
182
- sync_symbol_all_concept(None)
181
+ sync_symbol_all_concept('300085')
@@ -63,7 +63,7 @@ def sync_all_investigate_stocks(page_size, search_key, begin_day, end_day):
63
63
 
64
64
 
65
65
  # 立案调查的股票
66
- def sync_new_high_risk_stocks():
66
+ def sync_register_and_investigate_stocks():
67
67
  before_days = 60
68
68
  const_num = 30
69
69
  init_date = datetime.now()
@@ -124,7 +124,7 @@ def sync_new_high_risk_stocks():
124
124
 
125
125
 
126
126
  if __name__ == '__main__':
127
- sync_new_high_risk_stocks()
127
+ sync_register_and_investigate_stocks()
128
128
  # result_df = sync_all_investigate_stocks(30, '立案', '2023-01-01', '2024-06-15')
129
129
  # result_df = result_df.sort_values(by=['announcementTime'], ascending=False)
130
130
  # print(result_df)
@@ -6,7 +6,7 @@ end = file_path.index('mns') + 16
6
6
  project_path = file_path[0:end]
7
7
  sys.path.append(project_path)
8
8
 
9
- import mns_common.api.ths.ths_stock_api as ths_stock_api
9
+ import mns_scheduler.concept.common.detaill.ths_concept_detail_api as ths_concept_detail_api
10
10
  import mns_common.component.self_choose.black_list_service_api as black_list_service_api
11
11
  from datetime import datetime
12
12
  from loguru import logger
@@ -15,7 +15,7 @@ from mns_common.constant.black_list_classify_enum import BlackClassify
15
15
 
16
16
 
17
17
  def add_concept_to_lack_list(concept_code, reason):
18
- new_concept_symbol_list = ths_stock_api.ths_stock_concept(concept_code)
18
+ new_concept_symbol_list = ths_concept_detail_api.get_ths_concept_detail(concept_code, None)
19
19
  if data_frame_util.is_empty(new_concept_symbol_list):
20
20
  return None
21
21
 
@@ -7,7 +7,7 @@ project_path = file_path[0:end]
7
7
  sys.path.append(project_path)
8
8
  import pandas as pd
9
9
  import mns_common.api.akshare.stock_zt_pool_api as stock_zt_pool_api
10
- import mns_common.api.ths.ths_stock_zt_pool_api as ths_stock_zt_pool_api
10
+ import mns_common.api.ths.zt.ths_stock_zt_pool_api as ths_stock_zt_pool_api
11
11
  import mns_common.utils.date_handle_util as date_handle_util
12
12
  import mns_common.component.concept.ths_concept_common_service_api as ths_concept_common_service_api
13
13
  from mns_common.db.MongodbUtil import MongodbUtil
@@ -262,8 +262,6 @@ def sync_new_ths_concept_by_ak_api():
262
262
  def sync_all_kpl_plate_info():
263
263
  logger.info('同步开盘啦精选指数开始')
264
264
  sync_kpl_best_total_sync_api.sync_all_plate_info()
265
- logger.info('同步新概念通过web端')
266
- sync_new_concept_data_by_web()
267
265
 
268
266
 
269
267
  # 更新一二级关系
@@ -327,9 +325,9 @@ def sync_kpl_best_his_quotes():
327
325
 
328
326
 
329
327
  # 同步高风险的股票
330
- def sync_new_high_risk_stocks():
328
+ def sync_high_risk_stocks():
331
329
  logger.info('同步被立案调查的股票')
332
- register_and_investigate_stock_sync_api.sync_new_high_risk_stocks()
330
+ register_and_investigate_stock_sync_api.sync_register_and_investigate_stocks()
333
331
  reason_detail = '微盘股拉黑'
334
332
  concept_code_wei_pan = '883418'
335
333
  wei_pan_stock_api.add_concept_to_lack_list(concept_code_wei_pan, reason_detail)
@@ -377,7 +375,7 @@ blockingScheduler.add_job(db_status_check, 'interval', seconds=30, max_instances
377
375
  # todo 需要前后顺序执行
378
376
  # todo 当日k线信息
379
377
  # 同步一天k线 涨停 数据
380
- blockingScheduler.add_job(sync_daily_data_info, 'cron', hour='15,20', minute='21')
378
+ blockingScheduler.add_job(sync_daily_data_info, 'cron', hour='15,20', minute='26')
381
379
 
382
380
  # 开盘前同步当天交易需要的k线数据
383
381
  blockingScheduler.add_job(sync_today_trade_k_line_info, 'cron', hour='08', minute='30')
@@ -420,8 +418,8 @@ blockingScheduler.add_job(sync_kpl_best_his_quotes, 'cron', hour='18,22', minute
420
418
  # 更新开盘啦指数关系
421
419
  blockingScheduler.add_job(sync_position, 'cron', hour='0,08', minute='10')
422
420
 
423
- # 同步被立案调查的股票
424
- blockingScheduler.add_job(sync_new_high_risk_stocks, 'cron', hour='0,09,12,16', minute='20')
421
+ # 同步高风险股票
422
+ blockingScheduler.add_job(sync_high_risk_stocks, 'cron', hour='0,09,12,16', minute='20')
425
423
 
426
424
  # 同步互动回答
427
425
  blockingScheduler.add_job(sync_all_interactive_questions, 'cron', hour='08,12,17', minute='05')
@@ -1,3 +1,3 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns-scheduler
3
- Version: 1.0.9.6
3
+ Version: 1.1.0.1
@@ -6,14 +6,10 @@ mns_scheduler.egg-info/SOURCES.txt
6
6
  mns_scheduler.egg-info/dependency_links.txt
7
7
  mns_scheduler.egg-info/top_level.txt
8
8
  mns_scheduler/backup/__init__.py
9
- mns_scheduler/backup/app/__init__.py
10
- mns_scheduler/backup/app/ths_new_concept_sync_app.py
11
9
  mns_scheduler/backup/em/__init__.py
12
10
  mns_scheduler/backup/em/em_new_concept_his_sync.py
13
11
  mns_scheduler/backup/em/em_new_concept_sync_common_api.py
14
12
  mns_scheduler/backup/em/em_new_concept_sync_web.py
15
- mns_scheduler/backup/wen_cai/__init__.py
16
- mns_scheduler/backup/wen_cai/wen_cai_concept_sync.py
17
13
  mns_scheduler/big_deal/__init__.py
18
14
  mns_scheduler/big_deal/ths_big_deal_sync.py
19
15
  mns_scheduler/company_info/__init__.py
@@ -24,6 +20,9 @@ mns_scheduler/concept/__init__.py
24
20
  mns_scheduler/concept/clean/__init__.py
25
21
  mns_scheduler/concept/clean/kpl_concept_clean_api.py
26
22
  mns_scheduler/concept/clean/ths_concept_clean_api.py
23
+ mns_scheduler/concept/common/__init__.py
24
+ mns_scheduler/concept/common/detaill/__init__.py
25
+ mns_scheduler/concept/common/detaill/ths_concept_detail_api.py
27
26
  mns_scheduler/concept/ths/__init__.py
28
27
  mns_scheduler/concept/ths/common/__init__.py
29
28
  mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='mns-scheduler',
5
- version='1.0.9.6',
5
+ version='1.1.0.1',
6
6
  packages=find_packages(),
7
7
  install_requires=[], # 如果有依赖项,可以在这里列出
8
8
  )
@@ -1,122 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
- import mns_common.api.ths.ths_stock_api as ths_stock_api
9
- import datetime
10
- import time
11
- import mns_common.api.msg.push_msg_api as push_msg_api
12
- from loguru import logger
13
- import mns_scheduler.concept.ths.common.ths_concept_sync_common_api as ths_concept_sync_common_api
14
- import pandas as pd
15
- from mns_common.db.MongodbUtil import MongodbUtil
16
-
17
- mongodb_util = MongodbUtil('27017')
18
-
19
-
20
- # app 端获取新增概念信息 接口不稳定
21
-
22
- # 获取最大概念代码
23
- def get_max_concept_name():
24
- query = {"symbol": {'$ne': 'null'}, "success": True}
25
- return mongodb_util.descend_query(query, 'ths_concept_list', 'symbol', 1)
26
-
27
-
28
- # 获取app端新概念名称
29
- def get_concept_detail_info_app(concept_code):
30
- return ths_stock_api.get_new_concept_code_app(concept_code)
31
-
32
-
33
- # 获取app端新概念详细列表
34
- def get_new_concept_detail_list_app(concept_code):
35
- new_concept_symbol_list = ths_stock_api.get_new_concept_list_app(concept_code)
36
- if new_concept_symbol_list is None or new_concept_symbol_list.shape == 0:
37
- return None
38
- new_concept_symbol_list = new_concept_symbol_list[ths_concept_sync_common_api.order_fields]
39
- new_concept_symbol_list['_id'] = str(concept_code) + '-' + new_concept_symbol_list['symbol']
40
- return new_concept_symbol_list
41
-
42
-
43
- # 推送新概念信息到微信
44
- def push_msg_to_we_chat_app(concept_code, concept_name):
45
- url = f'https://m.10jqka.com.cn/hq/industry.html#code={concept_code}&refCountId=R_55ba2964_186'
46
- msg = "概念代码:" + str(concept_code) + "," + "概念名称:" + concept_name + "," + "url: " + url
47
- title = "新增概念:" + str(concept_code) + "-" + concept_name
48
- push_msg_api.push_msg_to_wechat(title, msg)
49
-
50
-
51
- # 保存新概念信息到数据库
52
- def save_ths_concept_list_app(concept_code, concept_name, str_day, str_now_time, success):
53
- concept_code = int(concept_code)
54
- url = 'https://m.10jqka.com.cn/hq/industry.html#code=' + str(concept_code) + '&refCountId=R_55ba2964_186'
55
- ths_concept_list = pd.DataFrame([
56
- [concept_code, concept_code, concept_name, str_day, url, str_now_time, success],
57
- ], columns=['_id', 'symbol', 'name', 'str_day', 'url', 'str_now_time', 'success'])
58
-
59
- mongodb_util.save_mongo(ths_concept_list, 'ths_concept_list')
60
-
61
-
62
- # 同步新概念信息 从app爬取
63
- def sync_new_concept_data():
64
- max_concept_name = get_max_concept_name()
65
- try:
66
- now_date = datetime.datetime.now()
67
- str_day = now_date.strftime('%Y-%m-%d')
68
- str_now_time = now_date.strftime('%Y-%m-%d %H:%M:%S')
69
- concept_code = list(max_concept_name['symbol'])[0]
70
- success = list(max_concept_name['success'])[0]
71
- if success:
72
- concept_code = concept_code + 1
73
-
74
- new_concept_df = get_concept_detail_info_app(concept_code)
75
- if new_concept_df is None or new_concept_df.shape[0] == 0:
76
- time.sleep(1)
77
- return None
78
-
79
- concept_name = list(new_concept_df['concept_name'])[0]
80
- concept_code = list(new_concept_df['concept_code'])[0]
81
- if success:
82
- # 推送新概念信息到微信
83
- push_msg_to_we_chat_app(concept_code, concept_name)
84
- # 获取新概念详细信息
85
- new_concept_symbol_list = get_new_concept_detail_list_app(concept_code)
86
-
87
- if new_concept_symbol_list is None or new_concept_symbol_list.shape[0] == 0:
88
- # 保存新概念信息到数据库
89
- query = {"symbol": int(concept_code), "success": True}
90
- exist_success = mongodb_util.exist_data_query('ths_concept_list', query)
91
- if bool(1 - exist_success):
92
- save_ths_concept_list_app(concept_code, concept_name, str_day, str_now_time, False)
93
- time.sleep(1)
94
-
95
- else:
96
- # 保存新概念信息到数据库
97
- save_ths_concept_list_app(concept_code, concept_name, str_day, str_now_time, True)
98
- new_concept_symbol_list.loc[:, 'way'] = 'index_sync'
99
- # 保存新概念详细信息到数据库
100
- ths_concept_sync_common_api.save_ths_concept_detail(new_concept_symbol_list, concept_name, str_day,
101
- str_now_time, concept_code)
102
- time.sleep(1)
103
-
104
- except BaseException as e:
105
- logger.error("同步新概念异常:{},concept_code:{}", e, concept_code)
106
-
107
-
108
- if __name__ == '__main__':
109
- # myquery1 = {"symbol": {"$ne": 'null'}}
110
- # newvalues1 = {"$set": {"success": True}}
111
- #
112
- # mongodb_util_remote.update_many(myquery1, newvalues1, 'ths_concept_list')
113
- # concept_df = get_concept_detail_info_app('886033')
114
- df = get_new_concept_detail_list_app('883418')
115
- print(df)
116
- # sync_new_concept_data()
117
- # code = 886026
118
- # while True:
119
- # symbol_new_concept = get_concept_detail_info_app(code)
120
- # logger.info(symbol_new_concept)
121
- # new_concept_symbols = ths_stock_api.get_new_concept_list_app(code)
122
- # logger.info(new_concept_symbols)
@@ -1,51 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
- from datetime import datetime
9
- import mns_common.api.ths.ths_stock_api as ths_stock_api
10
- import mns_common.utils.date_handle_util as date_handle_util
11
- import mns_common.utils.data_frame_util as data_frame_util
12
-
13
-
14
- def sync_wei_concept_data():
15
- now_date = datetime.now()
16
- str_day = now_date.strftime('%Y-%m-%d')
17
- number = 1
18
- result = None
19
- while True:
20
- wen_cai_concept_df = ths_stock_api.ths_concept_wen_cai(date_handle_util.no_slash_date(str_day),
21
- str(number))
22
- result = data_frame_util.merge_choose_data_no_drop(result, wen_cai_concept_df)
23
- if wen_cai_concept_df.shape[0] < 50:
24
- break
25
- number = number + 1
26
- result = result.rename(columns={"股票代码": "symbol",
27
- "股票简称": "name",
28
- "最新价": "price",
29
- "最新涨跌幅": "chg",
30
- "所属概念": "concepts",
31
- "所属概念数量": "concept_num"
32
- })
33
- result = result[[
34
- 'symbol',
35
- 'name',
36
- 'price',
37
- 'chg',
38
- 'concepts',
39
- 'concept_num',
40
- 'market_code',
41
- 'code',
42
- ]]
43
- result['chg'].fillna(0, inplace=True)
44
- result['price'].fillna(0, inplace=True)
45
- result['concepts'].fillna(0, inplace=True)
46
- return result
47
-
48
-
49
- if __name__ == '__main__':
50
- df = sync_wei_concept_data()
51
- print(df)
@@ -1,7 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
@@ -1,7 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)