omni: менеджер источников в панели (338 источников, вкл/выкл, добавление, health-check, фоновые джобы)

This commit is contained in:
reform
2026-10-25 21:58:22 +03:00
parent e1368f2a46
commit 35be863977
9 changed files with 1173 additions and 260 deletions

View File

@@ -149,12 +149,18 @@ def cmd_stats(args):
def cmd_sources(args):
from . import source_state
st = sources.stats()
print("источников:", len(sources.SOURCES), "| по категориям:",
", ".join(f"{k}={v}" for k, v in st.items()))
fl = source_state.flags()
all_s = sources.all_sources()
print("источников:", len(all_s), "| включено:", sum(1 for s in all_s if fl.get(s.name, {}).get("enabled", True)),
"| по категориям:", ", ".join(f"{k}={v}" for k, v in st.items()))
if args.list:
for s in sources.pick(args.category, args.only, args.tags):
print(f" {s.category:<12} {s.adapter:<18} {s.name:<26} {s.url[:70]}")
for s in sources.pick(args.category, args.only, args.tags, respect_enabled=not args.all):
f = fl.get(s.name, {})
mark = "on " if f.get("enabled", True) else "off"
stt = f"{f.get('items')} зап." if (f.get("items") or 0) > 0 else (f.get("note") or "—")
print(f" {mark} {s.category:<12} {s.adapter:<18} {s.name:<26} {stt:<12} {s.url[:60]}")
return 0
@@ -256,6 +262,7 @@ def main(argv=None):
sp.add_argument("--only", default=None)
sp.add_argument("--tags", default=None)
sp.add_argument("--list", action="store_true")
sp.add_argument("--all", action="store_true", help="показать и выключенные")
sp.set_defaults(fn=cmd_sources)
sp = sub.add_parser("feed", help="обход реестра источников без запроса")
@@ -267,6 +274,12 @@ def main(argv=None):
sp.add_argument("--verbose", action="store_true")
sp.set_defaults(fn=cmd_feed)
sp = sub.add_parser("doctor", help="проверка источников, --fix подбирает рабочие фиды")
sp.add_argument("--only", default=None)
sp.add_argument("--fix", action="store_true")
sp.add_argument("--limit", type=int, default=3)
sp.set_defaults(fn=lambda a: (__import__("omni.doctor", fromlist=["run"]).run(a.only, a.fix, limit=a.limit), 0)[1])
sp = sub.add_parser("serve", help="веб-панель + JSON API")
sp.add_argument("--port", type=int, default=8077)
sp.set_defaults(fn=lambda a: __import__("omni.serve", fromlist=["serve"]).serve(a.port))