inspect_multi.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. """读回多平台跑批结果:确认平台/阶段/卡片类型/段卡时间区间/知识点溯源。"""
  2. from __future__ import annotations
  3. import json
  4. import sys
  5. from creation_knowledge.config import PgConfig
  6. from creation_knowledge.integrations.db import CkStore
  7. def main() -> int:
  8. store = CkStore(PgConfig.from_env(".env"))
  9. ids = sys.argv[1:] or [
  10. "xhs_67e4bdf50000000006028a59",
  11. "dy_7612631899479648866",
  12. "ks_3xepqgwddgbickc",
  13. ]
  14. for pid in ids:
  15. p = store.read_post(pid)
  16. if not p:
  17. print(f"{pid}: NOT FOUND")
  18. continue
  19. cards = p.get("cards") or []
  20. kinds: dict = {}
  21. for c in cards:
  22. kinds[c.get("kind")] = kinds.get(c.get("kind"), 0) + 1
  23. seg = [c for c in cards if c.get("kind") == "segment"]
  24. seg_times = ["{}-{}".format(c.get("start"), c.get("end")) for c in seg[:4]]
  25. items = store.read_items(pid)
  26. srcs = []
  27. for it in items[:4]:
  28. d = it["item"] if isinstance(it["item"], dict) else json.loads(it["item"])
  29. srcs.append({"title": (d.get("title") or "")[:18],
  30. "source_cards": d.get("source_cards")})
  31. print(f"\n{pid}")
  32. print(f" platform={p.get('platform')} stage={p.get('stage')} "
  33. f"url={(p.get('url') or '')[:50]}")
  34. print(f" cards={kinds} seg_times={seg_times}")
  35. print(f" items={len(items)}")
  36. for s in srcs:
  37. print(f" - {s['title']!r} source_cards={s['source_cards']}")
  38. return 0
  39. if __name__ == "__main__":
  40. raise SystemExit(main())