mns-scheduler 1.0.8.7__py3-none-any.whl → 1.4.3.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mns_scheduler/__init__.py +1 -3
- mns_scheduler/company_info/announce/company_announce_sync_service.py +65 -0
- mns_scheduler/company_info/{company_info_sync_api.py → base/sync_company_base_info_api.py} +239 -227
- mns_scheduler/company_info/base/sync_company_hold_info_api.py +37 -0
- mns_scheduler/company_info/base/sync_company_product_area_industry.py +161 -0
- mns_scheduler/company_info/clean/company_info_clean_api.py +133 -0
- mns_scheduler/company_info/constant/company_constant_data.py +497 -0
- mns_scheduler/company_info/{de_list_stock_service.py → de_list_stock/de_list_stock_service.py} +1 -1
- mns_scheduler/company_info/em_stock_info/__init__.py +7 -0
- mns_scheduler/company_info/em_stock_info/sync_em_stock_info_sync.py +80 -0
- mns_scheduler/company_info/remark/__init__.py +7 -0
- mns_scheduler/company_info/remark/company_remark_info_sync.py +46 -0
- mns_scheduler/concept/clean/kpl_concept_clean_api.py +1 -1
- mns_scheduler/concept/clean/ths_concept_clean_api.py +74 -51
- mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +112 -56
- mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +6 -6
- mns_scheduler/concept/ths/detaill/__init__.py +0 -0
- mns_scheduler/concept/ths/detaill/ths_concept_detail_api.py +226 -0
- mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py +169 -0
- mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +11 -23
- mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +19 -15
- mns_scheduler/db/col_move_service.py +10 -7
- mns_scheduler/db/db_status.py +1 -1
- mns_scheduler/db/script/__init__.py +7 -0
- mns_scheduler/db/script/col_move_script.py +45 -0
- mns_scheduler/db/script/db_move/__init__.py +7 -0
- mns_scheduler/db/script/db_move/col_move_one_service.py +34 -0
- mns_scheduler/db/script/sync/__init__.py +7 -0
- mns_scheduler/db/script/sync/local_mongo_util.py +231 -0
- mns_scheduler/db/script/sync/remote_data_sync_to_local.py +105 -0
- mns_scheduler/db/script/sync/remote_mongo_util.py +306 -0
- mns_scheduler/db/script/sync/sync_hui_ce_test_data.py +80 -0
- mns_scheduler/db/script/sync/sync_hui_ce_test_data_01.py +69 -0
- mns_scheduler/db/script/update/__init__.py +7 -0
- mns_scheduler/db/script/update/update_col_field.py +36 -0
- mns_scheduler/finance/__init__.py +1 -1
- mns_scheduler/finance/{em_financial_asset_liability_sync_service_api.py → em/em_financial_asset_liability_sync_service_api.py} +3 -3
- mns_scheduler/finance/{em_financial_profit_sync_service_api.py → em/em_financial_profit_sync_service_api.py} +30 -25
- mns_scheduler/finance/{finance_common_api.py → em/finance_common_api.py} +4 -4
- mns_scheduler/finance/sync_financial_report_service_task.py +202 -0
- mns_scheduler/finance/xue_qiu/down_load_xueqiu_report_api.py +77 -0
- mns_scheduler/finance/xue_qiu/sync_xue_qiu_fiance_data.py +161 -0
- mns_scheduler/hk/__init__.py +1 -1
- mns_scheduler/hk/hk_company_info_sync_service_api.py +49 -5
- mns_scheduler/hk/hk_industry_info_sync_service_api.py +68 -0
- mns_scheduler/industry/__init__.py +7 -0
- mns_scheduler/industry/ths/__init__.py +7 -0
- mns_scheduler/industry/ths/ths_industry_index_service.py +58 -0
- mns_scheduler/industry/ths/ths_industry_sync_service.py +68 -0
- mns_scheduler/irm/__init__.py +1 -1
- mns_scheduler/irm/api/__init__.py +1 -1
- mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py +1 -1
- mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py +1 -1
- mns_scheduler/irm/stock_irm_cninfo_service.py +15 -13
- mns_scheduler/k_line/clean/daily/__init__.py +1 -1
- mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py +57 -7
- mns_scheduler/k_line/clean/daily/daily_k_line_service.py +16 -3
- mns_scheduler/k_line/clean/k_line_info_clean_impl.py +3 -2
- mns_scheduler/k_line/clean/k_line_info_clean_task.py +42 -31
- mns_scheduler/k_line/clean/week_month/__init__.py +1 -1
- mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py +125 -27
- mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py +72 -17
- mns_scheduler/k_line/common/__init__.py +7 -0
- mns_scheduler/k_line/common/k_line_common_api.py +188 -0
- mns_scheduler/k_line/hot_stocks/__init__.py +1 -1
- mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py +1 -1
- mns_scheduler/k_line/month_week_daily/bfq_k_line_sync.py +77 -0
- mns_scheduler/k_line/{sync → month_week_daily}/daily_week_month_line_sync.py +14 -14
- mns_scheduler/k_line/sync_status/__init__.py +7 -0
- mns_scheduler/k_line/sync_status/k_line_sync_status_check.py +54 -0
- mns_scheduler/k_line/test/__init__.py +7 -0
- mns_scheduler/k_line/test/k_line_info_clean_his_data.py +41 -0
- mns_scheduler/k_line/year_quarter/__init__.py +7 -0
- mns_scheduler/k_line/year_quarter/year_quarter_line_sync.py +76 -0
- mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +4 -2
- mns_scheduler/kpl/selection/symbol/sync_kpl_concept_symbol_choose_reason_api.py +108 -0
- mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +12 -7
- mns_scheduler/lhb/__init__.py +1 -1
- mns_scheduler/lhb/stock_lhb_sync_service.py +1 -1
- mns_scheduler/open/__init__.py +1 -1
- mns_scheduler/open/sync_one_day_open_data_to_db_service.py +6 -22
- mns_scheduler/risk/__init__.py +1 -1
- mns_scheduler/risk/compliance/__init__.py +0 -0
- mns_scheduler/risk/compliance/undisclosed_annual_report_api.py +71 -0
- mns_scheduler/risk/financial/__init__.py +0 -0
- mns_scheduler/risk/financial/annual_report_audit_check_api.py +54 -0
- mns_scheduler/risk/financial/net_assets_check_api.py +75 -0
- mns_scheduler/risk/financial/profit_income_check_api.py +80 -0
- mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py +1 -0
- mns_scheduler/risk/financial_report_risk_check_api.py +42 -0
- mns_scheduler/risk/major_violations/__init__.py +0 -0
- mns_scheduler/risk/{register_and_investigate_stock_sync_api.py → major_violations/register_and_investigate_stock_sync_api.py} +17 -8
- mns_scheduler/risk/self/__init__.py +0 -0
- mns_scheduler/risk/{wei_pan_stock_api.py → self/wei_pan_stock_api.py} +10 -4
- mns_scheduler/risk/test/__init__.py +7 -0
- mns_scheduler/{finance → risk}/test/fix_blask_list.py +6 -10
- mns_scheduler/risk/transactions/__init__.py +0 -0
- mns_scheduler/risk/transactions/transactions_check_api.py +183 -0
- mns_scheduler/self_choose/__init__.py +7 -0
- mns_scheduler/self_choose/ths_self_choose_service.py +158 -0
- mns_scheduler/trade/auto_ipo_buy_api.py +2 -2
- mns_scheduler/trade/auto_login/__init__.py +7 -0
- mns_scheduler/trade/auto_login/trader_auto_service.py +32 -0
- mns_scheduler/trade/auto_sell_service_api.py +10 -8
- mns_scheduler/trade/balance/__init__.py +7 -0
- mns_scheduler/trade/balance/ths_account_balance_service.py +7 -0
- mns_scheduler/trade/sync_position_api.py +41 -8
- mns_scheduler/trade/task/__init__.py +7 -0
- mns_scheduler/trade/task/trader_task_service.py +65 -0
- mns_scheduler/trade/tfp/__init__.py +7 -0
- mns_scheduler/trade/tfp/stock_tfp_info_sync.py +56 -0
- mns_scheduler/zb/stock_zb_pool_sync.py +1 -15
- mns_scheduler/zt/high_chg/sync_high_chg_pool_service.py +2 -3
- mns_scheduler/zt/high_chg/sync_high_chg_real_time_quotes_service.py +12 -8
- mns_scheduler/zt/open_data/kcx_high_chg_open_data_sync.py +10 -25
- mns_scheduler/zt/script/__init__.py +1 -1
- mns_scheduler/zt/script/fix_error_deal_day.py +41 -0
- mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py +2 -11
- mns_scheduler/zt/script/sync_high_chg_pool_his_data.py +2 -2
- mns_scheduler/zt/script/sync_now_higt_chg_zt.py +43 -0
- mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py +413 -0
- mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py +193 -0
- mns_scheduler/zt/zt_pool/update_null_zt_reason_api.py +58 -0
- mns_scheduler/zz_task/compensation/__init__.py +0 -0
- mns_scheduler/zz_task/compensation/compensate_task.py +161 -0
- mns_scheduler/zz_task/compensation/compensate_task_one_day.py +142 -0
- mns_scheduler/zz_task/data_sync_task.py +271 -121
- {mns_scheduler-1.0.8.7.dist-info → mns_scheduler-1.4.3.2.dist-info}/METADATA +1 -1
- mns_scheduler-1.4.3.2.dist-info/RECORD +169 -0
- {mns_scheduler-1.0.8.7.dist-info → mns_scheduler-1.4.3.2.dist-info}/WHEEL +1 -1
- mns_scheduler/backup/app/ths_new_concept_sync_app.py +0 -122
- mns_scheduler/backup/em/em_new_concept_his_sync.py +0 -99
- mns_scheduler/backup/em/em_new_concept_sync_common_api.py +0 -139
- mns_scheduler/backup/em/em_new_concept_sync_web.py +0 -55
- mns_scheduler/backup/wen_cai/wen_cai_concept_sync.py +0 -51
- mns_scheduler/big_deal/ths_big_deal_sync.py +0 -98
- mns_scheduler/company_info/company_constant_data.py +0 -322
- mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_by_ak_api.py +0 -103
- mns_scheduler/concept/ths/sync_new_index/sync_ths_new_concept_by_web_api.py +0 -89
- mns_scheduler/finance/financial_high_risk_stock_clean_service_api.py +0 -202
- mns_scheduler/finance/sync_financial_report_service_api.py +0 -113
- mns_scheduler/real_time/realtime_quotes_now_create_db_index.py +0 -27
- mns_scheduler/real_time/realtime_quotes_now_sync.py +0 -232
- mns_scheduler/risk/stock_equity_mortgage_sync_api.py +0 -32
- mns_scheduler/zt/zt_pool/zt_pool_sync_api.py +0 -151
- mns_scheduler/zz_task/sync_realtime_quotes_task.py +0 -28
- mns_scheduler-1.0.8.7.dist-info/RECORD +0 -112
- /mns_scheduler/{backup/app → company_info/announce}/__init__.py +0 -0
- /mns_scheduler/{backup/em → company_info/base}/__init__.py +0 -0
- /mns_scheduler/{backup/wen_cai → company_info/clean}/__init__.py +0 -0
- /mns_scheduler/{big_deal → company_info/constant}/__init__.py +0 -0
- /mns_scheduler/{real_time → company_info/de_list_stock}/__init__.py +0 -0
- /mns_scheduler/{backup → finance/em}/__init__.py +0 -0
- /mns_scheduler/finance/{test → xue_qiu}/__init__.py +0 -0
- /mns_scheduler/k_line/{sync → month_week_daily}/__init__.py +0 -0
- {mns_scheduler-1.0.8.7.dist-info → mns_scheduler-1.4.3.2.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
mns_scheduler/__init__.py,sha256=_nhtk1b00OsMAiqRATNrb3HD44RmgjSG5jqS-QLNMrQ,130
|
|
2
|
+
mns_scheduler/company_info/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
3
|
+
mns_scheduler/company_info/announce/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
4
|
+
mns_scheduler/company_info/announce/company_announce_sync_service.py,sha256=q8zYOZJmRin_QU2uPk52wngNdgnZooabnfrnqzqFIrM,3055
|
|
5
|
+
mns_scheduler/company_info/base/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
6
|
+
mns_scheduler/company_info/base/sync_company_base_info_api.py,sha256=QAwzK7lex_BuDYwA02XNWiS8xCB402LEisdCnbcUzfo,24393
|
|
7
|
+
mns_scheduler/company_info/base/sync_company_hold_info_api.py,sha256=XEdJzDt6RQqzZOv4mEOFfeh7q7LPTTNWNwT0AR1zHJc,1409
|
|
8
|
+
mns_scheduler/company_info/base/sync_company_product_area_industry.py,sha256=fEWvYjknjC19yUiitfCdQeFKt77tfYQDSJv1bv1ZSXY,7295
|
|
9
|
+
mns_scheduler/company_info/clean/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
10
|
+
mns_scheduler/company_info/clean/company_info_clean_api.py,sha256=vm6gr2yKoMpIFRmsz_EvKfd_7ItbfInjkISHhKWHqBA,6102
|
|
11
|
+
mns_scheduler/company_info/constant/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
12
|
+
mns_scheduler/company_info/constant/company_constant_data.py,sha256=7emiXUeAla8nfyYYauGjsMarfY3ckN4TgYlON477jQE,22566
|
|
13
|
+
mns_scheduler/company_info/de_list_stock/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
14
|
+
mns_scheduler/company_info/de_list_stock/de_list_stock_service.py,sha256=QNtKc1ZI6xHjupcxbOBN7fBhi6oAGtL7X1TQZVzfpnk,1993
|
|
15
|
+
mns_scheduler/company_info/em_stock_info/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
16
|
+
mns_scheduler/company_info/em_stock_info/sync_em_stock_info_sync.py,sha256=9NIv8HRAgjGFcTnw_i9YGQzQBZc57T2hdt66ciZcMZY,3922
|
|
17
|
+
mns_scheduler/company_info/remark/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
18
|
+
mns_scheduler/company_info/remark/company_remark_info_sync.py,sha256=L8wC8LU7-GYZb1TyKLjODJURROOEO4izZBxnWEM7Ahc,2334
|
|
19
|
+
mns_scheduler/concept/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
20
|
+
mns_scheduler/concept/clean/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
21
|
+
mns_scheduler/concept/clean/kpl_concept_clean_api.py,sha256=NuTJnu1uF7uQ4LcMpXHRKfdNBd-FC4rDmVWsFBj1n2I,4512
|
|
22
|
+
mns_scheduler/concept/clean/ths_concept_clean_api.py,sha256=BlAfu9zyeWmzbDKtgmhBiOyFKRNpA_iXVNKsP7S92wc,6933
|
|
23
|
+
mns_scheduler/concept/ths/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
24
|
+
mns_scheduler/concept/ths/common/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
25
|
+
mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py,sha256=mJHFdZGpkVn9xiby2eCYvapZAhQuxSfxQGrGsr3dso0,10222
|
|
26
|
+
mns_scheduler/concept/ths/common/ths_concept_update_common_api.py,sha256=Mwy2g5bXWJBbcS_qS7bY_yx7g41mIQ36GIwa0Qbrd0E,4577
|
|
27
|
+
mns_scheduler/concept/ths/detaill/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
|
+
mns_scheduler/concept/ths/detaill/ths_concept_detail_api.py,sha256=O99zE0QHGedcCdY_PKWtOYhR4BCAD2hJRO7lCD7gNfg,10865
|
|
29
|
+
mns_scheduler/concept/ths/sync_new_index/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
30
|
+
mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py,sha256=wllTGr3HfP4HSg776I5v6XcMGZMrunSTJCmWwTnT1VU,7923
|
|
31
|
+
mns_scheduler/concept/ths/update_concept_info/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
32
|
+
mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py,sha256=wwuLfjj9AnFcHP-oQPC5AhpwgZ8IsPiNUh-Z6swcngA,1380
|
|
33
|
+
mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py,sha256=uOB8blinBrQ2LRVxFSfOMaUn9G3PwOwEy_XaSReHhCY,9392
|
|
34
|
+
mns_scheduler/db/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
35
|
+
mns_scheduler/db/col_move_service.py,sha256=9pOrHJ6rQuMPQdGFho1IJMEy2xvpQ20iku3p20MuAhg,4238
|
|
36
|
+
mns_scheduler/db/db_status.py,sha256=e5eW5ZSm5J7tHvmxxhFmFdbZb2_oB_SAcdcFqc4KDmw,733
|
|
37
|
+
mns_scheduler/db/script/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
38
|
+
mns_scheduler/db/script/col_move_script.py,sha256=Qgo4rktcxJECXwQ4o1lxRj0g306lQhlRCs-0ngyUi70,1163
|
|
39
|
+
mns_scheduler/db/script/db_move/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
40
|
+
mns_scheduler/db/script/db_move/col_move_one_service.py,sha256=v-4qzgIy95iI0EVFBEh4XXJH5jCzDsMUtImFpz8yqJE,913
|
|
41
|
+
mns_scheduler/db/script/sync/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
42
|
+
mns_scheduler/db/script/sync/local_mongo_util.py,sha256=MFG-S7aUBLKe4tkhKNklUzpiZef2n078YXd39dfOMy0,7540
|
|
43
|
+
mns_scheduler/db/script/sync/remote_data_sync_to_local.py,sha256=1o2xR0Av9NvTFrxpIVfvclgJI2wiVslutj3-SkxB8cw,3675
|
|
44
|
+
mns_scheduler/db/script/sync/remote_mongo_util.py,sha256=-BCR2zeQ9z0zeZg6wO0aCS4bGnsGIohFRH7QR8XXJSo,10966
|
|
45
|
+
mns_scheduler/db/script/sync/sync_hui_ce_test_data.py,sha256=oymZRnt-cMnrrHod796XqSvc8vWSsCCpwx2Lbf0-jBc,2395
|
|
46
|
+
mns_scheduler/db/script/sync/sync_hui_ce_test_data_01.py,sha256=32F7kmxgube7F-_9-QhAHdjqWAQfRZZ51p7MdKi1u6I,2172
|
|
47
|
+
mns_scheduler/db/script/update/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
48
|
+
mns_scheduler/db/script/update/update_col_field.py,sha256=m7RJbNLTcaeknwHR50i3aebT--Rc6udpbOqyGwt61qg,1274
|
|
49
|
+
mns_scheduler/dt/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
50
|
+
mns_scheduler/dt/stock_dt_pool_sync.py,sha256=5ivRUOnFtOapZniwTbujf1lVq3y4btm2Cmd5R6JJAVo,3466
|
|
51
|
+
mns_scheduler/finance/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
52
|
+
mns_scheduler/finance/sync_financial_report_service_task.py,sha256=ROJ4aOtv3lRqMIhCyy9uV54Of5Q-LhzvvJslu33Jp08,8867
|
|
53
|
+
mns_scheduler/finance/em/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
54
|
+
mns_scheduler/finance/em/em_financial_asset_liability_sync_service_api.py,sha256=1e5VIdQV4U19CBJP0Ow_fp3WvfUF8sPQQQXG8zv5qjo,19420
|
|
55
|
+
mns_scheduler/finance/em/em_financial_profit_sync_service_api.py,sha256=j5xnzcSthy6qc5dYr52DnxqN2T4zf_rldlRWbLyz90I,14550
|
|
56
|
+
mns_scheduler/finance/em/finance_common_api.py,sha256=rqsVJZEklJjvM9ogl-9GQaWxyh1LE6IKoTkQkN5cBvE,2453
|
|
57
|
+
mns_scheduler/finance/xue_qiu/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
58
|
+
mns_scheduler/finance/xue_qiu/down_load_xueqiu_report_api.py,sha256=r_RtfM2SBzQcvO1MH8Dt8mOXg2tbZOLz0sNwqne9jFs,2769
|
|
59
|
+
mns_scheduler/finance/xue_qiu/sync_xue_qiu_fiance_data.py,sha256=aRqNPqnyCP_sKl7afdk3Xrfa9IRCbU6MDK3_AlxTDBQ,7218
|
|
60
|
+
mns_scheduler/hk/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
61
|
+
mns_scheduler/hk/hk_company_info_sync_service_api.py,sha256=MGIKodN9oXaY0iwtdsrg4wwHXkMglFvY8eyeTpbas6k,3724
|
|
62
|
+
mns_scheduler/hk/hk_industry_info_sync_service_api.py,sha256=WdCTaBi4GDicWfmiYbI-byBCXZwknkYZHk6y2IloMys,2275
|
|
63
|
+
mns_scheduler/industry/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
64
|
+
mns_scheduler/industry/ths/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
65
|
+
mns_scheduler/industry/ths/ths_industry_index_service.py,sha256=MHvzUsDHnmdQn-mJc_D2uBKP0qvVWWagDV568xChPqg,2686
|
|
66
|
+
mns_scheduler/industry/ths/ths_industry_sync_service.py,sha256=r0jLbY3JcnCGgLWYzRrXiqIbeT8PBGnG2dT_INuN824,2762
|
|
67
|
+
mns_scheduler/irm/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
68
|
+
mns_scheduler/irm/stock_irm_cninfo_service.py,sha256=ChOl_zWNSCXpj-NlveLaSsfie8hARusU4Ut1V_LAeOc,9759
|
|
69
|
+
mns_scheduler/irm/api/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
70
|
+
mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py,sha256=EE09q9iIPNAEzxhKCM-2tsm1FZID3-fqdfikK1VS6H8,4931
|
|
71
|
+
mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py,sha256=iJ9K8FhatQpCx5PqusIH5x4MAw3F1v3fYC1Ztsp_2Zw,6199
|
|
72
|
+
mns_scheduler/k_line/__init__.py,sha256=ffZXFCLFdIwOsbxnw__u1MbQYh9yz7Bs8UMP6VF0X2M,161
|
|
73
|
+
mns_scheduler/k_line/clean/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
74
|
+
mns_scheduler/k_line/clean/k_line_info_clean_impl.py,sha256=ZTnSpQ2zKnNPWCkHKPJkLdkxVK29szgufxNV6uvXG7s,1344
|
|
75
|
+
mns_scheduler/k_line/clean/k_line_info_clean_task.py,sha256=i-6XSHUC6NxgZubCfU8NGyA0YHHMgi1b-xxlrRhg-is,9026
|
|
76
|
+
mns_scheduler/k_line/clean/daily/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
77
|
+
mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py,sha256=gIoInwd1eCKCmhIOJHo8MuNEwj8ehMxYw83j52pxmxk,20447
|
|
78
|
+
mns_scheduler/k_line/clean/daily/daily_k_line_service.py,sha256=1S-6sih0KptZEWYBN3jgVJHlv5y11QPONYjR-MpOQn8,6906
|
|
79
|
+
mns_scheduler/k_line/clean/week_month/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
80
|
+
mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py,sha256=n2osY8dozHClIlSOE7NR6S_oK_8GV-z72Az13D3fhCQ,10160
|
|
81
|
+
mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py,sha256=0rc2Rz_EoqoqpVvgPe4daCe09JtHBlJsQr1bMIlBQ2o,5526
|
|
82
|
+
mns_scheduler/k_line/common/__init__.py,sha256=itoGlqKhsx7EVXQoD1vchDKQ5GPB16vDjofTSuQtrXg,161
|
|
83
|
+
mns_scheduler/k_line/common/k_line_common_api.py,sha256=2CPQxGfYxwMrTkjpEwywQTsuAMh10NKQysUxWM0bWvY,7116
|
|
84
|
+
mns_scheduler/k_line/hot_stocks/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
85
|
+
mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py,sha256=8woZzGVORYX9KZr6xtfiYYgApDKissnzYM6hS2k6XBA,2628
|
|
86
|
+
mns_scheduler/k_line/month_week_daily/__init__.py,sha256=ffZXFCLFdIwOsbxnw__u1MbQYh9yz7Bs8UMP6VF0X2M,161
|
|
87
|
+
mns_scheduler/k_line/month_week_daily/bfq_k_line_sync.py,sha256=ccHC9W3tQsZJI6BEpeH5DJ_Zvb6PZb5hYgF_OlGM-14,2668
|
|
88
|
+
mns_scheduler/k_line/month_week_daily/daily_week_month_line_sync.py,sha256=xhPgLUhb-pGg-nYXvsiJzsPAnIzQuQ46es6oWsDiiqg,5619
|
|
89
|
+
mns_scheduler/k_line/sync_status/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
90
|
+
mns_scheduler/k_line/sync_status/k_line_sync_status_check.py,sha256=GXKUiRggwk9phisd_QzPgC8gVezEpPbjitUJYxYjAXs,2218
|
|
91
|
+
mns_scheduler/k_line/test/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
92
|
+
mns_scheduler/k_line/test/k_line_info_clean_his_data.py,sha256=eWtzWL1geX5rrwfrlvDCuaTvy1CI9Zgk7CC4zlsncD4,1663
|
|
93
|
+
mns_scheduler/k_line/year_quarter/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
94
|
+
mns_scheduler/k_line/year_quarter/year_quarter_line_sync.py,sha256=XjugLj0nzzp6ZHNjZW5zAWud1Sd6zgJaIwJtMCgiAko,3286
|
|
95
|
+
mns_scheduler/kpl/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
96
|
+
mns_scheduler/kpl/selection/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
97
|
+
mns_scheduler/kpl/selection/index/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
98
|
+
mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py,sha256=Cle5cU90HVo-vulFCRwaAFDG-J3dCriXmWm1OKHPnr4,4748
|
|
99
|
+
mns_scheduler/kpl/selection/index/sync_best_choose_index.py,sha256=-34drqAMsx792DxR8P1A8DrGCM5yIVGsop3UzDNzsPw,8016
|
|
100
|
+
mns_scheduler/kpl/selection/symbol/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
101
|
+
mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py,sha256=Z0p3r-JWpxlEK2u00HIzVqEEg64r5AE72KQ2Bivwv_k,4756
|
|
102
|
+
mns_scheduler/kpl/selection/symbol/sync_kpl_concept_symbol_choose_reason_api.py,sha256=KHFo3v_xpjHqWTmXw0P1kP14DXJxIcXVj3c3AtIC6W8,5622
|
|
103
|
+
mns_scheduler/kpl/selection/total/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
104
|
+
mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py,sha256=ljacoCP2gGtiwOT89FywE38vGGwZv1FmHNxS0PSx6-A,10755
|
|
105
|
+
mns_scheduler/lhb/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
106
|
+
mns_scheduler/lhb/stock_lhb_sync_service.py,sha256=-nJBWo7LMyB4oCZE9BWX_aRyh5c6iAljPe7t4okSBZg,641
|
|
107
|
+
mns_scheduler/open/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
108
|
+
mns_scheduler/open/sync_one_day_open_data_to_db_service.py,sha256=4ghPSJaeSZB974TGLUWFIpBIy_5nSppCfVWFY4Ofurk,2638
|
|
109
|
+
mns_scheduler/risk/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
110
|
+
mns_scheduler/risk/financial_report_risk_check_api.py,sha256=cOW_zh0bGn432cjj_kLlXW1Yp66Ne17aPwwg77yzOmE,1648
|
|
111
|
+
mns_scheduler/risk/compliance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
112
|
+
mns_scheduler/risk/compliance/undisclosed_annual_report_api.py,sha256=nlA4Mc6rhuCt_cveaVpKtbSTN1JJtzJcXudUAzJyCkE,3873
|
|
113
|
+
mns_scheduler/risk/financial/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
114
|
+
mns_scheduler/risk/financial/annual_report_audit_check_api.py,sha256=bNiMXDNt88XEsk0W8oUOQ4OdBvJzwRGjN9SNAygYlhI,2580
|
|
115
|
+
mns_scheduler/risk/financial/net_assets_check_api.py,sha256=glhBAyixc4mNfFUCRyT22wsAQC20R67jthyg8uvsOS4,4737
|
|
116
|
+
mns_scheduler/risk/financial/profit_income_check_api.py,sha256=PAKAcDlau3PCPlQxL1lJ_fsL6HMHqN0Ew5s4L1DfKkE,4568
|
|
117
|
+
mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py,sha256=SQ7dieSCOf1z42Wi1zDEii3poAT5wfyBrV43dXkAaaw,22
|
|
118
|
+
mns_scheduler/risk/major_violations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
119
|
+
mns_scheduler/risk/major_violations/register_and_investigate_stock_sync_api.py,sha256=Mf_jrNE7m2kVILfj-SukVpZ4d2a-BBZrXhPK1oR_vkw,5672
|
|
120
|
+
mns_scheduler/risk/self/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
121
|
+
mns_scheduler/risk/self/wei_pan_stock_api.py,sha256=ac_hhdwoK8-uI_ag40YEj4iTOkB8GZ9vzT9mB8Rlwbc,1899
|
|
122
|
+
mns_scheduler/risk/test/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
123
|
+
mns_scheduler/risk/test/fix_blask_list.py,sha256=IRDedHWuTi9y8EIZSwdiRxEUZcYAY3TH15GgJRmnQEw,1245
|
|
124
|
+
mns_scheduler/risk/transactions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
125
|
+
mns_scheduler/risk/transactions/transactions_check_api.py,sha256=8lXid7P8NTVW9aPKS-v6Tv0wiseCnasVQQzD9sR49XI,7379
|
|
126
|
+
mns_scheduler/self_choose/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
127
|
+
mns_scheduler/self_choose/ths_self_choose_service.py,sha256=g3w4DBE_BGo-ey4Sj_Z5wqjUugTrMBAjEpGcoDGPyHE,7155
|
|
128
|
+
mns_scheduler/trade/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
129
|
+
mns_scheduler/trade/auto_ipo_buy_api.py,sha256=jVe5ZiXwzkDy_j_4X4rUamSzJpmzhV16lNKwbeWgpQw,386
|
|
130
|
+
mns_scheduler/trade/auto_sell_service_api.py,sha256=A2RB3WFxVHqbNPaPvhIgO-3uaicFZVmBKUy2TsfMU90,4624
|
|
131
|
+
mns_scheduler/trade/sync_position_api.py,sha256=o73_qdh_2uzOed6HFzAipM5hKOLqVhThph2DcAri3Oc,4136
|
|
132
|
+
mns_scheduler/trade/auto_login/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
133
|
+
mns_scheduler/trade/auto_login/trader_auto_service.py,sha256=bsagj26s74Zv5OEyGahhBX_OK4Iuo5ZmuItsON9DDmY,795
|
|
134
|
+
mns_scheduler/trade/balance/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
135
|
+
mns_scheduler/trade/balance/ths_account_balance_service.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
136
|
+
mns_scheduler/trade/task/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
137
|
+
mns_scheduler/trade/task/trader_task_service.py,sha256=1vdjfs-M9y0ana2OLwWdlkB9YS-hm9LrChlw3Ectyeg,2305
|
|
138
|
+
mns_scheduler/trade/tfp/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
139
|
+
mns_scheduler/trade/tfp/stock_tfp_info_sync.py,sha256=7sHUhvMW_5vEyfVhFGDP7It2F27STb0OcpNnBCQjZ8I,2574
|
|
140
|
+
mns_scheduler/zb/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
|
|
141
|
+
mns_scheduler/zb/stock_zb_pool_sync.py,sha256=YXXmofkOsXxTQSUboy7AfEQUeszXVop5oZxLKBqQpJE,1272
|
|
142
|
+
mns_scheduler/zt/__init__.py,sha256=Rzolrn2R5RZIj-eOmu9KcL6oZBY9Wjz_uBFXPlzirQc,1641
|
|
143
|
+
mns_scheduler/zt/connected_boards/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
|
|
144
|
+
mns_scheduler/zt/connected_boards/zt_five_boards_sync_api.py,sha256=HfjPHKD99fU9c37kSenEX2_qNvFAjQGgy8ERuacSxwk,10916
|
|
145
|
+
mns_scheduler/zt/export/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
|
|
146
|
+
mns_scheduler/zt/export/export_kcx_high_chg_open_data_to_excel.py,sha256=9LK1s2BCzsXLMAYMmiMAZsmz8iha88JVcp6SKqIW37s,4063
|
|
147
|
+
mns_scheduler/zt/high_chg/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
148
|
+
mns_scheduler/zt/high_chg/sync_high_chg_pool_service.py,sha256=rrvFgxduBTRdJig5KKd-BoepKpCn5SKDSRo6A4U3LFI,13329
|
|
149
|
+
mns_scheduler/zt/high_chg/sync_high_chg_real_time_quotes_service.py,sha256=IvP8tTtWTuMvTdIGFGLmhf9MH_Qfa8P5IpRuHfxTkdw,6351
|
|
150
|
+
mns_scheduler/zt/open_data/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
|
|
151
|
+
mns_scheduler/zt/open_data/kcx_high_chg_open_data_sync.py,sha256=wZiqOre2UK9CxIR7dDk11DmqRY3n2_eE2pe0JfmMcjk,11616
|
|
152
|
+
mns_scheduler/zt/script/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
153
|
+
mns_scheduler/zt/script/fix_error_deal_day.py,sha256=7GrCfI_XCq5G69_17JS5i4FE0l3pwWVkL-ZnqmH5FVA,1624
|
|
154
|
+
mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py,sha256=k2nrBjG41LU4ASXsFwbceg_WaROyB85XBmuccmre7Z0,5571
|
|
155
|
+
mns_scheduler/zt/script/sync_high_chg_pool_his_data.py,sha256=WX5ZlV0x2kkXiLTep8fcs2ZkWY5BMWS8lQv8xpq4DlY,1685
|
|
156
|
+
mns_scheduler/zt/script/sync_now_higt_chg_zt.py,sha256=7qUtn58ty9Vc6kY33BooCDIOojDGmSf9U5ncAtZt4cc,1853
|
|
157
|
+
mns_scheduler/zt/zt_pool/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
|
|
158
|
+
mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py,sha256=HMPFX4vf80XEE5RIByF0GEXsWIKWyj7CRZTzHIecC0g,19192
|
|
159
|
+
mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py,sha256=LI4o4_sovmLj1tMROPRQRCj5gaITKLGoYH-nUCuysbU,7501
|
|
160
|
+
mns_scheduler/zt/zt_pool/update_null_zt_reason_api.py,sha256=A-qohVTrnSd8Bs9gubjxScGjB7zEZOBLJuVZfuIwLeU,2445
|
|
161
|
+
mns_scheduler/zz_task/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
162
|
+
mns_scheduler/zz_task/data_sync_task.py,sha256=GbOJ0DhHVxTAz9W09POLZl3AzYFlTsPP7Q1VikSfQkY,23545
|
|
163
|
+
mns_scheduler/zz_task/compensation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
164
|
+
mns_scheduler/zz_task/compensation/compensate_task.py,sha256=Dyo66NcSnXZ-Cne4_v77BBb27SemAiuGXRLnvQ26X0E,6464
|
|
165
|
+
mns_scheduler/zz_task/compensation/compensate_task_one_day.py,sha256=jvaYpUS8AyJHgJTNchbco6eXMSzW1o4YNHgUBqrRTDk,5753
|
|
166
|
+
mns_scheduler-1.4.3.2.dist-info/METADATA,sha256=WFmT7oEk8SMVpymzgqqdx7mr0DeZ4UAeJRWCLMiS9wo,64
|
|
167
|
+
mns_scheduler-1.4.3.2.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
168
|
+
mns_scheduler-1.4.3.2.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
|
|
169
|
+
mns_scheduler-1.4.3.2.dist-info/RECORD,,
|
|
@@ -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,99 +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
|
-
|
|
9
|
-
import akshare as ak
|
|
10
|
-
from loguru import logger
|
|
11
|
-
from datetime import datetime
|
|
12
|
-
import mns_common.utils.date_handle_util as date_handle_util
|
|
13
|
-
import mns_common.db.MongodbUtil as MongodbUtil
|
|
14
|
-
import mns_scheduler.backup.em.em_new_concept_sync_common_api as em_new_concept_sync_common_api
|
|
15
|
-
import mns_common.api.em.em_concept_index_api as em_concept_index_api
|
|
16
|
-
|
|
17
|
-
mongodb_util = MongodbUtil('27017')
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
# 同步概念k线
|
|
21
|
-
def sync_concept_k_line(symbol, period, start_date, end_date, adjust):
|
|
22
|
-
try:
|
|
23
|
-
stock_board_concept_hist_em_df = ak.stock_board_concept_hist_em(
|
|
24
|
-
symbol=symbol, period=period, start_date=start_date, end_date=end_date, adjust=adjust
|
|
25
|
-
)
|
|
26
|
-
stock_board_concept_hist_em_df = stock_board_concept_hist_em_df.rename(columns={"日期": "date",
|
|
27
|
-
"开盘": "open",
|
|
28
|
-
"收盘": "close",
|
|
29
|
-
"最高": "high",
|
|
30
|
-
"最低": "low",
|
|
31
|
-
"涨跌幅": "chg",
|
|
32
|
-
"涨跌额": "change",
|
|
33
|
-
"成交量": "volume",
|
|
34
|
-
"成交额": "amount",
|
|
35
|
-
"振幅": "pct_chg",
|
|
36
|
-
"换手率": "exchange"
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
return stock_board_concept_hist_em_df
|
|
40
|
-
except BaseException as e:
|
|
41
|
-
logger.error("同步东方财富概念信息异常:{}", e)
|
|
42
|
-
return None
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
# 同步所有历史概念数据
|
|
46
|
-
def sync_his_em_concept():
|
|
47
|
-
now_date = datetime.now()
|
|
48
|
-
str_day = now_date.strftime('%Y-%m-%d')
|
|
49
|
-
|
|
50
|
-
all_concept_list = em_concept_index_api.sync_all_concept()
|
|
51
|
-
for stock_one in all_concept_list.itertuples():
|
|
52
|
-
try:
|
|
53
|
-
stock_one_df_copy = all_concept_list.loc[all_concept_list['concept_code'] == stock_one.concept_code]
|
|
54
|
-
stock_one_df = stock_one_df_copy.copy()
|
|
55
|
-
|
|
56
|
-
stock_board_concept_hist_em_df = sync_concept_k_line(
|
|
57
|
-
symbol=stock_one.concept_name, period="daily", start_date="19980729",
|
|
58
|
-
end_date=date_handle_util.no_slash_date(str_day), adjust="qfq"
|
|
59
|
-
)
|
|
60
|
-
stock_board_concept_hist_em_df = stock_board_concept_hist_em_df.sort_values(by=['date'], ascending=True)
|
|
61
|
-
stock_board_concept_hist_em_df_first_day = stock_board_concept_hist_em_df.iloc[0:1]
|
|
62
|
-
|
|
63
|
-
list_date = list(stock_board_concept_hist_em_df_first_day['date'])[0]
|
|
64
|
-
str_now_time = list_date + " " + "09:10:00"
|
|
65
|
-
stock_one_df.loc[:, 'str_now_time'] = str_now_time
|
|
66
|
-
|
|
67
|
-
stock_one_df.loc[:, 'str_day'] = list_date
|
|
68
|
-
|
|
69
|
-
stock_one_df['_id'] = stock_one_df['concept_code']
|
|
70
|
-
stock_one_df['url'] = "http://quote.eastmoney.com/center/boardlist.html#boards-" + stock_one.concept_code
|
|
71
|
-
stock_one_df['success'] = True
|
|
72
|
-
|
|
73
|
-
mongodb_util.save_mongo(stock_one_df, 'em_concept_list')
|
|
74
|
-
#
|
|
75
|
-
concept_detail_list = em_new_concept_sync_common_api.sync_concept_detail(stock_one.concept_code)
|
|
76
|
-
|
|
77
|
-
concept_detail_list.loc[:, 'concept_code'] = stock_one.concept_code
|
|
78
|
-
concept_detail_list.loc[:, 'concept_name'] = stock_one.concept_name
|
|
79
|
-
concept_detail_list.loc[:, 'str_day'] = list_date
|
|
80
|
-
|
|
81
|
-
concept_detail_list.loc[:, 'str_now_time'] = str_now_time
|
|
82
|
-
|
|
83
|
-
concept_detail_list['_id'] = concept_detail_list['symbol'] + '-' + concept_detail_list['concept_code']
|
|
84
|
-
|
|
85
|
-
mongodb_util.insert_mongo(concept_detail_list, 'em_stock_concept_detail')
|
|
86
|
-
except BaseException as e:
|
|
87
|
-
logger.error("发生异常:{}", e)
|
|
88
|
-
continue
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if __name__ == '__main__':
|
|
92
|
-
# all_concept = sync_all_concept()
|
|
93
|
-
# all_concept = all_concept.loc[~(all_concept['list_day'] == '-')]
|
|
94
|
-
# all_concept = all_concept.sort_values(by=['list_day'], ascending=False)
|
|
95
|
-
sync_his_em_concept()
|
|
96
|
-
# stock_board_concept_hist_em_df = sync_concept_k_line(
|
|
97
|
-
# symbol="车联网", period="daily", start_date="20220101", end_date="20221128", adjust=""
|
|
98
|
-
# )
|
|
99
|
-
# sync_concept_detail('MLOps概念')
|
|
@@ -1,139 +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
|
-
|
|
9
|
-
from mns_common.db.MongodbUtil import MongodbUtil
|
|
10
|
-
import mns_common.api.msg.push_msg_api as push_msg_api
|
|
11
|
-
import mns_common.api.em.em_concept_index_api as em_concept_index_api
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
import pandas as pd
|
|
15
|
-
import mns_common.utils.data_frame_util as data_frame_util
|
|
16
|
-
from loguru import logger
|
|
17
|
-
mongodb_util = MongodbUtil('27017')
|
|
18
|
-
|
|
19
|
-
max_concept_code = 1200
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
# 获取最大概念代码
|
|
23
|
-
def get_max_concept_code():
|
|
24
|
-
query = {"concept_code": {'$ne': 'null'}, "success": True}
|
|
25
|
-
ths_concept_max = mongodb_util.descend_query(query, 'em_concept_list', 'concept_code', 1)
|
|
26
|
-
if ths_concept_max.shape[0] == 0:
|
|
27
|
-
concept_code = 'BK1134'
|
|
28
|
-
else:
|
|
29
|
-
concept_code = list(ths_concept_max['concept_code'])[0]
|
|
30
|
-
concept_code = concept_code.replace('BK', '')
|
|
31
|
-
return concept_code
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
# 获取概念名称
|
|
35
|
-
def get_concept_name(concept_code):
|
|
36
|
-
concept_df = em_concept_index_api.sync_all_concept()
|
|
37
|
-
concept_df_one = concept_df.loc[concept_df['concept_code'] == concept_code]
|
|
38
|
-
if data_frame_util.is_empty(concept_df_one):
|
|
39
|
-
return ""
|
|
40
|
-
else:
|
|
41
|
-
return concept_df_one
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
# 获取概念详情
|
|
45
|
-
def sync_concept_detail(concept_code):
|
|
46
|
-
try:
|
|
47
|
-
stock_board_concept_cons_em_df = em_concept_index_api.stock_board_concept_cons_em(concept_code)
|
|
48
|
-
if data_frame_util.is_empty(stock_board_concept_cons_em_df):
|
|
49
|
-
return None
|
|
50
|
-
stock_board_concept_cons_em_df = stock_board_concept_cons_em_df.rename(columns={"序号": "index",
|
|
51
|
-
"代码": "symbol",
|
|
52
|
-
"名称": "name",
|
|
53
|
-
"最新价": "now_price",
|
|
54
|
-
"涨跌幅": "chg",
|
|
55
|
-
"涨跌额": "change",
|
|
56
|
-
"成交量": "volume",
|
|
57
|
-
"成交额": "amount",
|
|
58
|
-
"振幅": "pct_chg",
|
|
59
|
-
"最高": "high",
|
|
60
|
-
"最低": "low",
|
|
61
|
-
"今开": "open",
|
|
62
|
-
"昨收": "last_price",
|
|
63
|
-
"换手率": "exchange",
|
|
64
|
-
"市盈率-动态": 'pe',
|
|
65
|
-
"市净率": 'pb'
|
|
66
|
-
})
|
|
67
|
-
return stock_board_concept_cons_em_df
|
|
68
|
-
except BaseException as e:
|
|
69
|
-
logger.error("同步东方财富概念信息异常:{}", e)
|
|
70
|
-
return None
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
# web端获取新概念消息推送
|
|
74
|
-
def push_msg_to_we_chat_web(concept_code, concept_name):
|
|
75
|
-
url = 'http://quote.eastmoney.com/center/boardlist.html#boards-' + str(concept_code)
|
|
76
|
-
msg = "概念代码:" + str(concept_code) + "," + "概念名称:" + concept_name + "," + "url: " + url
|
|
77
|
-
title = "新增东财概念:" + str(concept_code) + "-" + concept_name
|
|
78
|
-
push_msg_api.push_msg_to_wechat(title, msg)
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
# 保存新概念信息到数据库
|
|
82
|
-
def save_em_concept_list(concept_code, concept_name, str_day, str_now_time, concept_df_one):
|
|
83
|
-
url = 'https://quote.eastmoney.com/center/boardlist.html#boards-' + str(concept_code)
|
|
84
|
-
if data_frame_util.is_empty(concept_df_one):
|
|
85
|
-
em_concept_list = pd.DataFrame([
|
|
86
|
-
[concept_code, concept_code, concept_name, str_day, url, str_now_time, True],
|
|
87
|
-
], columns=['_id', 'concept_code', 'concept_name', 'str_day', 'url', 'str_now_time', 'success'])
|
|
88
|
-
|
|
89
|
-
mongodb_util.save_mongo(em_concept_list, 'em_concept_list')
|
|
90
|
-
else:
|
|
91
|
-
concept_df_one['_id'] = concept_df_one['concept_code']
|
|
92
|
-
concept_df_one.loc[:, 'str_now_time'] = str_now_time
|
|
93
|
-
concept_df_one.loc[:, 'str_day'] = str_day
|
|
94
|
-
concept_df_one.loc[:, 'url'] = url
|
|
95
|
-
concept_df_one.loc[:, 'success'] = True
|
|
96
|
-
mongodb_util.save_mongo(concept_df_one, 'em_concept_list')
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
# 保存新概念详细信息到数据库
|
|
100
|
-
def save_ths_concept_detail(new_concept_symbol_df, concept_name, str_day, str_now_time, concept_code):
|
|
101
|
-
new_concept_symbol_df['_id'] = new_concept_symbol_df['symbol'] + '-' + concept_code
|
|
102
|
-
|
|
103
|
-
new_concept_symbol_df['concept_code'] = concept_code
|
|
104
|
-
new_concept_symbol_df['concept_name'] = concept_name
|
|
105
|
-
new_concept_symbol_df['str_day'] = str_day
|
|
106
|
-
new_concept_symbol_df['str_now_time'] = str_now_time
|
|
107
|
-
|
|
108
|
-
new_concept_symbol_list = list(new_concept_symbol_df['symbol'])
|
|
109
|
-
|
|
110
|
-
query_company_info = {'symbol': {'$in': new_concept_symbol_list}}
|
|
111
|
-
query_field = {"first_industry": 1, "first_industry": 1, "industry": 1, "company_type": 1, "flow_mv_sp": 1,
|
|
112
|
-
"total_mv_sp": 1}
|
|
113
|
-
company_info = mongodb_util.find_query_data_choose_field('company_info', query_company_info, query_field)
|
|
114
|
-
|
|
115
|
-
company_info = company_info.set_index(['_id'], drop=True)
|
|
116
|
-
new_concept_symbol_df = new_concept_symbol_df.set_index(['symbol'], drop=False)
|
|
117
|
-
|
|
118
|
-
new_concept_symbol_df = pd.merge(new_concept_symbol_df, company_info, how='outer',
|
|
119
|
-
left_index=True, right_index=True)
|
|
120
|
-
query = {'concept_code': concept_code}
|
|
121
|
-
exist_concept_detail = mongodb_util.find_query_data('em_stock_concept_detail', query)
|
|
122
|
-
if data_frame_util.is_empty(exist_concept_detail):
|
|
123
|
-
mongodb_util.save_mongo(new_concept_symbol_df, 'em_stock_concept_detail')
|
|
124
|
-
else:
|
|
125
|
-
exist_concept_detail_symbol_list = list(exist_concept_detail['symbol'])
|
|
126
|
-
new_concept_symbol_df = new_concept_symbol_df.loc[~(
|
|
127
|
-
new_concept_symbol_df['symbol'].isin(exist_concept_detail_symbol_list))]
|
|
128
|
-
if new_concept_symbol_df.shape[0] > 0:
|
|
129
|
-
mongodb_util.save_mongo(new_concept_symbol_df, 'em_stock_concept_detail')
|
|
130
|
-
# update_company_info(new_concept_symbol_df, concept_code, concept_name, str_day)
|
|
131
|
-
# # 公司缓存信息清除
|
|
132
|
-
# common_service_fun_api.company_info_industry_cache_clear()
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
if __name__ == '__main__':
|
|
136
|
-
get_concept_name('BK1134')
|
|
137
|
-
|
|
138
|
-
sync_concept_detail('BK1055')
|
|
139
|
-
get_max_concept_code()
|
|
@@ -1,55 +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
|
-
|
|
9
|
-
import datetime
|
|
10
|
-
import time
|
|
11
|
-
from loguru import logger
|
|
12
|
-
import mns_scheduler.backup.em.em_new_concept_sync_common_api as em_new_concept_sync_common_api
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
# 同步东财新概念
|
|
16
|
-
def sync_new_concept_data():
|
|
17
|
-
concept_code = em_new_concept_sync_common_api.get_max_concept_code()
|
|
18
|
-
# 装换为数字
|
|
19
|
-
concept_code = int(concept_code)
|
|
20
|
-
|
|
21
|
-
concept_code = concept_code + 1
|
|
22
|
-
|
|
23
|
-
while concept_code < em_new_concept_sync_common_api.max_concept_code:
|
|
24
|
-
try:
|
|
25
|
-
now_date = datetime.datetime.now()
|
|
26
|
-
str_day = now_date.strftime('%Y-%m-%d')
|
|
27
|
-
str_now_time = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
28
|
-
str_concept_code = 'BK' + str(concept_code)
|
|
29
|
-
new_concept_symbol_df = em_new_concept_sync_common_api.sync_concept_detail(str_concept_code)
|
|
30
|
-
if new_concept_symbol_df is None or new_concept_symbol_df.shape[0] == 0:
|
|
31
|
-
concept_code = concept_code + 1
|
|
32
|
-
time.sleep(1)
|
|
33
|
-
continue
|
|
34
|
-
time.sleep(2)
|
|
35
|
-
concept_df_one = em_new_concept_sync_common_api.get_concept_name(str_concept_code)
|
|
36
|
-
# 获取概念名称
|
|
37
|
-
concept_name = list(concept_df_one['concept_name'])[0]
|
|
38
|
-
|
|
39
|
-
# 推送新概念信息到微信
|
|
40
|
-
em_new_concept_sync_common_api.push_msg_to_we_chat_web(str_concept_code, concept_name)
|
|
41
|
-
# 保存新概念信息到数据库
|
|
42
|
-
em_new_concept_sync_common_api.save_em_concept_list(str_concept_code, concept_name, str_day, str_now_time,
|
|
43
|
-
concept_df_one)
|
|
44
|
-
# 保存新概念详细信息到数据库
|
|
45
|
-
em_new_concept_sync_common_api.save_ths_concept_detail(new_concept_symbol_df, concept_name, str_day,
|
|
46
|
-
str_now_time, str_concept_code)
|
|
47
|
-
|
|
48
|
-
concept_code = concept_code + 1
|
|
49
|
-
except BaseException as e:
|
|
50
|
-
logger.error("同步新概念异常:{},concept_code:{}", e, concept_code)
|
|
51
|
-
concept_code = concept_code + 1
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if __name__ == '__main__':
|
|
55
|
-
sync_new_concept_data()
|
|
@@ -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)
|