diff --git a/kjvstudy_org/server.py b/kjvstudy_org/server.py index d3ad68f..1c20169 100644 --- a/kjvstudy_org/server.py +++ b/kjvstudy_org/server.py @@ -4871,7 +4871,7 @@ def get_daily_verse(date_str=None): @app.get("/sitemap.xml", response_class=Response) def sitemap(): - """Generate sitemap.xml with all URLs""" + """Generate comprehensive sitemap.xml with all URLs""" base_url = "https://kjvstudy.org" current_date = datetime.now().strftime("%Y-%m-%d") @@ -4889,18 +4889,54 @@ def sitemap(): weekly 0.9 + + {base_url}/books + {current_date} + monthly + 0.9 + {base_url}/study-guides {current_date} weekly 0.9 + + {base_url}/reading-plans + {current_date} + monthly + 0.9 + + + {base_url}/topics + {current_date} + monthly + 0.9 + + + {base_url}/resources + {current_date} + monthly + 0.9 + {base_url}/verse-of-the-day {current_date} daily 0.8 + + {base_url}/concordance + {current_date} + monthly + 0.8 + + + {base_url}/interlinear + {current_date} + monthly + 0.8 + {base_url}/biblical-maps {current_date} @@ -4919,6 +4955,181 @@ def sitemap(): monthly 0.8 + + {base_url}/biblical-angels + {current_date} + monthly + 0.8 + + + {base_url}/biblical-prophets + {current_date} + monthly + 0.8 + + + {base_url}/names-of-god + {current_date} + monthly + 0.8 + + + {base_url}/tetragrammaton + {current_date} + monthly + 0.8 + + + {base_url}/parables + {current_date} + monthly + 0.8 + + + {base_url}/biblical-covenants + {current_date} + monthly + 0.8 + + + {base_url}/the-twelve-apostles + {current_date} + monthly + 0.8 + + + {base_url}/women-of-the-bible + {current_date} + monthly + 0.8 + + + {base_url}/biblical-festivals + {current_date} + monthly + 0.8 + +""" + + # Study guide slugs + study_guide_slugs = [ + "new-believer", "salvation", "gospel", "fruits-spirit", + "prayer-faith", "christian-living", "gods-love", + "hope-comfort", "wisdom-guidance" + ] + for slug in study_guide_slugs: + sitemap_xml += f""" + {base_url}/study-guides/{slug} + {current_date} + monthly + 0.7 + +""" + + # Reading plan IDs + reading_plan_ids = [ + "chronological", "one-year", "new-testament", "gospels-acts", + "psalms-proverbs", "pentateuch", "prophets", "paul-epistles" + ] + for plan_id in reading_plan_ids: + sitemap_xml += f""" + {base_url}/reading-plans/{plan_id} + {current_date} + monthly + 0.7 + +""" + + # Topic names + topics = get_all_topics() + for topic_name in topics.keys(): + sitemap_xml += f""" + {base_url}/topics/{topic_name} + {current_date} + monthly + 0.7 + +""" + + # Biblical angels, prophets, names of God, parables, covenants, apostles, women, festivals slugs + angel_slugs = ["michael", "gabriel", "lucifer", "abaddon"] + for slug in angel_slugs: + sitemap_xml += f""" + {base_url}/biblical-angels/{slug} + {current_date} + monthly + 0.7 + +""" + + prophet_slugs = ["moses", "elijah", "isaiah", "jeremiah", "ezekiel", "daniel", "jonah", "john-the-baptist"] + for slug in prophet_slugs: + sitemap_xml += f""" + {base_url}/biblical-prophets/{slug} + {current_date} + monthly + 0.7 + +""" + + god_name_slugs = ["elohim", "yahweh", "adonai", "el-shaddai", "yahweh-jireh", "yahweh-rapha", "yahweh-nissi", "yahweh-shalom", "yahweh-tsidkenu", "yahweh-shammah"] + for slug in god_name_slugs: + sitemap_xml += f""" + {base_url}/names-of-god/{slug} + {current_date} + monthly + 0.7 + +""" + + parable_slugs = ["sower", "wheat-tares", "mustard-seed", "good-samaritan", "prodigal-son", "lost-sheep", "talents", "wise-foolish-builders"] + for slug in parable_slugs: + sitemap_xml += f""" + {base_url}/parables/{slug} + {current_date} + monthly + 0.7 + +""" + + covenant_slugs = ["noahic", "abrahamic", "mosaic", "davidic", "new-covenant"] + for slug in covenant_slugs: + sitemap_xml += f""" + {base_url}/biblical-covenants/{slug} + {current_date} + monthly + 0.7 + +""" + + apostle_slugs = ["peter", "andrew", "james-son-of-zebedee", "john", "philip", "bartholomew", "thomas", "matthew", "james-son-of-alphaeus", "thaddaeus", "simon-zealot", "judas-iscariot"] + for slug in apostle_slugs: + sitemap_xml += f""" + {base_url}/the-twelve-apostles/{slug} + {current_date} + monthly + 0.7 + +""" + + women_slugs = ["eve", "sarah", "rebekah", "rachel", "miriam", "deborah", "ruth", "hannah", "esther", "mary-mother-of-jesus", "mary-magdalene", "martha"] + for slug in women_slugs: + sitemap_xml += f""" + {base_url}/women-of-the-bible/{slug} + {current_date} + monthly + 0.7 + +""" + + festival_slugs = ["passover", "unleavened-bread", "firstfruits", "pentecost", "trumpets", "atonement", "tabernacles"] + for slug in festival_slugs: + sitemap_xml += f""" + {base_url}/biblical-festivals/{slug} + {current_date} + monthly + 0.7 + """ # Add all book URLs @@ -4941,7 +5152,7 @@ def sitemap(): """ - # Add all chapter URLs for each book + # Add all chapter URLs and verse URLs for each book chapters = [ch for bk, ch in bible.iter_chapters() if bk == book] for chapter in chapters: sitemap_xml += f""" @@ -4951,6 +5162,43 @@ def sitemap(): 0.6 """ + # Add chapter commentary + sitemap_xml += f""" + {base_url}/commentary/{book}/{chapter} + {current_date} + monthly + 0.5 + +""" + + # Add all verse URLs for this chapter + verses = [v for v in bible.iter_verses() if v.book == book and v.chapter == chapter] + for verse_num in range(1, len(verses) + 1): + sitemap_xml += f""" + {base_url}/book/{book}/chapter/{chapter}/verse/{verse_num} + {current_date} + yearly + 0.5 + +""" + + # Add interlinear verse URLs + try: + interlinear_verses = get_all_interlinear_verses() + for verse_info in interlinear_verses: + book = verse_info['book'] + chapter = verse_info['chapter'] + verse = verse_info['verse'] + sitemap_xml += f""" + {base_url}/interlinear/book/{book}/chapter/{chapter}/verse/{verse} + {current_date} + yearly + 0.5 + +""" + except Exception as e: + # If interlinear data fails to load, skip it + pass sitemap_xml += ""