import requests
from bs4 import BeautifulSoup
import os

def scrape_bible_chapters(book_slug, book_display_name, num_chapters, lang_code="yua"):
    base_url = f"https://www.jw.org/{lang_code}/publicacionoob/biblia/nwt/libroob/{book_slug}/"
    output_dir = f"{book_slug.lower()}_verses"
    os.makedirs(output_dir, exist_ok=True)

    for chapter in range(1, num_chapters + 1):
        chapter_url = f"{base_url}{chapter}/"
        print(f"Scraping {book_display_name} Chapter {chapter}...")
        response = requests.get(chapter_url)

        if response.status_code != 200:
            print(f"Failed to fetch chapter {chapter}: {response.status_code}")
            continue

        soup = BeautifulSoup(response.content, "html.parser")
        verses = []

        for span in soup.find_all("span", class_="style-b"):
            verse = span.get_text(" ", strip=True)
            if verse:
                verses.append(verse)

        filename = os.path.join(output_dir, f"{book_slug.lower()}_ch{chapter}.txt")
        with open(filename, "w", encoding="utf-8") as f:
            for verse in verses:
                f.write(verse + "\n")

        print(f"Saved {len(verses)} verses to {filename}")

# Clean bible_books list — update these names with exact JW.org slugs if needed
bible_books = [
    ("1-samuel", 31),
    ("2-samuel", 24),
    ("1-reyes", 22),
    ("2-reyes", 25),
    ("1-crónicas", 29),
    ("2-crónicas", 36),
    ("Esdras", 10),
    ("Nehemías", 13),
    ("Ester", 10),
    ("Job", 42),
    ("Salmos", 150),
    ("Proverbios", 31),
    ("Eclesiastés", 12),
    ("Cantares", 8),
    ("Isaías", 66),
    ("Jeremías", 52),
    ("Lamentaciones", 5),
    ("Ezequiel", 48),
    ("Daniel", 12),
    ("Oseas", 14),
    ("Joel", 3),
    ("Amós", 9),
    ("Abdías", 1),
    ("Jonás", 4),
    ("Miqueas", 7),
    ("Nahúm", 3),
    ("Habacuc", 3),
    ("Sofonías", 3),
    ("Hageo", 2),
    ("Zacarías", 14),
    ("Malaquías", 4),
    ("Mateo", 28),
    ("Marcos", 16),
    ("Lucas", 24),
    ("Juan", 21),
    ("Hechos", 28),
    ("Romanos", 16),
    ("1-corintios", 16),
    ("2-corintios", 13),
    ("Gálatas", 6),
    ("Efesios", 6),
    ("Filipenses", 4),
    ("Colosenses", 4),
    ("1-tesalonicenses", 5),
    ("2-tesalonicenses", 3),
    ("1-timoteo", 6),
    ("2-timoteo", 4),
    ("Tito", 3),
    ("Filemón", 1),
    ("Hebreos", 13),
    ("Santiago", 5),
    ("1-pedro", 5),
    ("2-pedro", 3),
    ("1-juan", 5),
    ("2-juan", 1),
    ("3-juan", 1),
    ("Judas", 1),
    ("Apocalipsis", 22)
]

if __name__ == "__main__":
    for book_name, chapter_count in bible_books:
        scrape_bible_chapters(book_slug=book_name, book_display_name=book_name, num_chapters=chapter_count)

