Spaces:
Paused
Paused
Commit ·
c6a3487
1
Parent(s): c83976a
fix_syntax_error
Browse files- sync_data.py +41 -32
sync_data.py
CHANGED
|
@@ -38,6 +38,7 @@ def get_stock_list() -> pd.DataFrame:
|
|
| 38 |
logger.info("Fetching all-market target list...")
|
| 39 |
all_lists = []
|
| 40 |
|
|
|
|
| 41 |
max_retries = 3
|
| 42 |
for attempt in range(max_retries):
|
| 43 |
try:
|
|
@@ -45,6 +46,7 @@ def get_stock_list() -> pd.DataFrame:
|
|
| 45 |
df_a.columns = ['code', 'name']
|
| 46 |
df_a['market'] = df_a['code'].apply(lambda x: '主板' if x.startswith(('60', '00')) else ('创业板' if x.startswith('30') else ('科创板' if x.startswith('68') else ('北交所' if x.startswith(('8', '4', '920')) else '其他'))))
|
| 47 |
all_lists.append(df_a)
|
|
|
|
| 48 |
break # 成功则退出重试循环
|
| 49 |
except Exception as e:
|
| 50 |
if attempt == max_retries - 1:
|
|
@@ -52,42 +54,49 @@ def get_stock_list() -> pd.DataFrame:
|
|
| 52 |
else:
|
| 53 |
logger.warning(f"Attempt {attempt + 1} failed, retrying... Error: {e}")
|
| 54 |
time.sleep(5) # 重试前等待 5 秒
|
| 55 |
-
|
| 56 |
-
# ETF / LOF / REITs (增加容错)
|
| 57 |
-
try:
|
| 58 |
-
df_etf = ak.fund_etf_spot_em()[['代码', '名称']]
|
| 59 |
-
df_etf.columns = ['code', 'name']
|
| 60 |
-
df_etf['market'] = 'ETF'
|
| 61 |
-
all_lists.append(df_etf)
|
| 62 |
-
except Exception as e:
|
| 63 |
-
logger.warning(f"ETF list fetch failed: {e}")
|
| 64 |
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
|
|
|
|
|
|
| 72 |
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
df_cb = ak.bond_zh_hs_cov_spot()
|
| 83 |
-
c_code = '代码' if '代码' in df_cb.columns else 'symbol'
|
| 84 |
-
c_name = '名称' if '名称' in df_cb.columns else 'name'
|
| 85 |
-
df_cb = df_cb[[c_code, c_name]]; df_cb.columns = ['code', 'name']; df_cb['market'] = '可转债'; all_lists.append(df_cb)
|
| 86 |
-
except Exception as e:
|
| 87 |
-
logger.warning(f"Convertible bond list fetch failed: {e}")
|
| 88 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 89 |
except Exception as e:
|
| 90 |
-
logger.
|
| 91 |
|
| 92 |
if not all_lists:
|
| 93 |
db = get_db()
|
|
|
|
| 38 |
logger.info("Fetching all-market target list...")
|
| 39 |
all_lists = []
|
| 40 |
|
| 41 |
+
# A股列表获取(带重试)
|
| 42 |
max_retries = 3
|
| 43 |
for attempt in range(max_retries):
|
| 44 |
try:
|
|
|
|
| 46 |
df_a.columns = ['code', 'name']
|
| 47 |
df_a['market'] = df_a['code'].apply(lambda x: '主板' if x.startswith(('60', '00')) else ('创业板' if x.startswith('30') else ('科创板' if x.startswith('68') else ('北交所' if x.startswith(('8', '4', '920')) else '其他'))))
|
| 48 |
all_lists.append(df_a)
|
| 49 |
+
logger.info(f"A-stock list fetched: {len(df_a)} stocks")
|
| 50 |
break # 成功则退出重试循环
|
| 51 |
except Exception as e:
|
| 52 |
if attempt == max_retries - 1:
|
|
|
|
| 54 |
else:
|
| 55 |
logger.warning(f"Attempt {attempt + 1} failed, retrying... Error: {e}")
|
| 56 |
time.sleep(5) # 重试前等待 5 秒
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 57 |
|
| 58 |
+
# ETF (增加容错)
|
| 59 |
+
try:
|
| 60 |
+
df_etf = ak.fund_etf_spot_em()[['代码', '名称']]
|
| 61 |
+
df_etf.columns = ['code', 'name']
|
| 62 |
+
df_etf['market'] = 'ETF'
|
| 63 |
+
all_lists.append(df_etf)
|
| 64 |
+
logger.info(f"ETF list fetched: {len(df_etf)} funds")
|
| 65 |
+
except Exception as e:
|
| 66 |
+
logger.warning(f"ETF list fetch failed: {e}")
|
| 67 |
|
| 68 |
+
# LOF
|
| 69 |
+
try:
|
| 70 |
+
df_lof = ak.fund_lof_spot_em()[['代码', '名称']]
|
| 71 |
+
df_lof.columns = ['code', 'name']
|
| 72 |
+
df_lof['market'] = 'LOF'
|
| 73 |
+
all_lists.append(df_lof)
|
| 74 |
+
logger.info(f"LOF list fetched: {len(df_lof)} funds")
|
| 75 |
+
except Exception as e:
|
| 76 |
+
logger.warning(f"LOF list fetch failed: {e}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 77 |
|
| 78 |
+
# REITs
|
| 79 |
+
try:
|
| 80 |
+
df_reits = ak.reits_realtime_em()[['代码', '名称']]
|
| 81 |
+
df_reits.columns = ['code', 'name']
|
| 82 |
+
df_reits['market'] = 'REITs'
|
| 83 |
+
all_lists.append(df_reits)
|
| 84 |
+
logger.info(f"REITs list fetched: {len(df_reits)} products")
|
| 85 |
+
except Exception as e:
|
| 86 |
+
logger.warning(f"REITs list fetch failed: {e}")
|
| 87 |
+
|
| 88 |
+
# 可转债
|
| 89 |
+
try:
|
| 90 |
+
df_cb = ak.bond_zh_hs_cov_spot()
|
| 91 |
+
c_code = '代码' if '代码' in df_cb.columns else 'symbol'
|
| 92 |
+
c_name = '名称' if '名称' in df_cb.columns else 'name'
|
| 93 |
+
df_cb = df_cb[[c_code, c_name]]
|
| 94 |
+
df_cb.columns = ['code', 'name']
|
| 95 |
+
df_cb['market'] = '可转债'
|
| 96 |
+
all_lists.append(df_cb)
|
| 97 |
+
logger.info(f"Convertible bond list fetched: {len(df_cb)} bonds")
|
| 98 |
except Exception as e:
|
| 99 |
+
logger.warning(f"Convertible bond list fetch failed: {e}")
|
| 100 |
|
| 101 |
if not all_lists:
|
| 102 |
db = get_db()
|