Added reading and recall of sermon-analyzer. Kind of slow?
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
KJV_SERMON_DB="/home/tyler/kjv-api/sermon-analyzer/data/sermons.db"
|
||||||
@@ -14,9 +14,13 @@ import sqlite3
|
|||||||
import string # for literals shortcut
|
import string # for literals shortcut
|
||||||
import json # for dictionary
|
import json # for dictionary
|
||||||
import hunspell # for spell checking (not really used)
|
import hunspell # for spell checking (not really used)
|
||||||
import sys
|
import os
|
||||||
import logging
|
import logging
|
||||||
from tools import sanity_check
|
from tools import sanity_check
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
SERMON_DB = os.getenv("KJV_SERMON_DB")
|
||||||
|
|
||||||
sequential_purge_delta: timedelta = timedelta(days=90)
|
sequential_purge_delta: timedelta = timedelta(days=90)
|
||||||
timestamp_runtime: datetime = datetime.now().strftime("%d%b%y-%H:%M")
|
timestamp_runtime: datetime = datetime.now().strftime("%d%b%y-%H:%M")
|
||||||
@@ -56,14 +60,33 @@ https://docs.python.org/3/library/sqlite3.html#sqlite3-placeholders
|
|||||||
URL Shortener for sharing groups of scripture.
|
URL Shortener for sharing groups of scripture.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def dict_factory(cursor, row):
|
||||||
|
fields = [column[0] for column in cursor.description]
|
||||||
|
return {key: value for key, value in zip(fields, row)}
|
||||||
|
|
||||||
|
kjv_cur = None
|
||||||
|
sermon_cur = None
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# single user mode, running without uwsgi
|
# single user mode, running without uwsgi
|
||||||
usermode: str = "Single"
|
usermode: str = "Single"
|
||||||
kjv_cur = sqlite3.connect("data/kjv.db", check_same_thread=False).cursor()
|
kjv_cur = sqlite3.connect("data/kjv.db", check_same_thread=False).cursor()
|
||||||
|
if SERMON_DB:
|
||||||
|
sermon_con = sqlite3.connect(SERMON_DB, check_same_thread=False)
|
||||||
|
sermon_con.row_factory = dict_factory
|
||||||
|
sermon_cur = sermon_con.cursor()
|
||||||
else:
|
else:
|
||||||
# you're running with uwsgi
|
# you're running with uwsgi
|
||||||
usermode: str = "Multi"
|
usermode: str = "Multi"
|
||||||
kjv_cur = sqlite3.connect("data/kjv.db").cursor()
|
kjv_cur = sqlite3.connect("data/kjv.db").cursor()
|
||||||
|
if SERMON_DB:
|
||||||
|
sermon_con = sqlite3.connect(SERMON_DB)
|
||||||
|
sermon_con.row_factory = dict_factory
|
||||||
|
sermon_cur = sermon_con.cursor()
|
||||||
|
|
||||||
|
if not kjv_cur:
|
||||||
|
exit("CRITICAL: Error connecting to KJV Database")
|
||||||
|
if not sermon_cur:
|
||||||
|
print("WARN: Error connecting to Sermon Database")
|
||||||
|
|
||||||
cached: dict = {
|
cached: dict = {
|
||||||
"verse_ids": [i[0] for i in kjv_cur.execute("SELECT id FROM fts_kjv;").fetchall()],
|
"verse_ids": [i[0] for i in kjv_cur.execute("SELECT id FROM fts_kjv;").fetchall()],
|
||||||
@@ -139,6 +162,10 @@ def lookup_by_verse_id(start_verse, end_verse=None) -> list:
|
|||||||
).fetchall()
|
).fetchall()
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
def get_sermons_by_verse_id(verse_id) -> list:
|
||||||
|
if not sermon_cur:
|
||||||
|
return
|
||||||
|
return sermon_cur.execute(f"select * from verse_refs where verse_id={verse_id}").fetchall()
|
||||||
|
|
||||||
def get_verse_id(book_id, chapter: str, verse: str) -> str:
|
def get_verse_id(book_id, chapter: str, verse: str) -> str:
|
||||||
# verse_id is 00000000 (00 000 000) (book + chapter + verse)
|
# verse_id is 00000000 (00 000 000) (book + chapter + verse)
|
||||||
@@ -244,6 +271,49 @@ def ref_parse_book(ref):
|
|||||||
return book
|
return book
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@app.get("/ref/<ref>")
|
||||||
|
def get_single_reference_verse_id(ref:str):
|
||||||
|
ref = ref.split(",")[0]
|
||||||
|
ref = ref.split("-")[0]
|
||||||
|
# only want the first single ref, not a range, and not a group.
|
||||||
|
ref = ref_input_cleaning(ref)
|
||||||
|
maybe_chapter: str = ref.split(":")[0][3:]
|
||||||
|
ref_chapter: str = ""
|
||||||
|
for maybedigit in maybe_chapter:
|
||||||
|
if maybedigit.isdigit():
|
||||||
|
ref_chapter += maybedigit
|
||||||
|
ref_verse = ref.split(":")[1]
|
||||||
|
book_str: str = ref_input_cleaning(ref, string.ascii_letters)
|
||||||
|
ref_bookname: str = ref_parse_book(book_str)
|
||||||
|
ref_book_id: int = lookup_book_id(ref_bookname)
|
||||||
|
if not ref_book_id:
|
||||||
|
return
|
||||||
|
return get_verse_id(ref_book_id, ref_chapter, ref_verse)
|
||||||
|
|
||||||
|
@app.get("/sermon/<ref>")
|
||||||
|
def find_sermon(ref:str=None):
|
||||||
|
verse_id = get_single_reference_verse_id(ref=ref)
|
||||||
|
if not sermon_cur:
|
||||||
|
return jsonify({'error':"Sermon database not found"})
|
||||||
|
sermons = get_sermons_by_verse_id(verse_id=verse_id)
|
||||||
|
for sermon in sermons:
|
||||||
|
sermon.update({'kjv':find_by_verseid(sermon.get("verse_id"))[4]})
|
||||||
|
return jsonify(sermons)
|
||||||
|
|
||||||
|
def clean_verseid(verse_id):
|
||||||
|
verse_id = str(verse_id)
|
||||||
|
clean_verseid = ''
|
||||||
|
for char in verse_id:
|
||||||
|
if char in string.digits:
|
||||||
|
clean_verseid += char
|
||||||
|
return clean_verseid
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/verse_id/<verse_id>")
|
||||||
|
def find_by_verseid(verse_id):
|
||||||
|
clean_verse_id = clean_verseid(verse_id=verse_id)
|
||||||
|
return lookup_by_verse_id(clean_verse_id)[0]
|
||||||
|
|
||||||
|
|
||||||
@app.get("/find")
|
@app.get("/find")
|
||||||
def parse_query(query_override: str = None):
|
def parse_query(query_override: str = None):
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
# run from current directory only
|
# run from current directory only
|
||||||
FILE=app.py
|
FILE=app.py
|
||||||
if test -f "$FILE"; then
|
if test -f "$FILE"; then
|
||||||
uwsgi_python3 --http-socket 0.0.0.0:1612 --wsgi-file app.py --callable app --pyargv "-vvv"
|
uwsgi_python3 --http-socket 0.0.0.0:1612 --wsgi-file app.py --callable app --pyargv "-vvv" --stats 0.0.0.0:9192
|
||||||
else
|
else
|
||||||
cd /opt/kjv-api
|
cd /opt/kjv-api
|
||||||
echo "WARNING: RUNNING FROM /opt/kjv-api"
|
echo "WARNING: RUNNING FROM /opt/kjv-api"
|
||||||
|
|||||||
Reference in New Issue
Block a user