Dictionary frontend and integration

This commit is contained in:
2023-01-13 14:29:56 -08:00
parent 0de6801a0e
commit 3f90b66b42
3 changed files with 53 additions and 5 deletions
+38 -4
View File
@@ -4,6 +4,7 @@ import random
from datetime import date # used for daily verse
import sqlite3
import string # for literals
import json # for dictionary
DEBUG = 0
"""
@@ -27,6 +28,7 @@ def dbg2(message):
dbg("Debug Level 1 Enabled")
dbg2("Debug Level 2 Enabled")
dictionary_json = "1828_Webster_KJV.json"
kjv_cur = sqlite3.connect("kjv.db").cursor()
verse_ids = [i[0] for i in kjv_cur.execute("SELECT id FROM fts_kjv;").fetchall()]
book_names = [i[0] for i in kjv_cur.execute("SELECT n FROM key_english").fetchall()]
@@ -147,14 +149,48 @@ def search_input_cleaning(query, valid_chars=string.ascii_letters + string.digit
cleaned_query.append(character)
return ''.join(cleaned_query)
def ref_parse_book(ref):
for book in reversed(book_names):
if book.startswith(ref):
return book
return False
@app.get("/define")
def define():
ref = request.args.get("kw", None)
if not ref:
return send_file("html/dictionary.html")
with open(dictionary_json, 'r') as data:
dictionary = json.load(data)
if not ref in dictionary.keys():
return "{} not found".format(ref)
arg_view = request.args.get("view", None)
if arg_view == "plain":
response = return_dict_plain(ref, dictionary[ref])
elif arg_view == "rich":
response = return_dict_rich(ref, dictionary[ref])
else:
response = jsonify({ref:dictionary[ref]})
return response
def return_dict_plain(ref, defs):
response = ''
for e in defs:
response += e + "<br><br>"
return ref.capitalize() + "<br><br>" + response
def return_dict_rich(ref, defs):
css = open('human_readable.css', 'r')
response_html = open('response.html', 'r')
response = ''
for e in defs:
response += e + "<br><br>"
return (response_html.read().format(passage = ref.capitalize(), text = response) + css.read())
@app.get("/show")
def show():
ref = request.args.get("kw", "John 3:16")
@@ -322,10 +358,8 @@ def search():
cleaned_keywords = search_input_cleaning(keywords)
if not cleaned_keywords:
return send_file("html/search.html")
#return ("Invalid Query: Special Characters")
else:
return send_file("html/search.html")
#return ("No Query")
results = lookup_fts(cleaned_keywords)
response_list = response_multi(results)