omni: редизайн панели + 450 источников (341 живых), health-аудит, чистка html/дат, per-source учёт
This commit is contained in:
37
omni/cli.py
37
omni/cli.py
@@ -164,6 +164,39 @@ def cmd_sources(args):
|
||||
return 0
|
||||
|
||||
|
||||
def cmd_audit(args):
|
||||
"""Сводка здоровья реестра: по категориям и список мёртвых с причиной."""
|
||||
from . import source_state
|
||||
fl = source_state.flags()
|
||||
all_s = sources.all_sources()
|
||||
agg = {}
|
||||
dead = []
|
||||
for s in all_s:
|
||||
f = fl.get(s.name, {})
|
||||
a = agg.setdefault(s.category, {"t": 0, "alive": 0, "dead": 0, "untested": 0})
|
||||
a["t"] += 1
|
||||
if not f.get("checked"):
|
||||
a["untested"] += 1
|
||||
elif (f.get("items") or 0) > 0:
|
||||
a["alive"] += 1
|
||||
else:
|
||||
a["dead"] += 1
|
||||
dead.append((s.category, s.name, f.get("note") or "empty"))
|
||||
print("источников: %d | живых: %d | мёртвых: %d | не проверено: %d" % (
|
||||
len(all_s), sum(a["alive"] for a in agg.values()),
|
||||
sum(a["dead"] for a in agg.values()), sum(a["untested"] for a in agg.values())))
|
||||
for cat, a in sorted(agg.items(), key=lambda x: -x[1]["t"]):
|
||||
pct = round(a["alive"] / a["t"] * 100) if a["t"] else 0
|
||||
print(" %-12s всего %3d живых %3d мёртвых %3d не проверено %3d (%d%%)"
|
||||
% (cat, a["t"], a["alive"], a["dead"], a["untested"], pct))
|
||||
if args.dead:
|
||||
print("")
|
||||
print("мёртвые:")
|
||||
for cat, name, note in sorted(dead):
|
||||
print(" %-12s %-28s %s" % (cat, name, note[:50]))
|
||||
return 0
|
||||
|
||||
|
||||
def cmd_feed(args):
|
||||
picked = sources.pick(args.category, args.only, args.tags)
|
||||
if not picked:
|
||||
@@ -265,6 +298,10 @@ def main(argv=None):
|
||||
sp.add_argument("--all", action="store_true", help="показать и выключенные")
|
||||
sp.set_defaults(fn=cmd_sources)
|
||||
|
||||
sp = sub.add_parser("audit", help="здоровье реестра источников")
|
||||
sp.add_argument("--dead", action="store_true", help="показать мёртвые с причиной")
|
||||
sp.set_defaults(fn=cmd_audit)
|
||||
|
||||
sp = sub.add_parser("feed", help="обход реестра источников без запроса")
|
||||
sp.add_argument("--category", default=None)
|
||||
sp.add_argument("--only", default=None)
|
||||
|
||||
Reference in New Issue
Block a user