GuestPostSuggester / scripts /precompute_opr.py
vivekchakraverty's picture
Add GuestPostSuggester: search, rank, and analyze guest-post sites
91d75c7
Raw
History Blame Contribute Delete
1.17 kB
"""Maintenance script: precompute/refresh OpenPageRank for the whole catalog and export
the result to data/opr_scores.json for the Space to ship pre-built. Not part of the app
runtime — run manually, e.g. `python scripts/precompute_opr.py` from the project root,
with OPR_API_KEY set in the environment.
"""
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
from pipeline import catalog, config, openpagerank # noqa: E402
def main():
sites = catalog.load_catalog()
domains = sorted({s.domain for s in sites})
print(f"Precomputing OpenPageRank for {len(domains)} domains...")
def progress_cb(frac, msg):
print(f" [{frac:5.1%}] {msg}")
scores = openpagerank.precompute_all(domains, progress_cb=progress_cb)
import json
config.OPR_SCORES_PATH.parent.mkdir(parents=True, exist_ok=True)
config.OPR_SCORES_PATH.write_text(json.dumps(scores, ensure_ascii=False), encoding="utf-8")
nonzero = sum(1 for v in scores.values() if v > 0)
print(f"\nDone. {len(scores)} domains scored ({nonzero} nonzero) -> {config.OPR_SCORES_PATH}")
if __name__ == "__main__":
main()