From 3493c43144aa2dfbdff422a4e183f99763a62e7a Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Thu, 27 Nov 2025 19:37:34 -0500 Subject: [PATCH] Fix verse sitemap generation - suppress WeasyPrint warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The sitemap-verses.xml file was contaminated with WeasyPrint import warnings, causing "Document is empty" errors in Google Search Console. Fixes: - Suppress stdout/stderr during imports to prevent warnings in output - Add error handling to sitemap-verses endpoint - Regenerate clean sitemap-verses.xml (6.3MB, 31,102 verses) The file now starts with proper XML declaration instead of error messages. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- kjvstudy_org/routes/utility.py | 13 ++++++++++++- kjvstudy_org/static/sitemap-verses.xml | 9 --------- scripts/generate_verse_sitemap.py | 13 +++++++++++++ 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/kjvstudy_org/routes/utility.py b/kjvstudy_org/routes/utility.py index 62e1b35..bdac713 100644 --- a/kjvstudy_org/routes/utility.py +++ b/kjvstudy_org/routes/utility.py @@ -81,10 +81,21 @@ def sitemap_index(): @router.get("/sitemap-verses.xml") def sitemap_verses(): """Serve static verse sitemap (31,102 verses, generated once)""" + # Check if file exists + if not _VERSE_SITEMAP_PATH.exists(): + return Response( + content=f"Verse sitemap not found at {_VERSE_SITEMAP_PATH}", + status_code=404, + media_type="text/plain" + ) + return FileResponse( path=_VERSE_SITEMAP_PATH, media_type="application/xml", - headers={"Cache-Control": "public, max-age=86400"} # Cache for 1 day + headers={ + "Cache-Control": "public, max-age=86400", # Cache for 1 day + "Content-Encoding": "identity" # Explicitly say it's not compressed + } ) diff --git a/kjvstudy_org/static/sitemap-verses.xml b/kjvstudy_org/static/sitemap-verses.xml index 4a7ec10..b9ada25 100644 --- a/kjvstudy_org/static/sitemap-verses.xml +++ b/kjvstudy_org/static/sitemap-verses.xml @@ -1,12 +1,3 @@ - ------ - -WeasyPrint could not import some external libraries. Please carefully follow the installation steps before reporting an issue: -https://doc.courtbouillon.org/weasyprint/stable/first_steps.html#installation -https://doc.courtbouillon.org/weasyprint/stable/first_steps.html#troubleshooting - ------ - diff --git a/scripts/generate_verse_sitemap.py b/scripts/generate_verse_sitemap.py index 5d7805d..6ebabdb 100755 --- a/scripts/generate_verse_sitemap.py +++ b/scripts/generate_verse_sitemap.py @@ -26,13 +26,26 @@ Usage: git commit -m "Update verse sitemap" """ import sys +import os from pathlib import Path +# Suppress WeasyPrint warnings during import +# Redirect stdout temporarily to suppress import warnings +from io import StringIO +old_stdout = sys.stdout +old_stderr = sys.stderr +sys.stdout = StringIO() +sys.stderr = StringIO() + # Add parent directory to path to import kjv module sys.path.insert(0, str(Path(__file__).parent.parent)) from kjvstudy_org.kjv import bible +# Restore stdout/stderr +sys.stdout = old_stdout +sys.stderr = old_stderr + def generate_verse_sitemap(): """Generate sitemap XML for all verses in the Bible."""