from flask import Flask, request, render_template, send_file import json from io import BytesIO import zipfile from bs4 import BeautifulSoup import requests app = Flask(__name__) @app.route('/', methods=['GET', 'POST']) def index(): reference = '' version = '' verse_html = '' error = 'No error.' if request.method == 'POST': reference = request.form.get('scripture_reference') version = request.form.get('version') # Map version to ESV Bible ID bible_id = { 'NRSV': 'nrsv', 'NIV': 'niv', 'NLT': 'nlt' }.get(version) if bible_id and reference: webfriendlyref=reference.replace(' ','%20').replace(':','%3A') url = f'https://www.biblegateway.com/passage/?search={webfriendlyref}&version={bible_id}' print(url) try: response = requests.get(url) #response.raise_for_status() verse = response.text except request.RequestException as e: error = f"Error fetching from Bible Gateway: {str(e)}" else: error = "Please provide both a reference and a version." soup = BeautifulSoup(verse, 'html.parser') verse_html = '' for sp in soup.find_all('div',class_='footnotes'): sp.decompose() for sp in soup.find_all('sup',class_='footnote'): sp.decompose() for sp in soup.find_all('sup',class_='crossreference'): sp.decompose() for sp in soup.find_all('a',class_='full-chap-link'): sp.decompose() for sp in soup.find_all('div',class_='crossrefs'): sp.decompose() for sp in soup.find_all('div',class_='passage-content'): verse_html = verse_html + sp.prettify() print(verse_html) print(f"Reference: {reference}, Version: {version}, Error: {error}") return render_template('index.html', reference=reference, version=version, verse_html=verse_html, error=error) if __name__ == '__main__': app.run()