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.
- mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py +23 -7
- mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py +2 -0
- mns_scheduler/irm/stock_irm_cninfo_service.py +30 -8
- mns_scheduler/zz_task/data_sync_task.py +1 -1
- {mns_scheduler-1.0.5.6.dist-info → mns_scheduler-1.0.5.9.dist-info}/METADATA +1 -1
- {mns_scheduler-1.0.5.6.dist-info → mns_scheduler-1.0.5.9.dist-info}/RECORD +8 -8
- {mns_scheduler-1.0.5.6.dist-info → mns_scheduler-1.0.5.9.dist-info}/WHEEL +0 -0
- {mns_scheduler-1.0.5.6.dist-info → mns_scheduler-1.0.5.9.dist-info}/top_level.txt +0 -0
|
@@ -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
|
|
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,
|
|
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
|
-
|
|
57
|
-
|
|
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
|
-
|
|
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":
|
|
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="
|
|
167
|
+
stock_sns_sse_info_df = stock_sns_sse_info(symbol="688787")
|
|
152
168
|
print(stock_sns_sse_info_df)
|
|
@@ -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
|
-
|
|
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 =
|
|
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 =
|
|
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("
|
|
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
|
|
@@ -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=
|
|
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=
|
|
50
|
-
mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py,sha256=
|
|
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=
|
|
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.
|
|
91
|
-
mns_scheduler-1.0.5.
|
|
92
|
-
mns_scheduler-1.0.5.
|
|
93
|
-
mns_scheduler-1.0.5.
|
|
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,,
|
|
File without changes
|
|
File without changes
|