mns-scheduler 1.0.5.6__py3-none-any.whl → 1.0.5.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.

@@ -18,11 +18,16 @@ from functools import lru_cache
18
18
  import pandas as pd
19
19
  import requests
20
20
  from bs4 import BeautifulSoup
21
+
22
+ from mns_common.db.MongodbUtil import MongodbUtil
23
+ import mns_common.constant.db_name_constant as db_name_constant
24
+
25
+ mongodb_util = MongodbUtil('27017')
21
26
  from tqdm import tqdm
22
27
 
23
28
 
24
29
  @lru_cache()
25
- def _fetch_stock_uid() -> dict:
30
+ def sync_stock_uid() -> pd.DataFrame:
26
31
  """
27
32
  上证e互动-代码ID映射
28
33
  https://sns.sseinfo.com/list/company.do
@@ -38,7 +43,7 @@ def _fetch_stock_uid() -> dict:
38
43
  }
39
44
  uid_list = list()
40
45
  code_list = list()
41
- for page in tqdm(range(1, 73), leave=False):
46
+ for page in tqdm(range(1, 74), leave=False):
42
47
  data.update({"page": page})
43
48
  r = requests.post(url, data=data)
44
49
  data_json = r.json()
@@ -53,8 +58,16 @@ def _fetch_stock_uid() -> dict:
53
58
  for item in soup.find_all("a", attrs={"rel": "tag"})
54
59
  ]
55
60
  )
56
- code_uid_map = dict(zip(code_list, uid_list))
57
- return code_uid_map
61
+ code_uid_df = pd.DataFrame()
62
+ code_uid_df['symbol'] = code_list
63
+ code_uid_df['uid'] = uid_list
64
+ code_uid_df['_id'] = uid_list
65
+ return code_uid_df
66
+
67
+
68
+ @lru_cache()
69
+ def get_stock_uid() -> pd.DataFrame:
70
+ return mongodb_util.find_all_data(db_name_constant.SSE_INFO_UID)
58
71
 
59
72
 
60
73
  def stock_sns_sse_info(symbol: str = "603119") -> pd.DataFrame:
@@ -66,13 +79,16 @@ def stock_sns_sse_info(symbol: str = "603119") -> pd.DataFrame:
66
79
  :return: 提问与回答
67
80
  :rtype: str
68
81
  """
69
- code_uid_map = _fetch_stock_uid()
82
+
83
+ stock_uid_df = get_stock_uid()
84
+ stock_uid_df = stock_uid_df.loc[stock_uid_df['symbol'] == symbol]
85
+ uid = list(stock_uid_df['uid'])[0]
70
86
  url = "https://sns.sseinfo.com/ajax/userfeeds.do"
71
87
  params = {
72
88
  "typeCode": "company",
73
89
  "type": "11",
74
90
  "pageSize": "100",
75
- "uid": code_uid_map[symbol],
91
+ "uid": uid,
76
92
  "page": "1",
77
93
  }
78
94
  big_df = pd.DataFrame()
@@ -148,5 +164,5 @@ def stock_sns_sse_info(symbol: str = "603119") -> pd.DataFrame:
148
164
 
149
165
 
150
166
  if __name__ == "__main__":
151
- stock_sns_sse_info_df = stock_sns_sse_info(symbol="603119")
167
+ stock_sns_sse_info_df = stock_sns_sse_info(symbol="688787")
152
168
  print(stock_sns_sse_info_df)
@@ -33,6 +33,8 @@ def _fetch_org_id(symbol: str = "000001") -> str:
33
33
  return org_id
34
34
 
35
35
 
36
+ # 获取股票所有问题
37
+
36
38
  def stock_irm_cninfo(symbol: str = "002594") -> pd.DataFrame:
37
39
  """
38
40
  互动易-提问
@@ -11,22 +11,25 @@ import pandas as pd
11
11
  import mns_common.api.em.east_money_stock_api as east_money_stock_api
12
12
  import mns_common.component.company.company_common_service_api as company_common_service_api
13
13
  from loguru import logger
14
- from datetime import datetime
15
- from mns_common.db.MongodbUtil import MongodbUtil
14
+ from datetime import datetime, time
15
+
16
16
  import mns_common.utils.date_handle_util as date_handle_util
17
17
 
18
- mongodb_util = MongodbUtil('27017')
19
18
  import mns_common.constant.db_name_constant as db_name_constant
20
19
  import mns_common.component.common_service_fun_api as common_service_fun_api
21
20
  import mns_scheduler.irm.api.sh_stock_sns_sse_info_api as sh_stock_sns_sse_info_api
22
21
  import mns_scheduler.irm.api.sz_stock_sns_sse_info_api as sz_stock_sns_sse_info_api
23
22
 
23
+ from mns_common.db.MongodbUtil import MongodbUtil
24
+
25
+ mongodb_util = MongodbUtil('27017')
26
+
24
27
 
25
28
  # 获取股票提问 互动易-提问 深交所
26
29
  def get_stock_irm_cninfo_sz_api(symbol):
27
30
  try:
28
31
  # 获取一页
29
- stock_irm_cninfo_df = sh_stock_sns_sse_info_api.stock_sns_sse_info(symbol)
32
+ stock_irm_cninfo_df = sz_stock_sns_sse_info_api.stock_irm_cninfo(symbol)
30
33
  # 获取全页
31
34
  # stock_irm_cninfo_df = ak.stock_irm_cninfo(symbol)
32
35
  except Exception as e:
@@ -67,7 +70,7 @@ def get_stock_irm_cninfo_sz_api(symbol):
67
70
  def get_stock_irm_cninfo_sh_api(symbol):
68
71
  try:
69
72
  # 获取一页
70
- stock_sns_sse_info_df = sz_stock_sns_sse_info_api.stock_irm_cninfo(symbol)
73
+ stock_sns_sse_info_df = sh_stock_sns_sse_info_api.stock_sns_sse_info(symbol)
71
74
  # 获取全页
72
75
  # stock_sns_sse_info_df = ak.stock_sns_sseinfo(symbol)
73
76
  except Exception as e:
@@ -110,34 +113,53 @@ def replace_date_format(date_str):
110
113
  return date_str.replace('年', '-').replace('月', '-').replace('日', '').replace('昨天', last_day)
111
114
 
112
115
 
116
+ def save_sh_stock_uid():
117
+ code_uid_df = sh_stock_sns_sse_info_api.sync_stock_uid()
118
+ mongodb_util.save_mongo(code_uid_df, db_name_constant.SSE_INFO_UID)
119
+
120
+
113
121
  # 同步所有互动问题
114
- def sync_all_interactive_questions():
122
+ def sync_all_interactive_questions(symbol_list):
123
+ # 同步互动易映射
124
+ save_sh_stock_uid()
125
+
115
126
  real_time_quotes_all_stocks = east_money_stock_api.get_real_time_quotes_all_stocks()
116
127
  de_list_company_symbols = company_common_service_api.get_de_list_company()
117
128
  real_time_quotes_all_stocks = real_time_quotes_all_stocks.loc[
118
129
  ~(real_time_quotes_all_stocks['symbol'].isin(de_list_company_symbols))]
119
130
  real_time_quotes_all_stocks = common_service_fun_api.classify_symbol(real_time_quotes_all_stocks)
131
+ real_time_quotes_all_stocks = real_time_quotes_all_stocks.sort_values(by=['chg'], ascending=False)
132
+ if symbol_list is not None:
133
+ real_time_quotes_all_stocks = real_time_quotes_all_stocks.loc[
134
+ real_time_quotes_all_stocks['symbol'].isin(symbol_list)]
120
135
  for stock_one in real_time_quotes_all_stocks.itertuples():
121
136
  try:
122
137
  now_date = datetime.now()
123
138
  str_day = now_date.strftime('%Y-%m-%d')
124
139
  str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
125
140
  classification = stock_one.classification
141
+
126
142
  if classification in ['S', 'C']:
127
143
  stock_irm_cninfo_df = get_stock_irm_cninfo_sz_api(stock_one.symbol)
144
+ time.sleep(1)
128
145
  elif classification in ['K', 'H']:
129
146
  stock_irm_cninfo_df = get_stock_irm_cninfo_sh_api(stock_one.symbol)
147
+ time.sleep(1)
148
+
130
149
  else:
131
150
  continue
132
151
  stock_irm_cninfo_df['sync_time'] = str_now_date
133
152
  stock_irm_cninfo_df['str_day'] = str_day
134
153
  stock_irm_cninfo_df.drop_duplicates('_id', keep='last', inplace=True)
154
+ stock_irm_cninfo_df.fillna("", inplace=True)
135
155
  mongodb_util.save_mongo(stock_irm_cninfo_df, db_name_constant.STOCK_INTERACTIVE_QUESTION)
136
- logger.info("完成同步到:{}", stock_one.symbol)
156
+ logger.info("完成同步互动回答到:{}", stock_one.symbol)
137
157
  except Exception as e:
158
+ time.sleep(2)
138
159
  logger.error("同步互动问题出现异常:{},{}", stock_one.symbol, e)
139
160
 
140
161
 
141
162
  if __name__ == '__main__':
163
+ fail_symbol_list = ['000638', '002886', '688778', '688766', '688733', '688778', '688793', '688787']
142
164
  # get_stock_irm_cninfo_sh_api('603633')
143
- sync_all_interactive_questions()
165
+ sync_all_interactive_questions(None)
@@ -326,7 +326,7 @@ def sync_new_high_risk_stocks():
326
326
  # 同步互动回答
327
327
  def sync_all_interactive_questions():
328
328
  logger.info('同步互动回答')
329
- stock_irm_cninfo_service.sync_all_interactive_questions()
329
+ stock_irm_cninfo_service.sync_all_interactive_questions(None)
330
330
 
331
331
 
332
332
  # # 定义BlockingScheduler
@@ -1,4 +1,4 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns-scheduler
3
- Version: 1.0.5.6
3
+ Version: 1.0.5.9
4
4
 
@@ -44,10 +44,10 @@ mns_scheduler/finance/test/fix_blask_list.py,sha256=sXmNcnfnjKHBylc27ysCCb9G4HYl
44
44
  mns_scheduler/hk/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
45
45
  mns_scheduler/hk/hk_company_info_sync_service_api.py,sha256=JEfIl_up36b1UpDxfPhosP6_i2Lo17Ma_GHLytoMjWI,3661
46
46
  mns_scheduler/irm/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
47
- mns_scheduler/irm/stock_irm_cninfo_service.py,sha256=9_QFH5NvRYL_CYkcddiSnLnLKrKz1LweyjE0u7Pny_M,7110
47
+ mns_scheduler/irm/stock_irm_cninfo_service.py,sha256=X0fMCUBP-eLYhZmhNU6yibUJ0bXuRhiQwiVuDda9BhU,7905
48
48
  mns_scheduler/irm/api/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
49
- mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py,sha256=Q7C5i_UOUmovaxkrVK5OqvsiY6FCsNDbYzlWjlhoDNA,4458
50
- mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py,sha256=C4-nk5vaACeOOCXSQMMwCxaZBjHc2PXmnGWZQdMruME,6169
49
+ mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py,sha256=iXy_FukyyQ_ZcU1WcT_DSpZ8-aEtDrTEcyiiIlFzXho,4931
50
+ mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py,sha256=6iZpdQ1pARchL3kV-oEVPDc9Ja0ciQBjBntVmxseeNE,6199
51
51
  mns_scheduler/k_line/__init__.py,sha256=ffZXFCLFdIwOsbxnw__u1MbQYh9yz7Bs8UMP6VF0X2M,161
52
52
  mns_scheduler/k_line/clean/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
53
53
  mns_scheduler/k_line/clean/k_line_info_clean_impl.py,sha256=2xk7gzLX728PRTKUgx2sXoyPKDu-xGAvNpefgeBBd2w,22262
@@ -85,9 +85,9 @@ mns_scheduler/zt/today_high_chg_pool_sync_api.py,sha256=KfEp2Mu8dZKB8DBai4m0UpZw
85
85
  mns_scheduler/zt/zt_five_boards_sync_api.py,sha256=HfjPHKD99fU9c37kSenEX2_qNvFAjQGgy8ERuacSxwk,10916
86
86
  mns_scheduler/zt/zt_pool_sync_api.py,sha256=RrVAbU1u-HTqXF9BSwNlzIxMHrUgjNaLpDKFgXC1XuY,7604
87
87
  mns_scheduler/zz_task/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
88
- mns_scheduler/zz_task/data_sync_task.py,sha256=CGRNqbP8AlU03qI74zq_usmy-1vx_Fc6E7dI77UWfMM,16629
88
+ mns_scheduler/zz_task/data_sync_task.py,sha256=oC8J9dk1bk-WOskgFt0nnh5zGpCNdhkij4O9Gpi2qbU,16633
89
89
  mns_scheduler/zz_task/sync_realtime_quotes_task.py,sha256=DN3bq2XCDZC-PHlbD2NTog48bR44EruIEc2QVGKg7Tk,932
90
- mns_scheduler-1.0.5.6.dist-info/METADATA,sha256=oTtJgiXxHi49w487qTg5KxGgCsRXDawIrTWtCpkhzEI,64
91
- mns_scheduler-1.0.5.6.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
92
- mns_scheduler-1.0.5.6.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
93
- mns_scheduler-1.0.5.6.dist-info/RECORD,,
90
+ mns_scheduler-1.0.5.9.dist-info/METADATA,sha256=hQ7coztdl9cPKYVFPVRjiGkcAFjA-2w2AQSKdNoWrTQ,64
91
+ mns_scheduler-1.0.5.9.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
92
+ mns_scheduler-1.0.5.9.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
93
+ mns_scheduler-1.0.5.9.dist-info/RECORD,,