mns-scheduler 1.0.9.7__tar.gz → 1.1.0.2__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.
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/PKG-INFO +1 -1
- {mns-scheduler-1.0.9.7/mns_scheduler/concept/ths/sync_new_index → mns-scheduler-1.1.0.2/mns_scheduler/backup/ths}/sync_ths_concept_by_ak_api.py +3 -3
- {mns-scheduler-1.0.9.7/mns_scheduler/concept/ths/sync_new_index → mns-scheduler-1.1.0.2/mns_scheduler/backup/ths}/sync_ths_new_concept_by_web_api.py +4 -5
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/big_deal/ths_big_deal_sync.py +1 -1
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/company_info/company_info_sync_api.py +5 -9
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/concept/clean/ths_concept_clean_api.py +2 -2
- mns-scheduler-1.1.0.2/mns_scheduler/concept/common/detaill/ths_concept_detail_api.py +196 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +2 -2
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +2 -5
- mns-scheduler-1.1.0.2/mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py +170 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +3 -4
- mns-scheduler-1.1.0.2/mns_scheduler/risk/major_violations/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/risk/major_violations/register_and_investigate_stock_sync_api.py +2 -2
- mns-scheduler-1.1.0.2/mns_scheduler/risk/self/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/risk/self/wei_pan_stock_api.py +2 -2
- mns-scheduler-1.1.0.2/mns_scheduler/risk/transactions/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zt/zt_pool/zt_pool_sync_api.py +1 -1
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zz_task/data_sync_task.py +23 -32
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler.egg-info/PKG-INFO +1 -1
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler.egg-info/SOURCES.txt +7 -6
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/setup.py +1 -1
- mns-scheduler-1.0.9.7/mns_scheduler/backup/app/ths_new_concept_sync_app.py +0 -122
- mns-scheduler-1.0.9.7/mns_scheduler/backup/wen_cai/wen_cai_concept_sync.py +0 -51
- mns-scheduler-1.0.9.7/mns_scheduler/zt/high_chg/__init__.py +0 -7
- mns-scheduler-1.0.9.7/mns_scheduler/zz_task/__init__.py +0 -7
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/README.md +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/backup/__init__.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/backup/app → mns-scheduler-1.1.0.2/mns_scheduler/backup/em}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/backup/em/em_new_concept_his_sync.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/backup/em/em_new_concept_sync_common_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/backup/em/em_new_concept_sync_web.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/risk/compliance → mns-scheduler-1.1.0.2/mns_scheduler/backup/ths}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/backup/em → mns-scheduler-1.1.0.2/mns_scheduler/big_deal}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/backup/wen_cai → mns-scheduler-1.1.0.2/mns_scheduler/company_info}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/company_info/company_constant_data.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/company_info/de_list_stock_service.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/big_deal → mns-scheduler-1.1.0.2/mns_scheduler/concept}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/company_info → mns-scheduler-1.1.0.2/mns_scheduler/concept/clean}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/concept/clean/kpl_concept_clean_api.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/risk/financial → mns-scheduler-1.1.0.2/mns_scheduler/concept/common}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/risk/major_violations → mns-scheduler-1.1.0.2/mns_scheduler/concept/common/detaill}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/concept → mns-scheduler-1.1.0.2/mns_scheduler/concept/ths}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/concept/clean → mns-scheduler-1.1.0.2/mns_scheduler/concept/ths/common}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/concept/ths → mns-scheduler-1.1.0.2/mns_scheduler/concept/ths/sync_new_index}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/concept/ths/common → mns-scheduler-1.1.0.2/mns_scheduler/concept/ths/update_concept_info}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/concept/ths/sync_new_index → mns-scheduler-1.1.0.2/mns_scheduler/db}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/db/col_move_service.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/db/db_status.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/concept/ths/update_concept_info → mns-scheduler-1.1.0.2/mns_scheduler/dt}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/finance/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/finance/em_financial_asset_liability_sync_service_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/finance/em_financial_profit_sync_service_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/finance/finance_common_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/finance/sync_financial_report_service_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/hk/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/hk/hk_company_info_sync_service_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/irm/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/irm/api/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/irm/stock_irm_cninfo_service.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/k_line/__init__.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/db → mns-scheduler-1.1.0.2/mns_scheduler/k_line/clean}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/k_line/clean/daily/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/k_line/clean/daily/daily_k_line_service.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/k_line/clean/k_line_info_clean_task.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/k_line/clean/week_month/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/k_line/hot_stocks/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/k_line/sync/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/k_line/sync/daily_week_month_line_sync.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/k_line/test/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/k_line/test/k_line_info_clean_his_data.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/dt → mns-scheduler-1.1.0.2/mns_scheduler/kpl}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/k_line/clean → mns-scheduler-1.1.0.2/mns_scheduler/kpl/selection}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/kpl → mns-scheduler-1.1.0.2/mns_scheduler/kpl/selection/index}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/kpl/selection → mns-scheduler-1.1.0.2/mns_scheduler/kpl/selection/symbol}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/kpl/selection/index → mns-scheduler-1.1.0.2/mns_scheduler/kpl/selection/total}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/lhb/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/lhb/stock_lhb_sync_service.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/open/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/open/sync_one_day_open_data_to_db_service.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/kpl/selection/symbol → mns-scheduler-1.1.0.2/mns_scheduler/real_time}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/real_time/realtime_quotes_now_create_db_index.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/real_time/realtime_quotes_now_sync.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/risk/__init__.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/risk/self → mns-scheduler-1.1.0.2/mns_scheduler/risk/compliance}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/risk/compliance/undisclosed_annual_report_api.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/risk/transactions → mns-scheduler-1.1.0.2/mns_scheduler/risk/financial}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/risk/financial/annual_report_audit_check_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/risk/financial/net_assets_check_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/risk/financial/profit_income_check_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/risk/financial_report_risk_check_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/risk/test/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/risk/test/fix_blask_list.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/risk/transactions/transactions_check_api.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/kpl/selection/total → mns-scheduler-1.1.0.2/mns_scheduler/trade}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/trade/auto_ipo_buy_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/trade/auto_sell_service_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/trade/sync_position_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zb/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zb/stock_zb_pool_sync.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zt/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zt/connected_boards/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zt/connected_boards/zt_five_boards_sync_api.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zt/export/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zt/export/export_kcx_high_chg_open_data_to_excel.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/real_time → mns-scheduler-1.1.0.2/mns_scheduler/zt/high_chg}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zt/high_chg/sync_high_chg_pool_service.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zt/high_chg/sync_high_chg_real_time_quotes_service.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zt/open_data/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zt/open_data/kcx_high_chg_open_data_sync.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zt/script/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zt/script/sync_high_chg_pool_his_data.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zt/zt_pool/__init__.py +0 -0
- {mns-scheduler-1.0.9.7/mns_scheduler/trade → mns-scheduler-1.1.0.2/mns_scheduler/zz_task}/__init__.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zz_task/sync_realtime_quotes_task.py +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler.egg-info/dependency_links.txt +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler.egg-info/top_level.txt +0 -0
- {mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/setup.cfg +0 -0
|
@@ -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 =
|
|
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
|
|
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 =
|
|
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 =
|
|
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)
|
|
@@ -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
|
|
{mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/company_info/company_info_sync_api.py
RENAMED
|
@@ -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.
|
|
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 =
|
|
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 =
|
|
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(
|
|
513
|
+
sync_company_base_info(None)
|
|
518
514
|
fix_company_industry(None)
|
|
519
515
|
# group_by_industry()
|
{mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/concept/clean/ths_concept_clean_api.py
RENAMED
|
@@ -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
|
|
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 =
|
|
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 =
|
|
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,9 +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.
|
|
17
|
-
import pandas as pd
|
|
18
|
-
|
|
16
|
+
import mns_common.api.ths.concept.web.ths_concept_detail_web as ths_concept_detail_web
|
|
19
17
|
mongodb_util = MongodbUtil('27017')
|
|
20
18
|
|
|
21
19
|
|
|
@@ -69,8 +67,7 @@ def update_null_reason(nan_reason_df):
|
|
|
69
67
|
continue
|
|
70
68
|
web_concept_code = list(ths_concept_one_df['web_concept_code'])[0]
|
|
71
69
|
|
|
72
|
-
|
|
73
|
-
symbol_ths_concept_all_df = pd.DataFrame(ths_concept_json)
|
|
70
|
+
symbol_ths_concept_all_df = ths_concept_detail_web.get_one_symbol_all_ths_concepts(nan_one.symbol)
|
|
74
71
|
|
|
75
72
|
symbol_ths_concept_one_df = symbol_ths_concept_all_df[
|
|
76
73
|
symbol_ths_concept_all_df['cid'] == web_concept_code]
|
mns-scheduler-1.1.0.2/mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
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.concept.app.ths_concept_index_app as ths_concept_index_app
|
|
9
|
+
import mns_scheduler.concept.ths.common.ths_concept_sync_common_api as ths_concept_sync_common_api
|
|
10
|
+
import mns_common.utils.data_frame_util as data_frame_util
|
|
11
|
+
from loguru import logger
|
|
12
|
+
import mns_common.api.ths.concept.web.ths_concept_index_web as ths_concept_index_web
|
|
13
|
+
from mns_common.db.MongodbUtil import MongodbUtil
|
|
14
|
+
from datetime import datetime
|
|
15
|
+
import mns_scheduler.concept.clean.ths_concept_clean_api as ths_concept_clean_api
|
|
16
|
+
import pandas as pd
|
|
17
|
+
import mns_scheduler.concept.common.detaill.ths_concept_detail_api as ths_concept_detail_api
|
|
18
|
+
import mns_common.constant.db_name_constant as db_name_constant
|
|
19
|
+
|
|
20
|
+
mongodb_util = MongodbUtil('27017')
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def sync_ths_concept_new_index():
|
|
24
|
+
# 同步ths新概念 通过app搜索
|
|
25
|
+
sync_ths_concept_new_index_from_app()
|
|
26
|
+
# 通过ths详情搜索
|
|
27
|
+
sync_ths_concept_new_index_from_detail()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
'''
|
|
31
|
+
同步ths新概念 通过app搜索
|
|
32
|
+
'''
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def sync_ths_concept_new_index_from_app():
|
|
36
|
+
# 当前最大概念代码
|
|
37
|
+
max_concept_code = ths_concept_sync_common_api.get_max_concept_code()
|
|
38
|
+
# 最大概念代码上线
|
|
39
|
+
max_concept_code_limit = max_concept_code + 2
|
|
40
|
+
# 同花顺概念列表
|
|
41
|
+
ths_concept_list_exist = mongodb_util.find_all_data(db_name_constant.THS_CONCEPT_LIST)
|
|
42
|
+
# 同步向上3次
|
|
43
|
+
while max_concept_code <= max_concept_code_limit:
|
|
44
|
+
try:
|
|
45
|
+
max_concept_code = max_concept_code + 1
|
|
46
|
+
concept_new_index_df = ths_concept_index_app.get_new_concept_from_app_search(max_concept_code)
|
|
47
|
+
if data_frame_util.is_empty(concept_new_index_df):
|
|
48
|
+
continue
|
|
49
|
+
concept_name = list(concept_new_index_df['concept_name'])[0]
|
|
50
|
+
|
|
51
|
+
if data_frame_util.is_string_empty(concept_name):
|
|
52
|
+
concept_name = ths_concept_index_web.get_concept_name(max_concept_code)
|
|
53
|
+
|
|
54
|
+
exist_concept_df_one = ths_concept_list_exist.loc[
|
|
55
|
+
(ths_concept_list_exist['symbol'] == max_concept_code)
|
|
56
|
+
| (ths_concept_list_exist['web_concept_code'] == max_concept_code)]
|
|
57
|
+
now_date = datetime.now()
|
|
58
|
+
str_now_time = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
59
|
+
str_day = now_date.strftime('%Y-%m-%d')
|
|
60
|
+
if data_frame_util.is_empty(exist_concept_df_one):
|
|
61
|
+
concept_code = max_concept_code
|
|
62
|
+
|
|
63
|
+
url = 'http://q.10jqka.com.cn/thshy/detail/code/' + str(concept_code)
|
|
64
|
+
new_concept_one = {
|
|
65
|
+
'_id': int(concept_code),
|
|
66
|
+
'symbol': int(concept_code),
|
|
67
|
+
'name': concept_name,
|
|
68
|
+
'url': url,
|
|
69
|
+
'str_day': str_day,
|
|
70
|
+
'success': True,
|
|
71
|
+
'str_now_time': str_now_time,
|
|
72
|
+
'web_concept_code': concept_code,
|
|
73
|
+
'web_concept_url': url,
|
|
74
|
+
'valid': True
|
|
75
|
+
}
|
|
76
|
+
diff_one_df = pd.DataFrame(new_concept_one, index=[1])
|
|
77
|
+
mongodb_util.save_mongo(diff_one_df, db_name_constant.THS_CONCEPT_LIST)
|
|
78
|
+
# 新增概念信息处理
|
|
79
|
+
handle_new_concept_msg(concept_code, concept_name, url)
|
|
80
|
+
|
|
81
|
+
new_concept_symbol_detail_df = ths_concept_detail_api.get_ths_concept_detail(concept_code, concept_name)
|
|
82
|
+
if data_frame_util.is_empty(new_concept_symbol_detail_df):
|
|
83
|
+
continue
|
|
84
|
+
new_concept_symbol_detail_df.loc[:, 'way'] = 'index_sync'
|
|
85
|
+
ths_concept_sync_common_api.save_ths_concept_detail(new_concept_symbol_detail_df,
|
|
86
|
+
concept_name,
|
|
87
|
+
str_day,
|
|
88
|
+
str_now_time, concept_code)
|
|
89
|
+
# 更新ths概念统计信息
|
|
90
|
+
ths_concept_clean_api.update_ths_concept_info()
|
|
91
|
+
|
|
92
|
+
logger.info("新增同花顺新概念:{}", concept_name)
|
|
93
|
+
|
|
94
|
+
except BaseException as e:
|
|
95
|
+
logger.error("同步新增概念代码:{},信息异常:{}", max_concept_code, e)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
'''
|
|
99
|
+
同步新概念 by ths detail
|
|
100
|
+
'''
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def sync_ths_concept_new_index_from_detail():
|
|
104
|
+
# 当前最大概念代码
|
|
105
|
+
max_concept_code = ths_concept_sync_common_api.get_max_concept_code()
|
|
106
|
+
# 最大概念代码上线
|
|
107
|
+
max_concept_code_limit = max_concept_code + 2
|
|
108
|
+
# 同花顺概念列表
|
|
109
|
+
ths_concept_list_exist = mongodb_util.find_all_data(db_name_constant.THS_CONCEPT_LIST)
|
|
110
|
+
# 同步向上3次
|
|
111
|
+
while max_concept_code <= max_concept_code_limit:
|
|
112
|
+
try:
|
|
113
|
+
max_concept_code = max_concept_code + 1
|
|
114
|
+
concept_code = max_concept_code
|
|
115
|
+
concept_name = ths_concept_index_web.get_concept_name(concept_code)
|
|
116
|
+
new_concept_symbol_detail_df = ths_concept_detail_api.get_ths_concept_detail(concept_code, concept_name)
|
|
117
|
+
if data_frame_util.is_empty(new_concept_symbol_detail_df):
|
|
118
|
+
continue
|
|
119
|
+
|
|
120
|
+
exist_concept_df_one = ths_concept_list_exist.loc[
|
|
121
|
+
(ths_concept_list_exist['symbol'] == concept_code)
|
|
122
|
+
| (ths_concept_list_exist['web_concept_code'] == concept_code)]
|
|
123
|
+
now_date = datetime.now()
|
|
124
|
+
str_now_time = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
125
|
+
str_day = now_date.strftime('%Y-%m-%d')
|
|
126
|
+
if data_frame_util.is_empty(exist_concept_df_one):
|
|
127
|
+
concept_code = max_concept_code
|
|
128
|
+
|
|
129
|
+
url = 'http://q.10jqka.com.cn/thshy/detail/code/' + str(concept_code)
|
|
130
|
+
new_concept_one = {
|
|
131
|
+
'_id': int(concept_code),
|
|
132
|
+
'symbol': int(concept_code),
|
|
133
|
+
'name': concept_name,
|
|
134
|
+
'url': url,
|
|
135
|
+
'str_day': str_day,
|
|
136
|
+
'success': True,
|
|
137
|
+
'str_now_time': str_now_time,
|
|
138
|
+
'web_concept_code': concept_code,
|
|
139
|
+
'web_concept_url': url,
|
|
140
|
+
'valid': True
|
|
141
|
+
}
|
|
142
|
+
diff_one_df = pd.DataFrame(new_concept_one, index=[1])
|
|
143
|
+
mongodb_util.save_mongo(diff_one_df, db_name_constant.THS_CONCEPT_LIST)
|
|
144
|
+
# 新增概念信息处理
|
|
145
|
+
handle_new_concept_msg(concept_code, concept_name, url)
|
|
146
|
+
|
|
147
|
+
new_concept_symbol_detail_df.loc[:, 'way'] = 'index_sync'
|
|
148
|
+
ths_concept_sync_common_api.save_ths_concept_detail(new_concept_symbol_detail_df,
|
|
149
|
+
concept_name,
|
|
150
|
+
str_day,
|
|
151
|
+
str_now_time,
|
|
152
|
+
concept_code)
|
|
153
|
+
# 更新ths概念统计信息
|
|
154
|
+
ths_concept_clean_api.update_ths_concept_info()
|
|
155
|
+
|
|
156
|
+
logger.info("新增同花顺新概念:{}", concept_name)
|
|
157
|
+
|
|
158
|
+
except BaseException as e:
|
|
159
|
+
logger.error("同步新增概念代码:{},信息异常:{}", max_concept_code, e)
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
# 新增消息处理
|
|
163
|
+
def handle_new_concept_msg(concept_code, concept_name, url):
|
|
164
|
+
# 推送新概念信息到微信
|
|
165
|
+
ths_concept_sync_common_api.push_msg_to_we_chat_web(concept_code, concept_name,
|
|
166
|
+
url)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
if __name__ == '__main__':
|
|
170
|
+
sync_ths_concept_new_index_from_detail()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import sys
|
|
3
3
|
import pandas as pd
|
|
4
|
-
import mns_common.api.ths.
|
|
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
|
-
|
|
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(
|
|
181
|
+
sync_symbol_all_concept('300085')
|
|
File without changes
|
|
@@ -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
|
|
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
|
-
|
|
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)
|
|
File without changes
|
{mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/risk/self/wei_pan_stock_api.py
RENAMED
|
@@ -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
|
|
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 =
|
|
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
|
|
|
File without changes
|
{mns-scheduler-1.0.9.7 → mns-scheduler-1.1.0.2}/mns_scheduler/zt/zt_pool/zt_pool_sync_api.py
RENAMED
|
@@ -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
|