From 45b954fccc3b60ecf182e6ea55f12692916b894d Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 18 Apr 2026 20:17:53 +0000 Subject: [PATCH] Fix ZIM filename collisions by appending job ID Format: {domain}_{lang}_{YYYY-MM}_{job_id}.zim Prevents zimwriterfs failures when the same domain is scraped multiple times in the same month. Co-Authored-By: Claude Opus 4.6 --- lib/scraper_runner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/scraper_runner.py b/lib/scraper_runner.py index a3ff820..280b874 100644 --- a/lib/scraper_runner.py +++ b/lib/scraper_runner.py @@ -474,7 +474,7 @@ def _process_job(job, config, stop_event): domain = _sanitize_domain(url) date_tag = datetime.now().strftime('%Y-%m') - zim_filename = f"{_sanitize_filename(domain)}_{language}_{date_tag}.zim" + zim_filename = f"{_sanitize_filename(domain)}_{language}_{date_tag}_{job_id}.zim" zim_path = os.path.join(output_dir, zim_filename) logger.info(f"Job {job_id}: starting scrape of {url}") @@ -502,7 +502,7 @@ def _process_job(job, config, stop_event): if crawl_mode == 'redirect' and resolved_url != url: logger.info(f"Job {job_id}: URL resolved from {url} → {resolved_url}") domain = _sanitize_domain(resolved_url) - zim_filename = f"{_sanitize_filename(domain)}_{language}_{date_tag}.zim" + zim_filename = f"{_sanitize_filename(domain)}_{language}_{date_tag}_{job_id}.zim" zim_path = os.path.join(output_dir, zim_filename) # ── Phase A: Crawl (dispatch to backend) ────────────────────────