omni: веб-панель (serve + /api), дайджест, arxiv API-fallback, HF trending unwrap
This commit is contained in:
30
omni/cli.py
30
omni/cli.py
@@ -1,5 +1,6 @@
|
||||
"""CLI: providers / search / fanout / cards / top / find / stats / export."""
|
||||
import argparse
|
||||
import pathlib
|
||||
import concurrent.futures
|
||||
import json
|
||||
import sys
|
||||
@@ -175,6 +176,26 @@ def cmd_feed(args):
|
||||
return 0
|
||||
|
||||
|
||||
def cmd_digest(args):
|
||||
"""Сводка по базе: топ записей по категориям за прогон, в markdown."""
|
||||
rows = store.top(limit=args.limit * 8)
|
||||
by_cat = {}
|
||||
for prov, kind, src, title, sc, price, cur, url in rows:
|
||||
by_cat.setdefault(src or prov, []).append((sc, title, url))
|
||||
out = [f"# дайджест omni · {__import__('datetime').date.today()}", ""]
|
||||
for cat, entries in sorted(by_cat.items(), key=lambda x: -len(x[1])):
|
||||
out.append(f"## {cat} · {len(entries)}")
|
||||
for sc, title, url in entries[:args.limit]:
|
||||
out.append(f"- [{title[:110]}]({url}) · {sc:.2f}")
|
||||
out.append("")
|
||||
text = chr(10).join(out)
|
||||
path = args.out
|
||||
pathlib.Path(path).parent.mkdir(parents=True, exist_ok=True)
|
||||
pathlib.Path(path).write_text(text, encoding="utf-8")
|
||||
print(f"дайджест: {len(by_cat)} категорий, {len(rows)} записей -> {path}")
|
||||
return 0
|
||||
|
||||
|
||||
def cmd_export(args):
|
||||
n, path = store.export(args.out, args.fmt, args.limit)
|
||||
print(f"выгружено {n} записей -> {path}")
|
||||
@@ -246,6 +267,15 @@ def main(argv=None):
|
||||
sp.add_argument("--verbose", action="store_true")
|
||||
sp.set_defaults(fn=cmd_feed)
|
||||
|
||||
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))
|
||||
|
||||
sp = sub.add_parser("digest", help="markdown-дайджест из базы")
|
||||
sp.add_argument("--limit", type=int, default=8)
|
||||
sp.add_argument("--out", default="data/digest.md")
|
||||
sp.set_defaults(fn=cmd_digest)
|
||||
|
||||
sp = sub.add_parser("export", help="выгрузка jsonl/csv")
|
||||
sp.add_argument("--out", default="data/top.jsonl")
|
||||
sp.add_argument("--fmt", default="jsonl", choices=["jsonl", "csv"])
|
||||
|
||||
Reference in New Issue
Block a user