Files
ip/index.html
T
2026-09-10 09:14:04 -04:00

1 line
2.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html><meta charset=utf-8><meta name=viewport content='width=device-width,initial-scale=1'><title>IPTV 运行状态</title><style>body{max-width:920px;margin:32px auto;padding:0 16px;font:15px system-ui;color:#182230;background:#f5f7fb}h1{margin-bottom:4px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:12px}.card{padding:14px;border-radius:10px;background:#fff;box-shadow:0 1px 3px #0001}.n{font-size:26px;font-weight:700}table{width:100%;border-collapse:collapse;background:#fff;margin-top:16px}td,th{padding:9px;border-bottom:1px solid #eee;text-align:left}a{color:#1463cf}small{color:#667}</style><h1>IPTV 运行状态</h1><small id=time>加载中</small><h2>线路</h2><div class=grid id=cards></div><h2>分类</h2><table id=cats><tr><th>分类</th><th>频道</th><th>线路</th></tr></table><h2>质量闭环</h2><div class=card id=quality></div><h2>探针状态</h2><div class=card id=probe></div><h2>最近阶段</h2><table id=runs><tr><th>运行</th><th>阶段</th><th>状态</th><th>完成时间</th></tr></table><p><a href='https://gitea.zzjp.help/zjp/ip/raw/branch/main/all.m3u'>通用 M3U</a> · <a href='https://gitea.zzjp.help/zjp/ip/raw/branch/main/tvbox.json'>TVBox</a> · <a href='https://gitea.zzjp.help/zjp/ip/raw/branch/main/epg.xml'>EPG XMLTV</a> · <a href='https://gitea.zzjp.help/zjp/ip/raw/branch/main/README.md'>使用说明</a></p><script>const labels={cctv:'央视',satellite:'卫视',local:'地方台',hk_mo_tw:'港澳台',webcast:'网络直播'};fetch('status.json',{cache:'no-store'}).then(x=>x.json()).then(d=>{time.textContent='更新于 '+d.generated_at;cards.innerHTML=Object.entries(d.streams).map(([k,v])=>`<div class=card><small>${k}</small><div class=n>${v}</div></div>`).join('')+`<div class=card><small>严格稳定</small><div class=n>${d.strict_streams}</div></div>`;cats.innerHTML+=Object.entries(d.categories).map(([k,v])=>`<tr><td>${labels[k]||k}</td><td>${v.channels}</td><td>${v.streams}</td></tr>`).join('');quality.textContent=d.quality?`GitHub 已深检 ${d.quality.github_total} 条,可解码 ${d.quality.github_video_ok} 条,风险事件 ${d.quality.github_risk_events} 条;VPS 视频深检已关闭`:'暂无深检质量数据';probe.textContent=(d.pending_probe?`Gitee 等待 ${d.pending_probe.batch_id},截止 ${d.pending_probe.expires_at}`:'Gitee 无等待批次')+(d.pending_github?`;GitHub 等待 ${d.pending_github.batch_id},截止 ${d.pending_github.expires_at}`:';GitHub 无等待批次');runs.innerHTML+=d.recent_runs.map(x=>`<tr><td>${x.run_id}</td><td>${x.stage}</td><td>${x.status}</td><td>${x.end_at||''}</td></tr>`).join('')}).catch(()=>time.textContent='状态数据读取失败')</script>