mns-scheduler 1.1.3.5__py3-none-any.whl → 1.1.3.9__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.

Potentially problematic release.


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

Files changed (30) hide show
  1. mns_scheduler/common/redis/redis_msg_push_service.py +18 -0
  2. mns_scheduler/company_info/clean/company_info_clean_api.py +1 -1
  3. mns_scheduler/concept/clean/ths_concept_clean_api.py +56 -50
  4. mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +23 -29
  5. mns_scheduler/concept/{common → ths}/detaill/ths_concept_detail_api.py +33 -7
  6. mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py +18 -26
  7. mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +9 -21
  8. mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +11 -8
  9. mns_scheduler/risk/self/wei_pan_stock_api.py +1 -1
  10. mns_scheduler/self_choose/ths_self_choose_service.py +27 -9
  11. mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py +19 -19
  12. mns_scheduler/zz_task/data_sync_task.py +1 -1
  13. {mns_scheduler-1.1.3.5.dist-info → mns_scheduler-1.1.3.9.dist-info}/METADATA +1 -1
  14. {mns_scheduler-1.1.3.5.dist-info → mns_scheduler-1.1.3.9.dist-info}/RECORD +19 -29
  15. mns_scheduler/backup/data/collection_move.py +0 -53
  16. mns_scheduler/backup/data/sync_data_to_local.py +0 -55
  17. mns_scheduler/backup/data/sync_remote_by_str_day.py +0 -33
  18. mns_scheduler/backup/em/__init__.py +0 -7
  19. mns_scheduler/backup/em/em_new_concept_his_sync.py +0 -99
  20. mns_scheduler/backup/em/em_new_concept_sync_common_api.py +0 -139
  21. mns_scheduler/backup/em/em_new_concept_sync_web.py +0 -55
  22. mns_scheduler/backup/ths/sync_ths_concept_by_ak_api.py +0 -103
  23. mns_scheduler/backup/ths/sync_ths_new_concept_by_web_api.py +0 -88
  24. mns_scheduler/concept/common/__init__.py +0 -0
  25. mns_scheduler/concept/common/detaill/__init__.py +0 -0
  26. /mns_scheduler/{backup → common}/__init__.py +0 -0
  27. /mns_scheduler/{backup/data → common/redis}/__init__.py +0 -0
  28. /mns_scheduler/{backup/ths → concept/ths/detaill}/__init__.py +0 -0
  29. {mns_scheduler-1.1.3.5.dist-info → mns_scheduler-1.1.3.9.dist-info}/WHEEL +0 -0
  30. {mns_scheduler-1.1.3.5.dist-info → mns_scheduler-1.1.3.9.dist-info}/top_level.txt +0 -0
@@ -1,23 +1,14 @@
1
1
  mns_scheduler/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
2
- mns_scheduler/backup/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
3
- mns_scheduler/backup/data/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
4
- mns_scheduler/backup/data/collection_move.py,sha256=WZN6-312jBbWrNqXCSk-0yTQ60ajUUWAqr2exVfotKU,2005
5
- mns_scheduler/backup/data/sync_data_to_local.py,sha256=o_kEcBoG8-CjLS7f_cXUBMo_z5MHn2z1WYnaobNDW90,1737
6
- mns_scheduler/backup/data/sync_remote_by_str_day.py,sha256=uEi-8j5gqRvWoJwIJGAr1Dc7UCmpXAh7q1IMS-Z88Fw,1220
7
- mns_scheduler/backup/em/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
8
- mns_scheduler/backup/em/em_new_concept_his_sync.py,sha256=Yqbuz9VE9433o0Z6BvDo5adhj3lK4vmN66XNQBIdC1k,4992
9
- mns_scheduler/backup/em/em_new_concept_sync_common_api.py,sha256=KnNCf0KXy31GFwF1-wbbkfDM-H7-cEtcVoCwl4QmoVs,7083
10
- mns_scheduler/backup/em/em_new_concept_sync_web.py,sha256=wVS0yLyPYzpcxfWAuUqmqbYkjw9wjpo48CvLSZFckzw,2334
11
- mns_scheduler/backup/ths/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- mns_scheduler/backup/ths/sync_ths_concept_by_ak_api.py,sha256=8QBiRKc0Q3ez-kBwvz7G8HrFDD_ANd8smOpQtGyvKIs,5371
13
- mns_scheduler/backup/ths/sync_ths_new_concept_by_web_api.py,sha256=dLd2V67AFnE9xf5H8YGyaJ0j7z8FhtTemFVGOuOeHJ4,4087
14
2
  mns_scheduler/big_deal/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
15
3
  mns_scheduler/big_deal/ths_big_deal_sync.py,sha256=aMFj-_pLprh4vGjSSzmr_tlYoPA0L4Lm0SkLRkQwIiw,4564
4
+ mns_scheduler/common/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
5
+ mns_scheduler/common/redis/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
6
+ mns_scheduler/common/redis/redis_msg_push_service.py,sha256=LypT8Sl91xGcO1bF9o3utThk_SUtotuD-UEfgFjCww8,476
16
7
  mns_scheduler/company_info/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
17
8
  mns_scheduler/company_info/base/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
18
9
  mns_scheduler/company_info/base/sync_company_base_info_api.py,sha256=NRuwc5oJF9Ngt932OrnG76oP22OmkjbGgcWKgWplafg,19106
19
10
  mns_scheduler/company_info/clean/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
20
- mns_scheduler/company_info/clean/company_info_clean_api.py,sha256=Pn2cRt3oRH-VRkHMZdsp-nJTFWrD5VSVRoH_uI_8-j0,4861
11
+ mns_scheduler/company_info/clean/company_info_clean_api.py,sha256=n3kxsqihPjKJvGDkAjMYqB_U2EPemOi1Yjez5yOYJeo,4858
21
12
  mns_scheduler/company_info/constant/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
22
13
  mns_scheduler/company_info/constant/company_constant_data.py,sha256=XIM81fA4PNalVJNBYXiMddkcW012fFtofoPGYy2VtD0,16001
23
14
  mns_scheduler/company_info/de_list_stock/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
@@ -27,19 +18,18 @@ mns_scheduler/company_info/remark/company_remark_info_sync.py,sha256=hzQ8uBK4-od
27
18
  mns_scheduler/concept/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
28
19
  mns_scheduler/concept/clean/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
29
20
  mns_scheduler/concept/clean/kpl_concept_clean_api.py,sha256=xxIIgrXLI6xLf10t4unJa7aMB_QeKeki1HJVeXsntkY,4512
30
- mns_scheduler/concept/clean/ths_concept_clean_api.py,sha256=42sbd8VqJeOKxJuxLVsU9YFK_YUSePTGrK2AWbabhA0,5964
31
- mns_scheduler/concept/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- mns_scheduler/concept/common/detaill/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
- mns_scheduler/concept/common/detaill/ths_concept_detail_api.py,sha256=Au_l7SVcp4kRaR2vo1FP3BmYHeRI9fkOk_sTwzpRYw4,9435
21
+ mns_scheduler/concept/clean/ths_concept_clean_api.py,sha256=wxdT5Eb3awHW9HuFlgSe8-C6sC6TNaDYozr8VvNdYe0,5953
34
22
  mns_scheduler/concept/ths/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
35
23
  mns_scheduler/concept/ths/common/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
36
- mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py,sha256=CDo5d2dA36a99bS4vxg2ZRdSc-l_NwPSzmkxjAWLyFY,8146
24
+ mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py,sha256=xreSNZDdooI0do9RQLTKqrQ85JgbNRhQzaNCI9SgKns,8328
37
25
  mns_scheduler/concept/ths/common/ths_concept_update_common_api.py,sha256=4BQT3A9t-nDIyCpILgRZF7ZOgK1oabp-gJl5nyWvKWc,4418
26
+ mns_scheduler/concept/ths/detaill/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ mns_scheduler/concept/ths/detaill/ths_concept_detail_api.py,sha256=OdtLnF4St15-4vYck_5qj4k5KMSTFbAaAbtWP5kvqLk,10694
38
28
  mns_scheduler/concept/ths/sync_new_index/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
39
- mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py,sha256=9ol2cvxSO2Ot4Z5fmlo9tUPFe6WwsuVX_H9ogtv3QrI,7841
29
+ mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py,sha256=4vzKeQ2WfDOZlADgPSWsFHcqAIQAoRtUpWmsNCrJRnw,7533
40
30
  mns_scheduler/concept/ths/update_concept_info/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
41
- mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py,sha256=wlsr70rcS-uAH6b8NXPbA-wG37saeIQ0FIg8vSSTXQA,1920
42
- mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py,sha256=HVqDSBruORebtiliKps2swJo_GNg_8mqT0r9cZX6sj8,8839
31
+ mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py,sha256=wwuLfjj9AnFcHP-oQPC5AhpwgZ8IsPiNUh-Z6swcngA,1380
32
+ mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py,sha256=83I6UDL9IDUrIozXyuLcFjilQFEk3tAWWxwn1SBcMgk,9217
43
33
  mns_scheduler/db/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
44
34
  mns_scheduler/db/col_move_service.py,sha256=-d3JUCjWyaGKBhyUSkqwpCgZtHkIy1JOasgpxmH74zg,4057
45
35
  mns_scheduler/db/db_status.py,sha256=e5eW5ZSm5J7tHvmxxhFmFdbZb2_oB_SAcdcFqc4KDmw,733
@@ -102,13 +92,13 @@ mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py,sha256=SQ7dieSCO
102
92
  mns_scheduler/risk/major_violations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
93
  mns_scheduler/risk/major_violations/register_and_investigate_stock_sync_api.py,sha256=_xPQxT6OS7J7_PtA7hbfCmMS7VzpZTWoZUOXzwoesUs,5672
104
94
  mns_scheduler/risk/self/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
- mns_scheduler/risk/self/wei_pan_stock_api.py,sha256=osU3XrPZXDzPdtVCq601ZlSTZUqIhGxoXsowWgPAM4w,1902
95
+ mns_scheduler/risk/self/wei_pan_stock_api.py,sha256=5ebrjFqK49j_yEMffFBCumMeBzq_rmtsA4--lL5mhZs,1899
106
96
  mns_scheduler/risk/test/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
107
97
  mns_scheduler/risk/test/fix_blask_list.py,sha256=jjLhhIWH1L4CgNp2jQ_HAHbC3wVgeX1TzhqC--_D2MI,1249
108
98
  mns_scheduler/risk/transactions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
99
  mns_scheduler/risk/transactions/transactions_check_api.py,sha256=_VOiUyIPyTGbcrbuxzJnp1KiLdKBJsRS584f-jqHXA0,6682
110
100
  mns_scheduler/self_choose/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
111
- mns_scheduler/self_choose/ths_self_choose_service.py,sha256=RjkEYVyVSUNyXYy6PdlZkGFbZs_RDGy9JfpxVWAkX40,3124
101
+ mns_scheduler/self_choose/ths_self_choose_service.py,sha256=9_D0evHT9TtGR45Hu4ApK3aoTUKb4nyIYfggqJ7C3bM,3814
112
102
  mns_scheduler/trade/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
113
103
  mns_scheduler/trade/auto_ipo_buy_api.py,sha256=jVe5ZiXwzkDy_j_4X4rUamSzJpmzhV16lNKwbeWgpQw,386
114
104
  mns_scheduler/trade/auto_sell_service_api.py,sha256=b-4xmW6W6cd6dMuLPD7ZJu3tUtchMcUG-p7wOMm_RRY,4640
@@ -135,10 +125,10 @@ mns_scheduler/zt/script/sync_high_chg_pool_his_data.py,sha256=dtREQdNpoDM4KLTvdX
135
125
  mns_scheduler/zt/script/sync_now_higt_chg_zt.py,sha256=bhoIGDWTI3w0YKVfIAVNHWpUrYqJYDMGPt-1i3d_Zmw,1850
136
126
  mns_scheduler/zt/zt_pool/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
137
127
  mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py,sha256=x3-NCugHoY5IuX2s1UOUMl8DZsi9nrtMbEGzxWqJj3c,7642
138
- mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py,sha256=0juoFzZ4zAxhbsyitQ5FQrEeUu7CWCxmMEypBVKriH4,10353
128
+ mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py,sha256=LJVGqJyLn04oC-Xp59RVE1IOz7lx6ao78bw9l67sKBM,10382
139
129
  mns_scheduler/zz_task/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
140
- mns_scheduler/zz_task/data_sync_task.py,sha256=EexJz4F5WtyZ5N7qG3U6IzHHQwnvN-EqQEUxcTyRRyk,19069
141
- mns_scheduler-1.1.3.5.dist-info/METADATA,sha256=bqk-GV6V2fKaOKyqldLPy9qEt5rnBFsNRo0z4xUAJXU,64
142
- mns_scheduler-1.1.3.5.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
143
- mns_scheduler-1.1.3.5.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
144
- mns_scheduler-1.1.3.5.dist-info/RECORD,,
130
+ mns_scheduler/zz_task/data_sync_task.py,sha256=KI7I5R4RFZ67KSzXJiObnIrsKecvvvMQpCFNMX1qHJQ,19069
131
+ mns_scheduler-1.1.3.9.dist-info/METADATA,sha256=B7k2ga2WhdPCcL4LZ8i8OMtzSTdNhLdpyl0RsdXC9oc,64
132
+ mns_scheduler-1.1.3.9.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
133
+ mns_scheduler-1.1.3.9.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
134
+ mns_scheduler-1.1.3.9.dist-info/RECORD,,
@@ -1,53 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 16
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
- from loguru import logger
9
-
10
- db_name_list = [
11
- # 'company_info', 'company_info_base', 'company_info_his', 'company_info_hk', 'de_list_stock',
12
- # 'em_stock_asset_liability',
13
- # 'em_stock_profit',
14
- # 'k_line_info',
15
- 'kpl_best_choose_daily', 'kpl_best_choose_his', 'kpl_best_choose_index',
16
- 'kpl_best_choose_index_detail',
17
- 'kpl_his_quotes', 'recent_hot_stocks', 'self_black_stock', 'self_choose_plate', 'self_choose_stock', 'sse_info_uid',
18
- 'stock_gdfx_free_top_10', 'stock_high_chg_pool', 'stock_interactive_question', 'stock_qfq_daily',
19
- 'stock_qfq_monthly', 'stock_qfq_weekly', 'stock_zt_pool', 'stock_zt_pool_five', 'stock_zb_pool', 'sw_industry',
20
- 'ths_concept_list', 'ths_stock_concept_detail', 'ths_stock_concept_detail_app', 'ths_zt_pool',
21
- 'today_new_concept_list',
22
- 'trade_date_list', 'realtime_quotes_now_zt_new', 'realtime_quotes_now_open', 'realtime_quotes_now_zt_new_kc_open']
23
-
24
-
25
- def db_export(db, col):
26
- cmd = 'F:/mongo/bin/mongodump.exe --host ' + db + ' -d patience -c ' + col + ' -o D:/back'
27
- os.system(cmd)
28
- logger.info("export finished:{}", col)
29
-
30
-
31
- def db_import(db, col):
32
- cmd = 'F:/mongo/bin/mongorestore.exe --host ' + db + ' -d patience -c ' + col + ' D:/back/patience/' + col + '.bson'
33
- os.system(cmd)
34
-
35
- path = 'D:\\back\\patience\\' + col + '.bson'
36
- cmd_del = 'del /F /S /Q ' + path
37
- os.system(cmd_del)
38
-
39
- logger.info("import finished:{}", col)
40
-
41
-
42
- def collection_to_local():
43
- for db_name in db_name_list:
44
- try:
45
- db_export('127.0.0.1:27017', db_name)
46
- db_import('192.168.1.6:27017', db_name)
47
- logger.info("同步到集合:{}", db_name)
48
- except BaseException as e:
49
- logger.error("出现异常:{}", e)
50
-
51
-
52
- if __name__ == '__main__':
53
- collection_to_local()
@@ -1,55 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 16
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
- from mns_common.db.MongodbUtil import MongodbUtil
9
- from loguru import logger
10
-
11
- mongodb_util = MongodbUtil('27017')
12
-
13
- from mns_common.db.MongodbUtilLocal import MongodbUtil as MongodbUtilLocal
14
-
15
- mongodbUtilLocal = MongodbUtilLocal('27017')
16
-
17
- db_name_list = [
18
- # 'company_info', 'company_info_base', 'company_info_his', 'company_info_hk', 'de_list_stock',
19
- # 'em_stock_asset_liability',
20
- # 'em_stock_profit',
21
- # 'k_line_info',
22
- # 'kpl_best_choose_daily',
23
- # 'kpl_best_choose_his',
24
- # 'kpl_best_choose_index',
25
- # 'kpl_best_choose_index_detail',
26
- # 'kpl_his_quotes',
27
- # 'stock_qfq_daily',
28
- # 'stock_qfq_monthly',
29
- # 'stock_qfq_weekly',
30
- # 'stock_gdfx_free_top_10',
31
- # 'recent_hot_stocks',
32
- # 'self_black_stock',
33
- # 'self_choose_plate', 'self_choose_stock', 'sse_info_uid',
34
- # 'stock_high_chg_pool', 'stock_interactive_question',
35
- # 'stock_zt_pool', 'stock_zt_pool_five', 'stock_zb_pool', 'sw_industry',
36
- # 'ths_concept_list', 'ths_stock_concept_detail','ths_zt_pool',
37
- # 'today_new_concept_list',
38
- # 'trade_date_list',
39
- # 'ths_stock_concept_detail_app',
40
- "stock_zt_pool"
41
- ]
42
-
43
-
44
- def sync_collection_to_local():
45
- for db_name in db_name_list:
46
- try:
47
- df_data = mongodb_util.find_all_data(db_name)
48
- mongodbUtilLocal.save_mongo(df_data, db_name)
49
- logger.info("同步到集合:{}", db_name)
50
- except BaseException as e:
51
- logger.error("出现异常:{}", e)
52
-
53
-
54
- if __name__ == '__main__':
55
- sync_collection_to_local()
@@ -1,33 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 16
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
- from mns_common.db.MongodbUtil import MongodbUtil
9
- from loguru import logger
10
-
11
- mongodb_util = MongodbUtil('27017')
12
- from mns_common.db.MongodbUtilLocal import MongodbUtil as MongodbUtilLocal
13
-
14
- mongodbUtilLocal = MongodbUtilLocal('27017')
15
-
16
-
17
- def sync_remote_open_data(str_day):
18
- query_remote = {"str_day": str_day}
19
- realtime_quotes_now_open_df = mongodb_util.find_query_data('realtime_quotes_now_open', query_remote)
20
- mongodbUtilLocal.insert_mongo(realtime_quotes_now_open_df, 'realtime_quotes_now_open')
21
-
22
-
23
- if __name__ == '__main__':
24
- query = {'$and': [{"_id": {"$gte": "2022-03-16"}},
25
- {"_id": {"$lte": "2024-06-28"}}]}
26
- trade_date_list = mongodb_util.find_query_data('trade_date_list', query)
27
- for trade_one in trade_date_list.itertuples():
28
- try:
29
- sync_str_day = trade_one.trade_date
30
- sync_remote_open_data(sync_str_day)
31
- logger.info('str_day:{}', sync_str_day)
32
- except BaseException as e:
33
- logger.error("同步远程数据异常:{}", e)
@@ -1,7 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
@@ -1,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,103 +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 loguru import logger
9
-
10
- from mns_common.db.MongodbUtil import MongodbUtil
11
- import mns_common.utils.data_frame_util as data_frame_util
12
- import pandas as pd
13
- from datetime import datetime
14
- import akshare as ak
15
- import mns_scheduler.concept.ths.common.ths_concept_sync_common_api as ths_concept_sync_common_api
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
- mongodb_util = MongodbUtil('27017')
20
-
21
-
22
- # 与概念接口对比 找出缺失数据和名称不一样的数据
23
-
24
- def sync_new_ths_concept_by_ak_api():
25
- stock_board_concept_name_ths_df = ak.stock_board_concept_name_ths()
26
- stock_board_concept_name_ths_df = stock_board_concept_name_ths_df.rename(columns={"日期": "str_day",
27
- "概念名称": "concept_name",
28
- "成分股数量": "numbers",
29
- "网址": "url",
30
- "代码": "concept_code",
31
- })
32
-
33
- stock_board_concept_name_ths_df['str_day'].fillna(datetime(1970, 1, 1), inplace=True)
34
- stock_board_concept_name_ths_df.concept_name = stock_board_concept_name_ths_df.concept_name.str.replace('(', '(')
35
- stock_board_concept_name_ths_df.concept_name = stock_board_concept_name_ths_df.concept_name.str.replace(')', ')')
36
-
37
- stock_board_concept_name_ths_df['str_day'] = stock_board_concept_name_ths_df['str_day'].apply(
38
- lambda x: datetime.strftime(x, '%Y-%m-%d'))
39
-
40
- # 同花顺概念列表
41
- ths_concept_list_exist = mongodb_util.find_all_data('ths_concept_list')
42
-
43
- for concept_one in stock_board_concept_name_ths_df.itertuples():
44
- try:
45
- exist_concept_df_one = ths_concept_list_exist.loc[
46
- (ths_concept_list_exist['name'] == concept_one.concept_name)
47
- | (ths_concept_list_exist['web_concept_code'] == concept_one.concept_code)]
48
- now_date = datetime.now()
49
- str_now_time = now_date.strftime('%Y-%m-%d %H:%M:%S')
50
- str_day = concept_one.str_day
51
- if data_frame_util.is_empty(exist_concept_df_one):
52
- concept_code = concept_one.concept_code
53
-
54
- diff_one = {
55
- '_id': int(concept_code),
56
- 'symbol': int(concept_code),
57
- 'name': concept_one.concept_name,
58
- 'url': concept_one.url,
59
- 'str_day': str_day,
60
- 'success': True,
61
- 'str_now_time': str_now_time,
62
- 'web_concept_code': int(concept_one.concept_code),
63
- 'web_concept_url': concept_one.url,
64
- 'valid': True
65
- }
66
- diff_one_df = pd.DataFrame(diff_one, index=[1])
67
- mongodb_util.save_mongo(diff_one_df, 'ths_concept_list')
68
- url = 'http://q.10jqka.com.cn/gn/detail/code/' + str(concept_one.concept_code)
69
- # 新增概念信息处理
70
- handle_new_concept_msg(concept_code, concept_one.concept_name, url)
71
- new_concept_symbol_df = get_concept_detail_info_web(concept_code)
72
- if new_concept_symbol_df is None or new_concept_symbol_df.shape[0] == 0:
73
- return None
74
- new_concept_symbol_df.loc[:, 'way'] = 'index_sync'
75
- ths_concept_sync_common_api.save_ths_concept_detail(new_concept_symbol_df, concept_one.concept_name,
76
- str_day,
77
- str_now_time, concept_code)
78
- logger.info("新增同花顺新概念:{}", concept_one.concept_name)
79
- except BaseException as e:
80
- logger.error("同步概念:{},信息异常:{}", concept_one.concept_name, e)
81
-
82
-
83
- def handle_new_concept_msg(concept_code, concept_name, url):
84
- # 推送新概念信息到微信
85
- ths_concept_sync_common_api.push_msg_to_we_chat_web(concept_code, concept_name,
86
- url)
87
- # 更新ths概念信息
88
- ths_concept_clean_api.update_ths_concept_info()
89
-
90
-
91
- # 获取web端 新增概念详情
92
- def get_concept_detail_info_web(concept_code):
93
- new_concept_symbol_list = ths_concept_detail_api.get_ths_concept_detail(concept_code, None)
94
- if new_concept_symbol_list is None or new_concept_symbol_list.shape[0] == 0:
95
- return None
96
- new_concept_symbol_list = new_concept_symbol_list[ths_concept_sync_common_api.order_fields]
97
- new_concept_symbol_list['_id'] = str(concept_code) + '-' + new_concept_symbol_list['symbol']
98
- return new_concept_symbol_list
99
-
100
-
101
- if __name__ == '__main__':
102
- # get_concept_detail_info_web(886068)
103
- sync_new_ths_concept_by_ak_api()