mns-scheduler 1.0.3.3__tar.gz → 1.0.3.5__tar.gz

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

Potentially problematic release.


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

Files changed (73) hide show
  1. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/PKG-INFO +1 -1
  2. mns-scheduler-1.0.3.5/mns_scheduler/backup/__init__.py +7 -0
  3. {mns-scheduler-1.0.3.3/mns_scheduler/concept → mns-scheduler-1.0.3.5/mns_scheduler/backup}/em/em_new_concept_his_sync.py +1 -1
  4. {mns-scheduler-1.0.3.3/mns_scheduler/concept → mns-scheduler-1.0.3.5/mns_scheduler/backup}/em/em_new_concept_sync_web.py +1 -1
  5. mns-scheduler-1.0.3.3/mns_scheduler/concept/clean/ths_effective_concept_clean_api.py → mns-scheduler-1.0.3.5/mns_scheduler/concept/clean/ths_concept_clean_api.py +1 -0
  6. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +6 -88
  7. mns-scheduler-1.0.3.5/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +89 -0
  8. mns-scheduler-1.0.3.3/mns_scheduler/concept/ths/symbol/sync_symbol_all_concepts_api.py → mns-scheduler-1.0.3.5/mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +1 -1
  9. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +4 -9
  10. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/zz_task/data_sync_task.py +38 -24
  11. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler.egg-info/PKG-INFO +1 -1
  12. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler.egg-info/SOURCES.txt +16 -15
  13. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/setup.py +1 -1
  14. mns-scheduler-1.0.3.3/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +0 -34
  15. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/README.md +0 -0
  16. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/__init__.py +0 -0
  17. {mns-scheduler-1.0.3.3/mns_scheduler/big_deal → mns-scheduler-1.0.3.5/mns_scheduler/backup/app}/__init__.py +0 -0
  18. {mns-scheduler-1.0.3.3/mns_scheduler/concept/ths → mns-scheduler-1.0.3.5/mns_scheduler/backup}/app/ths_new_concept_sync_app.py +0 -0
  19. {mns-scheduler-1.0.3.3/mns_scheduler/company_info → mns-scheduler-1.0.3.5/mns_scheduler/backup/em}/__init__.py +0 -0
  20. {mns-scheduler-1.0.3.3/mns_scheduler/concept → mns-scheduler-1.0.3.5/mns_scheduler/backup}/em/em_new_concept_sync_common_api.py +0 -0
  21. {mns-scheduler-1.0.3.3/mns_scheduler/concept → mns-scheduler-1.0.3.5/mns_scheduler/backup/wen_cai}/__init__.py +0 -0
  22. {mns-scheduler-1.0.3.3/mns_scheduler/concept/ths → mns-scheduler-1.0.3.5/mns_scheduler/backup}/wen_cai/wen_cai_concept_sync.py +0 -0
  23. {mns-scheduler-1.0.3.3/mns_scheduler/concept/clean → mns-scheduler-1.0.3.5/mns_scheduler/big_deal}/__init__.py +0 -0
  24. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/big_deal/ths_big_deal_sync.py +0 -0
  25. {mns-scheduler-1.0.3.3/mns_scheduler/concept/em → mns-scheduler-1.0.3.5/mns_scheduler/company_info}/__init__.py +0 -0
  26. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/company_info/company_constant_data.py +0 -0
  27. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/company_info/company_info_sync_api.py +0 -0
  28. {mns-scheduler-1.0.3.3/mns_scheduler/concept/ths → mns-scheduler-1.0.3.5/mns_scheduler/concept}/__init__.py +0 -0
  29. {mns-scheduler-1.0.3.3/mns_scheduler/concept/ths/app → mns-scheduler-1.0.3.5/mns_scheduler/concept/clean}/__init__.py +0 -0
  30. {mns-scheduler-1.0.3.3/mns_scheduler/concept/ths/common → mns-scheduler-1.0.3.5/mns_scheduler/concept/ths}/__init__.py +0 -0
  31. {mns-scheduler-1.0.3.3/mns_scheduler/concept/ths/symbol → mns-scheduler-1.0.3.5/mns_scheduler/concept/ths/common}/__init__.py +0 -0
  32. {mns-scheduler-1.0.3.3/mns_scheduler/concept/ths/web → mns-scheduler-1.0.3.5/mns_scheduler/concept/ths/sync_new_index}/__init__.py +0 -0
  33. {mns-scheduler-1.0.3.3/mns_scheduler/concept/ths/web → mns-scheduler-1.0.3.5/mns_scheduler/concept/ths/sync_new_index}/sync_ths_concept_by_ak_api.py +0 -0
  34. {mns-scheduler-1.0.3.3/mns_scheduler/concept/ths/web → mns-scheduler-1.0.3.5/mns_scheduler/concept/ths/sync_new_index}/sync_ths_new_concept_by_web_api.py +0 -0
  35. {mns-scheduler-1.0.3.3/mns_scheduler/concept/ths/wen_cai → mns-scheduler-1.0.3.5/mns_scheduler/concept/ths/update_concept_info}/__init__.py +0 -0
  36. /mns-scheduler-1.0.3.3/mns_scheduler/concept/ths/symbol/sync_concept_all_symbols_api.py → /mns-scheduler-1.0.3.5/mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +0 -0
  37. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/db/__init__.py +0 -0
  38. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/db/col_move_service.py +0 -0
  39. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/db/db_status.py +0 -0
  40. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/dt/__init__.py +0 -0
  41. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
  42. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/ipo/__init__.py +0 -0
  43. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/ipo/auto_ipo_buy_api.py +0 -0
  44. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/k_line/__init__.py +0 -0
  45. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/k_line/clean/__init__.py +0 -0
  46. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py +0 -0
  47. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/k_line/clean/k_line_info_clean_service.py +0 -0
  48. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/k_line/sync/__init__.py +0 -0
  49. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/k_line/sync/daily_week_month_line_sync.py +0 -0
  50. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/kpl/__init__.py +0 -0
  51. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/kpl/selection/__init__.py +0 -0
  52. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/kpl/selection/index/__init__.py +0 -0
  53. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
  54. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/kpl/selection/symbol/__init__.py +0 -0
  55. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +0 -0
  56. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/kpl/selection/total/__init__.py +0 -0
  57. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +0 -0
  58. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/real_time/__init__.py +0 -0
  59. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/real_time/realtime_quotes_now_create_db_index.py +0 -0
  60. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/real_time/realtime_quotes_now_sync.py +0 -0
  61. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/zb/__init__.py +0 -0
  62. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/zb/stock_zb_pool_sync.py +0 -0
  63. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/zt/__init__.py +0 -0
  64. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/zt/export_open_data_to_excel.py +0 -0
  65. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/zt/realtime_quotes_now_zt_kc_sync.py +0 -0
  66. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/zt/today_high_chg_pool_sync_api.py +0 -0
  67. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/zt/zt_five_boards_sync_api.py +0 -0
  68. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/zt/zt_pool_sync_api.py +0 -0
  69. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/zz_task/__init__.py +0 -0
  70. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler/zz_task/sync_realtime_quotes_task.py +0 -0
  71. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler.egg-info/dependency_links.txt +0 -0
  72. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/mns_scheduler.egg-info/top_level.txt +0 -0
  73. {mns-scheduler-1.0.3.3 → mns-scheduler-1.0.3.5}/setup.cfg +0 -0
@@ -1,3 +1,3 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns-scheduler
3
- Version: 1.0.3.3
3
+ Version: 1.0.3.5
@@ -0,0 +1,7 @@
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)
@@ -11,7 +11,7 @@ from loguru import logger
11
11
  from datetime import datetime
12
12
  import mns_common.utils.date_handle_util as date_handle_util
13
13
  import mns_common.db.MongodbUtil as MongodbUtil
14
- import mns_scheduler.concept.em.em_new_concept_sync_common_api as em_new_concept_sync_common_api
14
+ import mns_scheduler.backup.em.em_new_concept_sync_common_api as em_new_concept_sync_common_api
15
15
  import mns_common.api.em.em_concept_index_api as em_concept_index_api
16
16
 
17
17
  mongodb_util = MongodbUtil('27017')
@@ -9,7 +9,7 @@ sys.path.append(project_path)
9
9
  import datetime
10
10
  import time
11
11
  from loguru import logger
12
- import mns_scheduler.concept.em.em_new_concept_sync_common_api as em_new_concept_sync_common_api
12
+ import mns_scheduler.backup.em.em_new_concept_sync_common_api as em_new_concept_sync_common_api
13
13
 
14
14
 
15
15
  # 同步东财新概念
@@ -25,6 +25,7 @@ def update_concept_num():
25
25
  mongodb_util.save_mongo(ths_concept_list_one_df, 'ths_concept_list')
26
26
 
27
27
 
28
+ # 更新空名字
28
29
  def update_null_name():
29
30
  query = {"_id": {'$gte': 886025}}
30
31
  ths_concept_list = mongodb_util.find_query_data('ths_concept_list', query)
@@ -2,9 +2,7 @@ import sys
2
2
  import os
3
3
 
4
4
  import pandas as pd
5
- import time
6
5
  import mns_common.api.ths.ths_stock_api as ths_stock_api
7
- import datetime
8
6
  from mns_common.db.MongodbUtil import MongodbUtil
9
7
  import mns_common.component.company.company_common_service_api as company_common_service_api
10
8
 
@@ -15,7 +13,7 @@ sys.path.append(project_path)
15
13
  mongodb_util = MongodbUtil('27017')
16
14
  import mns_common.api.msg.push_msg_api as push_msg_api
17
15
  import mns_scheduler.company_info.company_info_sync_api as company_info_sync_api
18
- import mns_common.utils.data_frame_util as data_frame_util
16
+
19
17
  max_concept_code = 886110
20
18
 
21
19
  order_fields = [
@@ -31,6 +29,7 @@ order_fields = [
31
29
  ]
32
30
 
33
31
 
32
+ # 推送到手机
34
33
  def push_msg_to_we_chat_web(concept_code, concept_name, url):
35
34
  msg = "概念代码:" + str(concept_code) + "," + "概念名称:" + concept_name + "," + "url: " + url
36
35
  title = "新增同花顺概念:" + str(concept_code) + "-" + concept_name
@@ -100,7 +99,8 @@ def save_ths_concept_detail(new_concept_symbol_df,
100
99
 
101
100
  if bool(1 - ('way' in new_concept_symbol_df.columns)):
102
101
  new_concept_symbol_df['way'] = 'symbol_sync'
103
-
102
+ if "long" not in new_concept_symbol_df.columns:
103
+ new_concept_symbol_df['long'] = ''
104
104
  new_concept_symbol_df = new_concept_symbol_df[[
105
105
  "_id",
106
106
  "index",
@@ -120,7 +120,8 @@ def save_ths_concept_detail(new_concept_symbol_df,
120
120
  "total_mv_sp",
121
121
  "company_type",
122
122
  "concept_create_day",
123
- "way"
123
+ "way",
124
+ "long"
124
125
  ]]
125
126
 
126
127
  exist_concept_detail = mongodb_util.find_query_data('ths_stock_concept_detail', query)
@@ -150,92 +151,9 @@ def update_company_info(new_concept_symbol_df):
150
151
  company_common_service_api.company_info_industry_cache_clear()
151
152
 
152
153
 
153
- def update_null_name():
154
- query = {"_id": {'$gte': 886025}}
155
- ths_concept_list = mongodb_util.find_query_data('ths_concept_list', query)
156
- ths_concept_list = ths_concept_list.sort_values(by=['_id'], ascending=False)
157
-
158
- for concept_one in ths_concept_list.itertuples():
159
- concept_code = concept_one.symbol
160
- name = concept_one.name
161
- exist_url = concept_one.url
162
-
163
- if name == '':
164
- concept_name = ths_stock_api.get_concept_name(concept_code)
165
- query_concept = {"symbol": concept_code}
166
- new_values = {'$set': {"name": concept_name}}
167
- mongodb_util.update_one_query(query_concept, new_values, 'ths_concept_list')
168
-
169
- new_values_detail = {'$set': {"concept_name": concept_name}}
170
-
171
- query_concept_detail = {"concept_code": concept_code}
172
-
173
- mongodb_util.update_many(query_concept_detail, new_values_detail, 'ths_stock_concept_detail')
174
- time.sleep(10)
175
-
176
- if exist_url == '' or pd.isna(exist_url):
177
- url = 'http://q.10jqka.com.cn/thshy/detail/code/' + str(concept_code)
178
- str_now_time = concept_one.str_day + " " + "00:00:00"
179
- query_concept = {"symbol": concept_code}
180
- new_values = {'$set': {"url": url, "str_now_time": str_now_time}}
181
- mongodb_util.update_one_query(query_concept, new_values, 'ths_concept_list')
182
-
183
-
184
- # 更新概念数量
185
- def update_concept_number():
186
- query = {}
187
- ths_concept_list = mongodb_util.find_query_data('ths_concept_list', query)
188
- ths_concept_list = ths_concept_list.sort_values(by=['_id'], ascending=False)
189
- for concept_one in ths_concept_list.itertuples():
190
- try:
191
- query_detail = {'concept_code': concept_one.symbol}
192
- concept_number = mongodb_util.count(query_detail, 'ths_stock_concept_detail')
193
- query_update = {"symbol": concept_one.symbol}
194
- new_values = {'$set': {"concept_number": concept_number}}
195
- mongodb_util.update_one_query(query_update, new_values, 'ths_concept_list')
196
- except BaseException as e:
197
- print(e)
198
-
199
-
200
154
  def get_concept_detail_info_web(concept_code):
201
155
  new_concept_symbol_list = ths_stock_api.ths_stock_concept(concept_code)
202
156
  if new_concept_symbol_list is None or new_concept_symbol_list.shape[0] == 0:
203
157
  return None
204
158
  new_concept_symbol_list['_id'] = str(concept_code) + '-' + new_concept_symbol_list['symbol']
205
159
  return new_concept_symbol_list
206
-
207
-
208
- def update_nan_data():
209
- query = {"concept_code": float('NaN')}
210
- ths_stock_concept_detail = mongodb_util.find_query_data('ths_stock_concept_detail', query)
211
-
212
- ths_stock_concept_detail['concept_code'] = ths_stock_concept_detail['_id']
213
- for stock_one in ths_stock_concept_detail.itertuples():
214
- query = {"symbol": stock_one.symbol}
215
- company_info = mongodb_util.find_query_data('company_info', query)
216
-
217
- concept_code = stock_one.concept_code
218
- concept_code = int(concept_code[0:6])
219
-
220
- new_values = {'$set': {"concept_code": concept_code,
221
- "flow_mv_sp": list(company_info['flow_mv_sp'])[0],
222
- "total_mv_sp": list(company_info['total_mv_sp'])[0],
223
- "company_type": list(company_info['company_type'])[0]
224
-
225
- }}
226
- query_update = {"_id": stock_one.concept_code}
227
- mongodb_util.update_many(query_update, new_values, 'ths_stock_concept_detail')
228
-
229
-
230
- def update_concept_create_day():
231
- query = {"symbol": {'$exists': True}}
232
- new_concept_list = mongodb_util.descend_query(query, "ths_concept_list", "_id", 500)
233
-
234
- if new_concept_list.shape[0] > 0:
235
- for one_concept in new_concept_list.itertuples():
236
- concept_create_day = one_concept.str_day
237
- query_update = {"concept_code": one_concept.symbol}
238
-
239
- new_values = {'$set': {"concept_create_day": concept_create_day}}
240
-
241
- mongodb_util.update_many(query_update, new_values, 'ths_stock_concept_detail')
@@ -0,0 +1,89 @@
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 mns_common.component.concept.ths_concept_common_service_api as ths_concept_common_service_api
10
+ from mns_common.db.MongodbUtil import MongodbUtil
11
+ from loguru import logger
12
+ import mns_common.utils.data_frame_util as data_frame_util
13
+ import mns_common.constant.db_name_constant as db_name_constant
14
+ import mns_common.component.trade_date.trade_date_common_service_api as trade_date_common_service_api
15
+ from datetime import datetime
16
+ import mns_common.api.ths.ths_stock_api as ths_stock_api
17
+ import pandas as pd
18
+
19
+ mongodb_util = MongodbUtil('27017')
20
+
21
+
22
+ # 更新概念入选理由
23
+ def update_ths_concept_choose_reason(ths_symbol_all_concepts, symbol):
24
+ all_ths_concept = ths_concept_common_service_api.get_all_ths_concept()
25
+ for concept_one in ths_symbol_all_concepts.itertuples():
26
+ try:
27
+ ths_concept_one_db_list = all_ths_concept.loc[all_ths_concept['web_concept_code'] == int(concept_one.cid)]
28
+ if data_frame_util.is_not_empty(ths_concept_one_db_list):
29
+
30
+ for ths_one_concept in ths_concept_one_db_list.itertuples():
31
+ concept_code = ths_one_concept.symbol
32
+ query = {"$or": [{'symbol': symbol, "concept_code": int(concept_code)},
33
+ {'symbol': symbol, "concept_code": int(concept_one.cid)}]}
34
+ short = concept_one.short
35
+ long = concept_one.long
36
+ new_values = {"$set": {"short": short, "long": long}}
37
+ mongodb_util.update_many(query, new_values, db_name_constant.THS_STOCK_CONCEPT_DETAIL)
38
+ except BaseException as e:
39
+ logger.error("更新ths概念入选理由异常{},{},{}", symbol, concept_one.title, e)
40
+
41
+
42
+ # 更新空的入选概念
43
+ def update_ths_concept_choose_null_reason():
44
+ now_date = datetime.now()
45
+ str_day = now_date.strftime('%Y-%m-%d')
46
+ last_trade_day = trade_date_common_service_api.get_last_trade_day(str_day)
47
+ query = {"$and": [{"str_day": {"$gte": last_trade_day}},
48
+ {"str_day": {"$lte": str_day}}],
49
+ "$or": [{"long": ""},
50
+ {"long": {"$exists": False}}]}
51
+ nan_reason_df = mongodb_util.find_query_data(db_name_constant.TODAY_NEW_CONCEPT_LIST, query)
52
+ update_null_reason(nan_reason_df)
53
+
54
+
55
+ # 更新空入选理由
56
+ def update_null_reason(nan_reason_df):
57
+ # 所有概念
58
+ all_ths_concept = ths_concept_common_service_api.get_all_ths_concept()
59
+ for nan_one in nan_reason_df.itertuples():
60
+ try:
61
+ concept_code = nan_one.concept_code
62
+ ths_concept_one_df = all_ths_concept.loc[
63
+ (all_ths_concept['symbol'] == concept_code)
64
+ | (all_ths_concept['web_concept_code'] == concept_code)]
65
+ if data_frame_util.is_empty(ths_concept_one_df):
66
+ continue
67
+ web_concept_code = list(ths_concept_one_df['web_concept_code'])[0]
68
+
69
+ ths_concept_json = ths_stock_api.get_symbol_add_new_concept(nan_one.symbol)
70
+ symbol_ths_concept_all_df = pd.DataFrame(ths_concept_json)
71
+
72
+ symbol_ths_concept_one_df = symbol_ths_concept_all_df[
73
+ symbol_ths_concept_all_df['cid'] == web_concept_code]
74
+ if data_frame_util.is_empty(symbol_ths_concept_one_df):
75
+ continue
76
+
77
+ query = {"$or": [{'symbol': nan_one.symbol, "concept_code": int(concept_code)},
78
+ {'symbol': nan_one.symbol, "concept_code": int(web_concept_code)}]}
79
+ short = list(symbol_ths_concept_one_df['short'])[0]
80
+ long = list(symbol_ths_concept_one_df['long'])[0]
81
+ new_values = {"$set": {"short": short, "long": long}}
82
+ mongodb_util.update_many(query, new_values, db_name_constant.THS_STOCK_CONCEPT_DETAIL)
83
+ mongodb_util.update_many(query, new_values, db_name_constant.TODAY_NEW_CONCEPT_LIST)
84
+ except BaseException as e:
85
+ logger.error("更新概念入选理由异常:{},{}", nan_one.symbol, e)
86
+
87
+
88
+ if __name__ == '__main__':
89
+ update_ths_concept_choose_null_reason()
@@ -95,7 +95,7 @@ def update_symbol_new_concept(symbol_df, page_number):
95
95
  now_date = datetime.now()
96
96
  # 开盘交易前不同步 资源开销过大
97
97
  if date_handle_util.is_close_time(now_date):
98
- ths_concept_update_common_api.update_ths_concept_detail(symbol_ths_concept_all_df, stock_one.symbol)
98
+ ths_concept_update_common_api.update_ths_concept_choose_reason(symbol_ths_concept_all_df, stock_one.symbol)
99
99
 
100
100
  str_day = now_date.strftime('%Y-%m-%d')
101
101
  str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
@@ -51,7 +51,7 @@ def sync_best_choose_his_index(str_day):
51
51
  for end_time in KPL_MINUTE_LIST:
52
52
  while page_number <= page_max_number:
53
53
  index = page_number * kpl_common_api.HIS_PAGE_MAX_COUNT
54
- kpl_plate_best_index_df = kpl_common_api.get_plate_index_his(index, int(kpl_common_api.BEST_CHOOSE),
54
+ kpl_plate_best_index_df = kpl_common_api.get_plate_index_his(index, kpl_common_api.BEST_CHOOSE,
55
55
  str_day, KPL_MINUTE_BEGIN,
56
56
  end_time)
57
57
 
@@ -59,11 +59,6 @@ def sync_best_choose_his_index(str_day):
59
59
  continue
60
60
  kpl_plate_best_index_df['number'] = number
61
61
  kpl_plate_best_index_df['str_day'] = str_day
62
- hour = end_time[0:2]
63
- minute = end_time[2:4]
64
- kpl_plate_best_index_df['str_day'] = str_day
65
-
66
- kpl_plate_best_index_df['str_now_date'] = str_day + " " + hour + ":" + minute + ":00"
67
62
  kpl_plate_best_index_df = kpl_plate_best_index_df[[
68
63
  "plate_code",
69
64
  "plate_name",
@@ -83,7 +78,7 @@ def sync_best_choose_his_index(str_day):
83
78
  "ava_pe_next",
84
79
  "number",
85
80
  "str_day",
86
- "str_now_date"
81
+
87
82
  ]]
88
83
  save_kpl_his_index(kpl_plate_best_index_df, str_day, end_time)
89
84
  if end_time == KPL_MINUTE_END:
@@ -96,7 +91,7 @@ def sync_best_choose_his_index(str_day):
96
91
 
97
92
  def save_kpl_his_index(kpl_plate_best_index_df, str_day, end_time):
98
93
  kpl_plate_best_index_df['_id'] = str_day + '-' + end_time + '-' + kpl_plate_best_index_df['plate_code']
99
- mongodb_util.save_mongo(kpl_plate_best_index_df, db_name_constant.KPL_BEST_CHOOSE_HIS)
94
+ mongodb_util.insert_mongo(kpl_plate_best_index_df, db_name_constant.KPL_BEST_CHOOSE_HIS)
100
95
 
101
96
 
102
97
  def save_kpl_his_daily(kpl_plate_best_index_df, str_day, end_time):
@@ -105,7 +100,7 @@ def save_kpl_his_daily(kpl_plate_best_index_df, str_day, end_time):
105
100
 
106
101
 
107
102
  def sync_all_days():
108
- query = {"_id": {"$gte": '2022-07-19'}, 'trade_date': {"$lte": "2024-04-23"}}
103
+ query = {"_id": {"$gte": '2022-07-22'}, 'trade_date': {"$lte": "2024-04-21"}}
109
104
  trade_date_list = mongodb_util.find_query_data('trade_date_list', query)
110
105
  trade_date_list = trade_date_list.sort_values(by=['trade_date'], ascending=False)
111
106
  for trade_one in trade_date_list.itertuples():
@@ -24,17 +24,19 @@ import mns_scheduler.zt.zt_five_boards_sync_api as zt_five_boards_sync_api
24
24
  import mns_scheduler.zt.zt_pool_sync_api as zt_pool_sync_api
25
25
  import mns_scheduler.zt.today_high_chg_pool_sync_api as today_high_chg_pool_sync_api
26
26
  import mns_scheduler.k_line.clean.k_line_info_clean_service as k_line_info_clean_service
27
- import mns_scheduler.concept.clean.ths_effective_concept_clean_api as ths_effective_concept_choose_api
27
+ import mns_scheduler.concept.clean.ths_concept_clean_api as ths_concept_choose_api
28
28
  import mns_common.api.em.east_money_stock_gdfx_free_top_10_api as east_money_stock_gdfx_free_top_10_api
29
- import mns_scheduler.concept.ths.symbol.sync_concept_all_symbols_api as sync_concept_all_symbols_api
30
- import mns_scheduler.concept.ths.symbol.sync_symbol_all_concepts_api as sync_symbol_all_concepts_api
31
- import mns_scheduler.concept.ths.web.sync_ths_new_concept_by_web_api as sync_ths_new_concept_by_web_api
32
- import mns_scheduler.concept.ths.web.sync_ths_concept_by_ak_api as sync_ths_concept_by_ak_api
33
- import mns_scheduler.concept.clean.ths_effective_concept_clean_api as ths_effective_concept_clean_api
29
+ import \
30
+ mns_scheduler.concept.ths.update_concept_info.sync_one_concept_all_symbols_api as sync_one_concept_all_symbols_api
31
+ import \
32
+ mns_scheduler.concept.ths.update_concept_info.sync_one_symbol_all_concepts_api as sync_one_symbol_all_concepts_api
33
+ import mns_scheduler.concept.ths.sync_new_index.sync_ths_new_concept_by_web_api as sync_ths_new_concept_by_web_api
34
+ import mns_scheduler.concept.ths.sync_new_index.sync_ths_concept_by_ak_api as sync_ths_concept_by_ak_api
34
35
  import mns_scheduler.kpl.selection.total.sync_kpl_best_total_sync_api as sync_kpl_best_total_sync_api
35
36
  import mns_scheduler.company_info.company_info_sync_api as company_info_sync_api
36
37
  import mns_scheduler.ipo.auto_ipo_buy_api as auto_ipo_buy_api
37
38
  import mns_scheduler.kpl.selection.index.sync_best_choose_his_index as sync_best_choose_his_index
39
+ import mns_scheduler.concept.ths.common.ths_concept_update_common_api as ths_concept_update_common_api
38
40
 
39
41
 
40
42
  # 同步交易日期任务完成
@@ -200,11 +202,6 @@ def sync_today_trade_k_line_info():
200
202
  logger.info('计算当日k线信息完成:{}', str_day)
201
203
 
202
204
 
203
- # 更新空概念名称
204
- def update_null_name():
205
- ths_effective_concept_choose_api.update_null_name()
206
-
207
-
208
205
  # 同步所有股票前十大流通股本
209
206
  def sync_stock_gdfx_free_top_10_one_day():
210
207
  logger.info('同步所有股票前十大流通股本')
@@ -213,16 +210,26 @@ def sync_stock_gdfx_free_top_10_one_day():
213
210
  east_money_stock_gdfx_free_top_10_api.sync_stock_gdfx_free_top_10_one_day(str_day)
214
211
 
215
212
 
213
+ # 更新同花顺概念信息
214
+ def ths_concept_info_clean():
215
+ # 更新空概念名称
216
+ ths_concept_choose_api.update_null_name()
217
+ # 更新概念包含个数
218
+ ths_concept_choose_api.update_concept_num()
219
+
220
+
216
221
  # 同步概念下所有股票组成 by 概念指数
217
- def update_concept_all_symbol_detail():
222
+ def update_one_concept_all_symbol_detail():
218
223
  logger.info('同步概念下所有股票组成')
219
- sync_concept_all_symbols_api.update_concept_all_symbol_detail()
224
+ sync_one_concept_all_symbols_api.update_concept_all_symbol_detail()
225
+ update_ths_concept_choose_null_reason()
220
226
 
221
227
 
222
228
  # 同步单只股票下所有概念 by 股票代码
223
- def sync_symbol_all_concept():
224
- sync_symbol_all_concepts_api.sync_symbol_all_concept(None)
229
+ def update_one_symbol_all_concepts():
225
230
  logger.info('同步单只股票所有概念组成')
231
+ sync_one_symbol_all_concepts_api.sync_symbol_all_concept(None)
232
+ update_ths_concept_choose_null_reason()
226
233
 
227
234
 
228
235
  # 同步同花顺新增概念指数通过web端接口爬取 8开头
@@ -255,7 +262,14 @@ def sync_new_concept_data_web():
255
262
  sync_new_concept_data_by_web()
256
263
  # 同步同花顺新增概念指数通过ak_share接口爬取
257
264
  sync_new_ths_concept_by_ak_api()
258
- logger.info("同步新概念web端数据任务完成", )
265
+ update_ths_concept_choose_null_reason()
266
+ logger.info("同步新概念web端数据任务完成")
267
+
268
+
269
+ # 更新空的入选概念
270
+ def update_ths_concept_choose_null_reason():
271
+ logger.info("更新空的入选概念")
272
+ ths_concept_update_common_api.update_ths_concept_choose_null_reason()
259
273
 
260
274
 
261
275
  # 清洗公司基本信息
@@ -279,9 +293,7 @@ def sync_kpl_best_his_quotes():
279
293
  now_date = datetime.now()
280
294
  str_day = now_date.strftime('%Y-%m-%d')
281
295
  if trade_date_common_service_api.is_trade_day(str_day):
282
- last_trade_day = trade_date_common_service_api.get_last_trade_day(str_day)
283
- # 当天不能获取历史数据
284
- sync_best_choose_his_index.sync_best_choose_his_index(last_trade_day)
296
+ sync_best_choose_his_index.sync_best_choose_his_index(str_day)
285
297
  logger.info('同步开盘啦当日精选指数行情数据任务完成')
286
298
 
287
299
 
@@ -307,8 +319,7 @@ blockingScheduler.add_job(col_data_move, 'cron', hour='15', minute='33')
307
319
 
308
320
  # 数据库健康检查
309
321
  blockingScheduler.add_job(db_status_check, 'interval', seconds=30, max_instances=4)
310
- # 更新空概念名称
311
- blockingScheduler.add_job(update_null_name, 'cron', hour='9,18', minute='01')
322
+
312
323
  # 同步大单数据
313
324
  blockingScheduler.add_job(sync_ths_big_deal, 'cron', hour='09', minute='30', max_instances=4)
314
325
 
@@ -323,11 +334,14 @@ blockingScheduler.add_job(sync_today_trade_k_line_info, 'cron', hour='08', minut
323
334
  # 同步十大流通股东信息
324
335
  blockingScheduler.add_job(sync_stock_gdfx_free_top_10_one_day, 'cron', hour='08,22', minute='23')
325
336
 
337
+ # 更新同花顺概念信息
338
+ blockingScheduler.add_job(ths_concept_info_clean, 'cron', hour='9,18', minute='01')
339
+
326
340
  # 更新概念指数下所有股票组成 by 概念代码
327
- blockingScheduler.add_job(update_concept_all_symbol_detail, 'cron', hour='08,18,12', minute='30')
341
+ blockingScheduler.add_job(update_one_concept_all_symbol_detail, 'cron', hour='08,18,12', minute='30')
328
342
 
329
343
  # 同步单只股票下所有概念 by 股票代码
330
- blockingScheduler.add_job(sync_symbol_all_concept, 'cron', hour='09,18,12', minute='15')
344
+ blockingScheduler.add_job(update_one_symbol_all_concepts, 'cron', hour='09,18,12', minute='15')
331
345
 
332
346
  # 开盘前同步同花顺新概念指数
333
347
  blockingScheduler.add_job(sync_new_concept_data_web, 'cron', hour='09', minute='05,10,15,20,25')
@@ -350,7 +364,7 @@ blockingScheduler.add_job(auto_ipo_buy, 'cron', hour='10', minute='40,50')
350
364
  blockingScheduler.add_job(update_best_choose_plate_relation, 'cron', hour='09,18', minute='25')
351
365
 
352
366
  # 更新开盘啦指数关系
353
- blockingScheduler.add_job(sync_kpl_best_his_quotes, 'cron', hour='16,22', minute='48')
367
+ blockingScheduler.add_job(sync_kpl_best_his_quotes, 'cron', hour='18,22', minute='25')
354
368
 
355
369
  print('定时任务启动成功')
356
370
  blockingScheduler.start()
@@ -1,3 +1,3 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns-scheduler
3
- Version: 1.0.3.3
3
+ Version: 1.0.3.5
@@ -5,6 +5,15 @@ mns_scheduler.egg-info/PKG-INFO
5
5
  mns_scheduler.egg-info/SOURCES.txt
6
6
  mns_scheduler.egg-info/dependency_links.txt
7
7
  mns_scheduler.egg-info/top_level.txt
8
+ mns_scheduler/backup/__init__.py
9
+ mns_scheduler/backup/app/__init__.py
10
+ mns_scheduler/backup/app/ths_new_concept_sync_app.py
11
+ mns_scheduler/backup/em/__init__.py
12
+ mns_scheduler/backup/em/em_new_concept_his_sync.py
13
+ mns_scheduler/backup/em/em_new_concept_sync_common_api.py
14
+ mns_scheduler/backup/em/em_new_concept_sync_web.py
15
+ mns_scheduler/backup/wen_cai/__init__.py
16
+ mns_scheduler/backup/wen_cai/wen_cai_concept_sync.py
8
17
  mns_scheduler/big_deal/__init__.py
9
18
  mns_scheduler/big_deal/ths_big_deal_sync.py
10
19
  mns_scheduler/company_info/__init__.py
@@ -12,25 +21,17 @@ mns_scheduler/company_info/company_constant_data.py
12
21
  mns_scheduler/company_info/company_info_sync_api.py
13
22
  mns_scheduler/concept/__init__.py
14
23
  mns_scheduler/concept/clean/__init__.py
15
- mns_scheduler/concept/clean/ths_effective_concept_clean_api.py
16
- mns_scheduler/concept/em/__init__.py
17
- mns_scheduler/concept/em/em_new_concept_his_sync.py
18
- mns_scheduler/concept/em/em_new_concept_sync_common_api.py
19
- mns_scheduler/concept/em/em_new_concept_sync_web.py
24
+ mns_scheduler/concept/clean/ths_concept_clean_api.py
20
25
  mns_scheduler/concept/ths/__init__.py
21
- mns_scheduler/concept/ths/app/__init__.py
22
- mns_scheduler/concept/ths/app/ths_new_concept_sync_app.py
23
26
  mns_scheduler/concept/ths/common/__init__.py
24
27
  mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py
25
28
  mns_scheduler/concept/ths/common/ths_concept_update_common_api.py
26
- mns_scheduler/concept/ths/symbol/__init__.py
27
- mns_scheduler/concept/ths/symbol/sync_concept_all_symbols_api.py
28
- mns_scheduler/concept/ths/symbol/sync_symbol_all_concepts_api.py
29
- mns_scheduler/concept/ths/web/__init__.py
30
- mns_scheduler/concept/ths/web/sync_ths_concept_by_ak_api.py
31
- mns_scheduler/concept/ths/web/sync_ths_new_concept_by_web_api.py
32
- mns_scheduler/concept/ths/wen_cai/__init__.py
33
- mns_scheduler/concept/ths/wen_cai/wen_cai_concept_sync.py
29
+ mns_scheduler/concept/ths/sync_new_index/__init__.py
30
+ mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_by_ak_api.py
31
+ mns_scheduler/concept/ths/sync_new_index/sync_ths_new_concept_by_web_api.py
32
+ mns_scheduler/concept/ths/update_concept_info/__init__.py
33
+ mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py
34
+ mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py
34
35
  mns_scheduler/db/__init__.py
35
36
  mns_scheduler/db/col_move_service.py
36
37
  mns_scheduler/db/db_status.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='mns-scheduler',
5
- version='1.0.3.3',
5
+ version='1.0.3.5',
6
6
  packages=find_packages(),
7
7
  install_requires=[], # 如果有依赖项,可以在这里列出
8
8
  )
@@ -1,34 +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 mns_common.component.concept.ths_concept_common_service_api as ths_concept_common_service_api
10
- from mns_common.db.MongodbUtil import MongodbUtil
11
- from loguru import logger
12
- import mns_common.utils.data_frame_util as data_frame_util
13
- import mns_common.constant.db_name_constant as db_name_constant
14
-
15
- mongodb_util = MongodbUtil('27017')
16
-
17
-
18
- def update_ths_concept_detail(ths_symbol_all_concepts, symbol):
19
- all_ths_concept = ths_concept_common_service_api.get_all_ths_concept()
20
- for concept_one in ths_symbol_all_concepts.itertuples():
21
- try:
22
- ths_concept_one_db_list = all_ths_concept.loc[all_ths_concept['web_concept_code'] == int(concept_one.cid)]
23
- if data_frame_util.is_not_empty(ths_concept_one_db_list):
24
-
25
- for ths_one_concept in ths_concept_one_db_list.itertuples():
26
- concept_code = ths_one_concept.symbol
27
- query = {"$or": [{'symbol': symbol, "concept_code": int(concept_code)},
28
- {'symbol': symbol, "concept_code": int(concept_one.cid)}]}
29
- short = concept_one.short
30
- long = concept_one.long
31
- new_values = {"$set": {"short": short, "long": long}}
32
- mongodb_util.update_many(query, new_values, db_name_constant.THS_STOCK_CONCEPT_DETAIL)
33
- except BaseException as e:
34
- logger.error("更新ths概念入选理由异常{},{},{}", symbol, concept_one.title, e)