lottery_特码: format_te_ma_result 改 period 智能判别 Qi/Nq

bug: CLI 传 period=084 但 main() 把 period 改成 v_xg.json Qi=083
  → '084 期特码分析' 仍显示 '083 期' (CLI 失效)

修:
1. main() 不再覆盖 period (保留用户 CLI 传的)
2. format_te_ma_result 智能判别:
   - period == Nq: Week/Day 就是 period 开彩日 (直接用)
   - period == Qi: Week/Day 是 Nq 期开彩日 (-3 天推算 Qi 期)
   - period 是其他期: 不推算

验证:
- CLI 084 → '084 期特码分析' + '本期 084 期开彩日' (8/4 周二)
- CLI 不传 → '083 期特码分析' + '本期 (083) 开彩日: Nq -3 天' (8/1 周六推算)
This commit is contained in:
2026-08-04 16:05:42 +08:00
parent a2bc7b18e3
commit 37ff8f84c4
+40 -32
View File
@@ -130,35 +130,33 @@ def get_te_ma_candidates(period='082'):
def format_te_ma_result(weights, period=None, budget=15, qi_week=None, qi_day=None, qi_nq=None):
"""输出特码候选 + 推荐分配
period: 不传则自动取 v_xg.json Qi
qi_week / qi_day: 配套开彩日 (不传取 ?)
qi_nq: Nq 期号 (再下次)
period: 要分析哪期 (None=自动取 v_xg.json Qi)
qi_week / qi_day / qi_nq: v_xg.json 字段 (None=自动取)
"""
# 自动取 Qi + 挂牌期信息
if period is None or qi_week is None or qi_day is None or qi_nq is None:
try:
import urllib.request
req = urllib.request.Request('https://btc.tktk.app/data/v_xg.json',
headers={'User-Agent': 'Mozilla/5.0'})
with urllib.request.urlopen(req, timeout=10) as r:
v = json.loads(r.read().decode('utf-8'))
if period is None:
period = v.get('Qi', '???')
if qi_week is None:
qi_week = v.get('Week', '?')
if qi_day is None:
qi_day = v.get('Day', '?')
if qi_nq is None:
qi_nq = v.get('Nq', '?')
except Exception:
if period is None:
period = '???'
if qi_week is None:
qi_week = '?'
if qi_day is None:
qi_day = '?'
if qi_nq is None:
qi_nq = '?'
# 一次性查 v_xg.json 拿所有字段
try:
import urllib.request
req = urllib.request.Request('https://btc.tktk.app/data/v_xg.json',
headers={'User-Agent': 'Mozilla/5.0'})
with urllib.request.urlopen(req, timeout=10) as r:
v = json.loads(r.read().decode('utf-8'))
qi_xg = v.get('Qi', '???')
nq_xg = v.get('Nq', '???')
week_xg = v.get('Week', '?')
day_xg = v.get('Day', '?')
except Exception:
qi_xg = nq_xg = '???'
week_xg = day_xg = '?'
# 如果用户没传 period, 默认用 Qi
if period is None:
period = qi_xg
if qi_week is None:
qi_week = week_xg
if qi_day is None:
qi_day = day_xg
if qi_nq is None:
qi_nq = nq_xg
L = []
L.append("=" * 62)
@@ -168,9 +166,19 @@ def format_te_ma_result(weights, period=None, budget=15, qi_week=None, qi_day=No
# Nq = 未开下期
# Week/Day = Nq 期开彩日
# Data.1-7 = Qi-2 期已开号码 (不是 Qi 期)
# 所以 Qi 期的开彩日要推算 (-3 天 from Nq 期)
L.append(f"v_xg.json Qi={period} (最新已开, 刚开) | Nq={qi_nq} (未开下期)")
L.append(f"Qi 期推测开彩日: {qi_week} Day={qi_day} 之前 1 个开彩日 (-3 天)")
# 如果 period == Nq 期, Week/Day 就是 period 开彩日 (直接用)
# 如果 period == Qi 期, Week/Day 是 Nq 期开彩日 (要 -3 天推算 Qi 期)
if str(period) == str(qi_nq):
# period 是 Nq 期 (未开), Week/Day 直接是 period 开彩日
L.append(f"v_xg.json: Qi={qi_xg} (最新已开) | Nq={nq_xg} (未开下期) | Week={week_xg} (Day={day_xg}) = 本期 {period} 期开彩日")
elif str(period) == str(qi_xg):
# period 是 Qi 期 (已开), Week/Day 是 Nq 期, 要 -3 天推算 Qi 期开彩日
L.append(f"v_xg.json: Qi={qi_xg} (最新已开) | Nq={nq_xg} (未开下期) | Week={week_xg} (Day={day_xg}) = Nq 期开彩日")
L.append(f"本期 ({period}) 开彩日: Nq 期开彩日 ({qi_week} Day={qi_day}) 之前 1 个开彩日 (-3 天)")
else:
# period 是其他期 (Cli 传用户指定)
L.append(f"v_xg.json: Qi={qi_xg} (最新已开) | Nq={nq_xg} (未开下期) | Week={week_xg} (Day={day_xg}) = Nq 期开彩日")
L.append(f"本期 ({period}) 开彩日: 用户指定期 (非 Qi/Nq), 不推算")
L.append("=" * 62)
L.append("")
L.append("📋 挂牌资料源:")
@@ -247,13 +255,13 @@ if __name__ == '__main__':
period = '082'
weights = get_te_ma_candidates(period)
# 自动取 v_xg.json Qi + Week + Day + Nq 一次, 传所有
# (period 保留用户 CLI 传的, 不要被 Qi 覆盖 — Qi 只用来推算开彩日)
try:
import urllib.request
req = urllib.request.Request('https://btc.tktk.app/data/v_xg.json',
headers={'User-Agent': 'Mozilla/5.0'})
with urllib.request.urlopen(req, timeout=10) as r:
v = json.loads(r.read().decode('utf-8'))
period = v.get('Qi', period)
qi_week = v.get('Week', '?')
qi_day = v.get('Day', '?')
qi_nq = v.get('Nq', '?')