diff --git a/branch_scanner.py b/branch_scanner.py index 247e50d..eef80ca 100644 --- a/branch_scanner.py +++ b/branch_scanner.py @@ -23,6 +23,10 @@ SCANNER_STATE = "/home/hmo/web-dashboard/data/scanner_state.json" def get_price(code): + # DB 优先 + try: from mofin_db import get_price_from_db; p, _ = get_price_from_db(code); return p if p else 0 + except: pass + # Fallback: 腾讯 mkt = "sh" if code.startswith("6") or code.startswith("5") else "sz" url = f"http://qt.gtimg.cn/q={mkt}{code}" req = Request(url, headers={"User-Agent": "Mozilla/5.0"}) diff --git a/collect_evaluation_data.py b/collect_evaluation_data.py index fe8d39f..e642909 100644 --- a/collect_evaluation_data.py +++ b/collect_evaluation_data.py @@ -47,9 +47,18 @@ def save_json(path, data): def fetch_tencent_data(symbols): - """批量拉腾讯行情,返回 {code: fields_dict}""" + """批量拉行情。DB 优先,腾讯 API fallback""" if not symbols: return {} + # DB 优先 + try: + from mofin_db import get_prices_batch_from_db + db = get_prices_batch_from_db(symbols) + if db: + return {code: {"name": "", "price": p, "prev_close": 0, "change_pct": chg or 0, + "high": 0, "low": 0} for code, (p, chg) in db.items()} + except: pass + # Fallback: 腾讯 code_map = {} query_symbols = [] for c in symbols: diff --git a/stock_profile.py b/stock_profile.py index 1fb7c04..d4fe8c3 100644 --- a/stock_profile.py +++ b/stock_profile.py @@ -54,6 +54,13 @@ def get_quote(code: str) -> dict: prefix = "sz" fields = F + # DB 优先 + try: + from mofin_db import get_price_from_db + p, chg = get_price_from_db(raw) + if p: return {"price": p, "name": name, "code": raw, "change_pct": chg or 0} + except: pass + # Fallback: 腾讯 url = f"http://qt.gtimg.cn/q={prefix}{raw}" try: req = urllib.request.Request(url, headers={ diff --git a/technical_analysis.py b/technical_analysis.py index 1bd7c18..a546672 100644 --- a/technical_analysis.py +++ b/technical_analysis.py @@ -55,7 +55,14 @@ def _market_prefix(code): def get_quote(code): - """获取腾讯API行情数据(带60秒缓存)""" + """获取行情数据。DB 优先(price_monitor 维护),腾讯 API fallback""" + # DB 优先 + try: + from mofin_db import get_price_from_db + p, chg = get_price_from_db(code) + if p: return {"code": code, "price": p, "change_pct": chg or 0} + except: pass + # Fallback: 腾讯 API import time _cache = get_quote.__dict__.get("_cache", {}) now = time.time()