Compare commits
3 Commits
master
...
no-api-cal
| Author | SHA1 | Date | |
|---|---|---|---|
| ed5a857001 | |||
| 12a6d47e73 | |||
| 05c662eb82 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
apikey.py
|
||||||
BIN
__pycache__/apikey.cpython-310.pyc
Normal file
BIN
__pycache__/apikey.cpython-310.pyc
Normal file
Binary file not shown.
BIN
__pycache__/apikey.cpython-313.pyc
Normal file
BIN
__pycache__/apikey.cpython-313.pyc
Normal file
Binary file not shown.
BIN
__pycache__/timeout.cpython-310.pyc
Normal file
BIN
__pycache__/timeout.cpython-310.pyc
Normal file
Binary file not shown.
7
boot.py
Normal file
7
boot.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# boot.py -- run on boot-up
|
||||||
|
# can run arbitrary Python, but best to keep it minimal
|
||||||
|
|
||||||
|
import pyb
|
||||||
|
#pyb.main('main.py') # main script to run after this one
|
||||||
|
#pyb.usb_mode('CDC+MSC') # act as a serial and a storage device
|
||||||
|
#pyb.usb_mode('CDC+HID') # act as a serial device and a mouse
|
||||||
126
main.py
Normal file
126
main.py
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
import time
|
||||||
|
import re
|
||||||
|
import random
|
||||||
|
import sched
|
||||||
|
import sqlite3
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
DBCON = sqlite3.connect("./acv.db")
|
||||||
|
CURSOR = DBCON.cursor()
|
||||||
|
BIBLE_BOOKS = [
|
||||||
|
"Genesis",
|
||||||
|
"Exodus",
|
||||||
|
"Leviticus",
|
||||||
|
"Numbers",
|
||||||
|
"Deuteronomy",
|
||||||
|
"Joshua",
|
||||||
|
"Judges",
|
||||||
|
"Ruth",
|
||||||
|
"1 Samuel",
|
||||||
|
"2 Samuel",
|
||||||
|
"1 Kings",
|
||||||
|
"2 Kings",
|
||||||
|
"1 Chronicles",
|
||||||
|
"2 Chronicles",
|
||||||
|
"Ezra",
|
||||||
|
"Nehemiah",
|
||||||
|
"Esther",
|
||||||
|
"Job",
|
||||||
|
"Psalm",
|
||||||
|
"Proverbs",
|
||||||
|
"Ecclesiastes",
|
||||||
|
"Song of Solomon",
|
||||||
|
"Isaiah",
|
||||||
|
"Jeremiah",
|
||||||
|
"Lamentations",
|
||||||
|
"Ezekiel",
|
||||||
|
"Daniel",
|
||||||
|
"Hosea",
|
||||||
|
"Joel",
|
||||||
|
"Amos",
|
||||||
|
"Obadiah",
|
||||||
|
"Jonah",
|
||||||
|
"Micah",
|
||||||
|
"Nahum",
|
||||||
|
"Habakkuk",
|
||||||
|
"Zephaniah",
|
||||||
|
"Haggai",
|
||||||
|
"Zechariah",
|
||||||
|
"Malachi",
|
||||||
|
"Matthew",
|
||||||
|
"Mark",
|
||||||
|
"Luke",
|
||||||
|
"John",
|
||||||
|
"Acts",
|
||||||
|
"Romans",
|
||||||
|
"1 Corinthians",
|
||||||
|
"2 Corinthians",
|
||||||
|
"Galatians",
|
||||||
|
"Ephesians",
|
||||||
|
"Philippians",
|
||||||
|
"Colossians",
|
||||||
|
"1 Thessalonians",
|
||||||
|
"2 Thessalonians",
|
||||||
|
"1 Timothy",
|
||||||
|
"2 Timothy",
|
||||||
|
"Titus",
|
||||||
|
"Philemon",
|
||||||
|
"Hebrews",
|
||||||
|
"James",
|
||||||
|
"1 Peter",
|
||||||
|
"2 Peter",
|
||||||
|
"1 John",
|
||||||
|
"2 John",
|
||||||
|
"3 John",
|
||||||
|
"Jude",
|
||||||
|
"Revelation",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def get_time():
|
||||||
|
gettime = datetime.datetime.now()
|
||||||
|
time = gettime.strftime("%H:%M")
|
||||||
|
return time
|
||||||
|
|
||||||
|
|
||||||
|
def choose_book():
|
||||||
|
rand_book = random.choice(BIBLE_BOOKS)
|
||||||
|
book_index = BIBLE_BOOKS.index(rand_book)
|
||||||
|
return (book_index, rand_book)
|
||||||
|
|
||||||
|
|
||||||
|
def get_verse():
|
||||||
|
curr_time = get_time()
|
||||||
|
extract = ""
|
||||||
|
verse = int(curr_time.split(":")[1])
|
||||||
|
chap = int(curr_time.split(":")[0])
|
||||||
|
data = []
|
||||||
|
while not data:
|
||||||
|
if chap > 12:
|
||||||
|
hour = [chap, chap-12]
|
||||||
|
chap = random.choice(hour)
|
||||||
|
book_tuple = choose_book()
|
||||||
|
# book_tuple = (5, 'Deuteronomy')
|
||||||
|
book_index = book_tuple[0]+1
|
||||||
|
book = book_tuple[1]
|
||||||
|
data = CURSOR.execute(
|
||||||
|
f"select text from acv_verses where book_id == {book_index} and chapter == {chap} and verse == {verse}"
|
||||||
|
).fetchall()
|
||||||
|
if data:
|
||||||
|
break
|
||||||
|
DBCON.commit()
|
||||||
|
verse_text = data[0][0]
|
||||||
|
print(f"""
|
||||||
|
Book: {book}
|
||||||
|
Chapter: {chap}
|
||||||
|
Verse: {verse}
|
||||||
|
Text: {verse_text}
|
||||||
|
""")
|
||||||
|
|
||||||
|
|
||||||
|
# if __name__ == "__main__":
|
||||||
|
# get_verse()
|
||||||
|
|
||||||
|
my_scheduler = sched.scheduler(time.time, time.sleep)
|
||||||
|
my_scheduler.enter(60, 1, get_verse)
|
||||||
|
my_scheduler.run()
|
||||||
175
pull-all-verses-into-files-apibible.py
Normal file
175
pull-all-verses-into-files-apibible.py
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
"""
|
||||||
|
This is a one time script to pull all possible time stamped verses into a local db.
|
||||||
|
I am not sure if an ESP device would have the appropriate storage for the db, so this
|
||||||
|
branch is just for testing. As of writing this, the main file hasn't been updated to not
|
||||||
|
make API calls.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import requests
|
||||||
|
import apikey
|
||||||
|
import re
|
||||||
|
import time
|
||||||
|
import sqlite3
|
||||||
|
import pprint
|
||||||
|
|
||||||
|
TWELVE_HOURS = list(range(1, 12))
|
||||||
|
TWOFOUR_HOURS = list(range(1, 25))
|
||||||
|
MINUTES = list(range(1, 61))
|
||||||
|
VERSION = "en-lsv"
|
||||||
|
APIKEY = apikey.APIBIBLEKEY
|
||||||
|
HEADERS = {"api-key": APIKEY}
|
||||||
|
DBCON = sqlite3.connect("./time_verse.db")
|
||||||
|
CURSOR = DBCON.cursor()
|
||||||
|
BIBLE_BOOKS = [
|
||||||
|
"Genesis",
|
||||||
|
"Exodus",
|
||||||
|
"Leviticus",
|
||||||
|
"Numbers",
|
||||||
|
"Deuteronomy",
|
||||||
|
"Joshua",
|
||||||
|
"Judges",
|
||||||
|
"Ruth",
|
||||||
|
"1 Samuel",
|
||||||
|
"2 Samuel",
|
||||||
|
"1 Kings",
|
||||||
|
"2 Kings",
|
||||||
|
"1 Chronicles",
|
||||||
|
"2 Chronicles",
|
||||||
|
"Ezra",
|
||||||
|
"Nehemiah",
|
||||||
|
"Esther",
|
||||||
|
"Job",
|
||||||
|
"Psalm",
|
||||||
|
"Proverbs",
|
||||||
|
"Ecclesiastes",
|
||||||
|
"Song of Solomon",
|
||||||
|
"Isaiah",
|
||||||
|
"Jeremiah",
|
||||||
|
"Lamentations",
|
||||||
|
"Ezekiel",
|
||||||
|
"Daniel",
|
||||||
|
"Hosea",
|
||||||
|
"Joel",
|
||||||
|
"Amos",
|
||||||
|
"Obadiah",
|
||||||
|
"Jonah",
|
||||||
|
"Micah",
|
||||||
|
"Nahum",
|
||||||
|
"Habakkuk",
|
||||||
|
"Zephaniah",
|
||||||
|
"Haggai",
|
||||||
|
"Zechariah",
|
||||||
|
"Malachi",
|
||||||
|
"Matthew",
|
||||||
|
"Mark",
|
||||||
|
"Luke",
|
||||||
|
"John",
|
||||||
|
"Acts",
|
||||||
|
"Romans",
|
||||||
|
"1 Corinthians",
|
||||||
|
"2 Corinthians",
|
||||||
|
"Galatians",
|
||||||
|
"Ephesians",
|
||||||
|
"Philippians",
|
||||||
|
"Colossians",
|
||||||
|
"1 Thessalonians",
|
||||||
|
"2 Thessalonians",
|
||||||
|
"1 Timothy",
|
||||||
|
"2 Timothy",
|
||||||
|
"Titus",
|
||||||
|
"Philemon",
|
||||||
|
"Hebrews",
|
||||||
|
"James",
|
||||||
|
"1 Peter",
|
||||||
|
"2 Peter",
|
||||||
|
"1 John",
|
||||||
|
"2 John",
|
||||||
|
"3 John",
|
||||||
|
"Jude",
|
||||||
|
"Revelation",
|
||||||
|
]
|
||||||
|
BIBLEID = "65eec8e0b60e656b-01"
|
||||||
|
|
||||||
|
|
||||||
|
def get_bibles():
|
||||||
|
url = f"https://api.scripture.api.bible/v1/bibles/{BIBLEID}/books" # /search?query=Jude 2:24"
|
||||||
|
response = requests.get(url, headers=HEADERS)
|
||||||
|
data = response.json()
|
||||||
|
pprint.pp(data)
|
||||||
|
|
||||||
|
|
||||||
|
def test_call():
|
||||||
|
url = (
|
||||||
|
f"https://api.scripture.api.bible/v1/bibles/{BIBLEID}/search?query=Exodus 13:13"
|
||||||
|
)
|
||||||
|
response = requests.get(url, headers=HEADERS)
|
||||||
|
pprint.pp(response.json())
|
||||||
|
query = response.json()["data"]["passages"][0]["content"]
|
||||||
|
parsed = query.split("/span>")[1][:-4]
|
||||||
|
print(parsed)
|
||||||
|
|
||||||
|
# pass_extract = re.split(r"\[\d{1,3}\]", str(passage[0]))
|
||||||
|
# simplified = re.sub(r"(^\s|\s{2,}|\s\(ESV\)$)", "", pass_extract[1])
|
||||||
|
# if "Footnotes" in simplified:
|
||||||
|
# new_list = re.sub(r"Footnotes.*$", "", simplified)
|
||||||
|
# new_list = new_list.replace("(1)", "")
|
||||||
|
# print(new_list)
|
||||||
|
# else:
|
||||||
|
# new_list = simplified
|
||||||
|
# simplified2 = re.sub(r"(\\n|,$)", " ", new_list)
|
||||||
|
|
||||||
|
|
||||||
|
# {"detail": "Request was throttled. Try again in 700 seconds."}
|
||||||
|
|
||||||
|
|
||||||
|
def iterate_over_books():
|
||||||
|
count = 0
|
||||||
|
for book in BIBLE_BOOKS:
|
||||||
|
print(f"Searching for {book}")
|
||||||
|
for hour in TWOFOUR_HOURS:
|
||||||
|
for min in MINUTES:
|
||||||
|
time.sleep(1)
|
||||||
|
count += 1
|
||||||
|
url = f"https://api.scripture.api.bible/v1/bibles/{BIBLEID}/search?query={book} {hour}:{min}"
|
||||||
|
response = requests.get(url, headers=HEADERS)
|
||||||
|
if response.status_code == 400:
|
||||||
|
print(
|
||||||
|
"Status Code 400 - End of Chapter. Moving onto the next one."
|
||||||
|
)
|
||||||
|
if count > 4500:
|
||||||
|
print(
|
||||||
|
f"Getting close to the end of the 5k daily limit. Cutting it off now, at the end of a book. Current location is {book} {hour}:{min}"
|
||||||
|
)
|
||||||
|
return
|
||||||
|
break
|
||||||
|
print(f"Count: {count} and Passage: {book} {hour}:{min}")
|
||||||
|
query = response.json()["data"]["passages"][0]["content"]
|
||||||
|
simplified2 = query.split("/span>")[1][:-4]
|
||||||
|
|
||||||
|
double_close = simplified2.count("”")
|
||||||
|
double_open = simplified2.count("“")
|
||||||
|
single_open = simplified2.count("'")
|
||||||
|
single_open = simplified2.count("‘")
|
||||||
|
single_closed = simplified2.count("’")
|
||||||
|
char_tuple = (double_open, double_close, single_open, single_closed)
|
||||||
|
if char_tuple == (1, 0, 0, 0):
|
||||||
|
simplified2 += "”"
|
||||||
|
elif char_tuple == (1, 1, 1, 0):
|
||||||
|
simplified2 += "’"
|
||||||
|
elif char_tuple == (1, 0, 1, 0):
|
||||||
|
simplified2 += "”’"
|
||||||
|
replace_apos = simplified2.replace("'", "’")
|
||||||
|
print(replace_apos)
|
||||||
|
|
||||||
|
CURSOR.execute(
|
||||||
|
f"""
|
||||||
|
insert or replace into verses(book, chap_num, verse_num, verse_text)
|
||||||
|
values ('{book}','{hour}','{min}', '{replace_apos}')
|
||||||
|
""")
|
||||||
|
DBCON.commit()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# get_bibles()
|
||||||
|
test_call()
|
||||||
|
# iterate_over_books()
|
||||||
166
pull-all-verses-into-files-crossway.py
Normal file
166
pull-all-verses-into-files-crossway.py
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
"""
|
||||||
|
This is a one time script to pull all possible time stamped verses into a local db.
|
||||||
|
I am not sure if an ESP device would have the appropriate storage for the db, so this
|
||||||
|
branch is just for testing. As of writing this, the main file hasn't been updated to not
|
||||||
|
make API calls.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import requests
|
||||||
|
import apikey
|
||||||
|
import re
|
||||||
|
import time
|
||||||
|
import sqlite3
|
||||||
|
|
||||||
|
TWELVE_HOURS = list(range(1, 12))
|
||||||
|
TWOFOUR_HOURS = list(range(1, 25))
|
||||||
|
MINUTES = list(range(1, 61))
|
||||||
|
VERSION = "en-lsv"
|
||||||
|
APIKEY = apikey.KEY
|
||||||
|
HEADERS = {"Authorization": APIKEY}
|
||||||
|
DBCON = sqlite3.connect('./time_verse.db')
|
||||||
|
CURSOR = DBCON.cursor()
|
||||||
|
BIBLE_BOOKS = [
|
||||||
|
# "Genesis",
|
||||||
|
# "Exodus",
|
||||||
|
# "Leviticus",
|
||||||
|
# "Numbers",
|
||||||
|
"Deuteronomy",
|
||||||
|
"Joshua",
|
||||||
|
"Judges",
|
||||||
|
"Ruth",
|
||||||
|
"1 Samuel",
|
||||||
|
"2 Samuel",
|
||||||
|
"1 Kings",
|
||||||
|
"2 Kings",
|
||||||
|
"1 Chronicles",
|
||||||
|
"2 Chronicles",
|
||||||
|
"Ezra",
|
||||||
|
"Nehemiah",
|
||||||
|
"Esther",
|
||||||
|
"Job",
|
||||||
|
"Psalm",
|
||||||
|
"Proverbs",
|
||||||
|
"Ecclesiastes",
|
||||||
|
"Song of Solomon",
|
||||||
|
"Isaiah",
|
||||||
|
"Jeremiah",
|
||||||
|
"Lamentations",
|
||||||
|
"Ezekiel",
|
||||||
|
"Daniel",
|
||||||
|
"Hosea",
|
||||||
|
"Joel",
|
||||||
|
"Amos",
|
||||||
|
"Obadiah",
|
||||||
|
"Jonah",
|
||||||
|
"Micah",
|
||||||
|
"Nahum",
|
||||||
|
"Habakkuk",
|
||||||
|
"Zephaniah",
|
||||||
|
"Haggai",
|
||||||
|
"Zechariah",
|
||||||
|
"Malachi",
|
||||||
|
"Matthew",
|
||||||
|
"Mark",
|
||||||
|
"Luke",
|
||||||
|
"John",
|
||||||
|
"Acts",
|
||||||
|
"Romans",
|
||||||
|
"1 Corinthians",
|
||||||
|
"2 Corinthians",
|
||||||
|
"Galatians",
|
||||||
|
"Ephesians",
|
||||||
|
"Philippians",
|
||||||
|
"Colossians",
|
||||||
|
"1 Thessalonians",
|
||||||
|
"2 Thessalonians",
|
||||||
|
"1 Timothy",
|
||||||
|
"2 Timothy",
|
||||||
|
"Titus",
|
||||||
|
"Philemon",
|
||||||
|
"Hebrews",
|
||||||
|
"James",
|
||||||
|
"1 Peter",
|
||||||
|
"2 Peter",p
|
||||||
|
"1 John",
|
||||||
|
"2 John",
|
||||||
|
"3 John",
|
||||||
|
"Jude",
|
||||||
|
"Revelation",
|
||||||
|
]
|
||||||
|
|
||||||
|
def test_call():
|
||||||
|
url = "https://api.esv.org/v3/passage/text/?q=Exodus 9:29"
|
||||||
|
response = requests.get(url, headers=HEADERS)
|
||||||
|
print(response.text)
|
||||||
|
query = response.json()["query"]
|
||||||
|
passage = response.json()["passages"]
|
||||||
|
verse = response.json()["query"]
|
||||||
|
pass_extract = re.split(r"\[\d{1,3}\]", str(passage[0]))
|
||||||
|
simplified = re.sub(r"(^\s|\s{2,}|\s\(ESV\)$)", "", pass_extract[1])
|
||||||
|
if "Footnotes" in simplified:
|
||||||
|
new_list = re.sub(r"Footnotes.*$", "", simplified)
|
||||||
|
new_list = new_list.replace("(1)", "")
|
||||||
|
print(new_list)
|
||||||
|
else:
|
||||||
|
new_list = simplified
|
||||||
|
simplified2 = re.sub(r"(\\n|,$)", " ", new_list)
|
||||||
|
|
||||||
|
|
||||||
|
# {"detail": "Request was throttled. Try again in 700 seconds."}
|
||||||
|
|
||||||
|
def iterate_over_books():
|
||||||
|
for book in BIBLE_BOOKS:
|
||||||
|
print(f"Searching for {book}")
|
||||||
|
for hour in TWOFOUR_HOURS:
|
||||||
|
for min in MINUTES:
|
||||||
|
time.sleep(1)
|
||||||
|
while True:
|
||||||
|
url = f"https://api.esv.org/v3/passage/text/?q={book} {hour}:{min}"
|
||||||
|
response = requests.get(url, headers=HEADERS)
|
||||||
|
if response.status_code == 429:
|
||||||
|
time_to_wait = int(re.search(r'\d+', response.text).group())
|
||||||
|
seconds_to_wait = int(time_to_wait)+200
|
||||||
|
print("...ZzZzZz....")
|
||||||
|
print(f"Waiting {seconds_to_wait} seconds because of rate limiting.")
|
||||||
|
print("...ZzZzZz....")
|
||||||
|
time.sleep(seconds_to_wait)
|
||||||
|
continue
|
||||||
|
break
|
||||||
|
query = response.json()["query"]
|
||||||
|
if query != f"{book} {hour}:{min}":
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
print(f"{query} successfully found. Parsing and writing to file.")
|
||||||
|
passage = response.json()["passages"]
|
||||||
|
verse = response.json()["query"]
|
||||||
|
pass_extract = re.split(r"\[\d{1,3}\]", str(passage[0]))
|
||||||
|
simplified = re.sub(r"(^\s|\s{2,}|\s\(ESV\)$)", "", pass_extract[1])
|
||||||
|
if "Footnotes" in simplified:
|
||||||
|
new_list = re.sub(r"Footnotes.*$", "", simplified)
|
||||||
|
new_list = new_list.replace("(1)", "")
|
||||||
|
else:
|
||||||
|
new_list = simplified
|
||||||
|
simplified2 = re.sub(r"(,$)", ".", new_list)
|
||||||
|
|
||||||
|
double_close = simplified2.count("”")
|
||||||
|
double_open = simplified2.count("“")
|
||||||
|
single_open = simplified2.count("'")
|
||||||
|
single_open = simplified2.count("‘")
|
||||||
|
single_closed = simplified2.count("’")
|
||||||
|
char_tuple = (double_open, double_close, single_open, single_closed)
|
||||||
|
if char_tuple == (1, 0, 0, 0):
|
||||||
|
simplified2 += "”"
|
||||||
|
elif char_tuple == (1, 1, 1, 0):
|
||||||
|
simplified2 += "’"
|
||||||
|
elif char_tuple == (1, 0, 1, 0):
|
||||||
|
simplified2 += "”’"
|
||||||
|
print(simplified2)
|
||||||
|
CURSOR.execute(
|
||||||
|
f"insert into verses(book, chap_num, verse_num, verse_text) values ('{book}','{hour}','{min}', '{new_list}')"
|
||||||
|
)
|
||||||
|
DBCON.commit()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
iterate_over_books()
|
||||||
|
# test_call()
|
||||||
26
timeout.py
26
timeout.py
@ -1,26 +0,0 @@
|
|||||||
import errno
|
|
||||||
import os
|
|
||||||
import signal
|
|
||||||
import functools
|
|
||||||
|
|
||||||
class TimeoutError(Exception):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def timeout(seconds=10, error_message=os.strerror(errno.ETIME)):
|
|
||||||
def decorator(func):
|
|
||||||
def _handle_timeout(signum, frame):
|
|
||||||
raise TimeoutError(error_message)
|
|
||||||
|
|
||||||
@functools.wraps(func)
|
|
||||||
def wrapper(*args, **kwargs):
|
|
||||||
signal.signal(signal.SIGALRM, _handle_timeout)
|
|
||||||
signal.alarm(seconds)
|
|
||||||
try:
|
|
||||||
result = func(*args, **kwargs)
|
|
||||||
finally:
|
|
||||||
signal.alarm(0)
|
|
||||||
return result
|
|
||||||
|
|
||||||
return wrapper
|
|
||||||
|
|
||||||
return decorator
|
|
||||||
@ -1,153 +0,0 @@
|
|||||||
import requests
|
|
||||||
from Levenshtein import distance as lev
|
|
||||||
import time
|
|
||||||
import re
|
|
||||||
import random
|
|
||||||
import timeit
|
|
||||||
from timeout import timeout
|
|
||||||
import datetime
|
|
||||||
|
|
||||||
VERSION = "en-lsv"
|
|
||||||
APIKEY = "Token f562cf2d890151d682065696dacdc0f86938a18e"
|
|
||||||
HEADERS = {"Authorization": APIKEY}
|
|
||||||
BIBLE_BOOKS = [
|
|
||||||
"Genesis",
|
|
||||||
"Exodus",
|
|
||||||
"Leviticus",
|
|
||||||
"Numbers",
|
|
||||||
"Deuteronomy",
|
|
||||||
"Joshua",
|
|
||||||
"Judges",
|
|
||||||
"Ruth",
|
|
||||||
"1 Samuel",
|
|
||||||
"2 Samuel",
|
|
||||||
"1 Kings",
|
|
||||||
"2 Kings",
|
|
||||||
"1 Chronicles",
|
|
||||||
"2 Chronicles",
|
|
||||||
"Ezra",
|
|
||||||
"Nehemiah",
|
|
||||||
"Esther",
|
|
||||||
"Job",
|
|
||||||
"Psalm",
|
|
||||||
"Proverbs",
|
|
||||||
"Ecclesiastes",
|
|
||||||
"Song of Solomon",
|
|
||||||
"Isaiah",
|
|
||||||
"Jeremiah",
|
|
||||||
"Lamentations",
|
|
||||||
"Ezekiel",
|
|
||||||
"Daniel",
|
|
||||||
"Hosea",
|
|
||||||
"Joel",
|
|
||||||
"Amos",
|
|
||||||
"Obadiah",
|
|
||||||
"Jonah",
|
|
||||||
"Micah",
|
|
||||||
"Nahum",
|
|
||||||
"Habakkuk",
|
|
||||||
"Zephaniah",
|
|
||||||
"Haggai",
|
|
||||||
"Zechariah",
|
|
||||||
"Malachi",
|
|
||||||
"Matthew",
|
|
||||||
"Mark",
|
|
||||||
"Luke",
|
|
||||||
"John",
|
|
||||||
"Acts",
|
|
||||||
"Romans",
|
|
||||||
"1 Corinthians",
|
|
||||||
"2 Corinthians",
|
|
||||||
"Galatians",
|
|
||||||
"Ephesians",
|
|
||||||
"Philippians",
|
|
||||||
"Colossians",
|
|
||||||
"1 Thessalonians",
|
|
||||||
"2 Thessalonians",
|
|
||||||
"1 Timothy",
|
|
||||||
"2 Timothy",
|
|
||||||
"Titus",
|
|
||||||
"Philemon",
|
|
||||||
"Hebrews",
|
|
||||||
"James",
|
|
||||||
"1 Peter",
|
|
||||||
"2 Peter",
|
|
||||||
"1 John",
|
|
||||||
"2 John",
|
|
||||||
"3 John",
|
|
||||||
"Jude",
|
|
||||||
"Revelation",
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def get_time():
|
|
||||||
gettime = datetime.datetime.now()
|
|
||||||
time = gettime.strftime("%H:%M")
|
|
||||||
return time
|
|
||||||
|
|
||||||
|
|
||||||
def choose_book():
|
|
||||||
rand_book = random.choice(BIBLE_BOOKS)
|
|
||||||
return rand_book
|
|
||||||
|
|
||||||
|
|
||||||
# @timeout(15)
|
|
||||||
def get_verse():
|
|
||||||
curr_time = get_time()
|
|
||||||
extract = ""
|
|
||||||
distance = lev(extract, curr_time)
|
|
||||||
while True:
|
|
||||||
book = choose_book()
|
|
||||||
time.sleep(2)
|
|
||||||
url = f"https://api.esv.org/v3/passage/text/?q={book} {curr_time}"
|
|
||||||
response = requests.get(url, headers=HEADERS)
|
|
||||||
query = response.json()["query"]
|
|
||||||
print(query)
|
|
||||||
chap_verse = re.search(r"(\d{1,3}:\d{1,3})", query)
|
|
||||||
try:
|
|
||||||
extract = chap_verse.group(0)
|
|
||||||
except AttributeError as a:
|
|
||||||
print(a)
|
|
||||||
|
|
||||||
distance = lev(extract, curr_time)
|
|
||||||
if "0" in curr_time and not curr_time.endswith("0"):
|
|
||||||
curr_time = curr_time.replace("0", "")
|
|
||||||
print(curr_time)
|
|
||||||
|
|
||||||
if distance < 1:
|
|
||||||
print(f"{extract} is equal to {curr_time}!")
|
|
||||||
break
|
|
||||||
return response
|
|
||||||
|
|
||||||
|
|
||||||
def parse_verse():
|
|
||||||
response = get_verse()
|
|
||||||
passage = response.json()["passages"]
|
|
||||||
verse = response.json()["query"]
|
|
||||||
pass_extract = re.split(r"\[\d{1,3}\]", str(passage[0]))
|
|
||||||
simplified = re.sub(r"(^\s|\s{2,}|\s\(ESV\)$)", "", pass_extract[1])
|
|
||||||
simplified2 = re.sub(r"(\\n|,[a-zA-Z])", " ", simplified)
|
|
||||||
if "(1)Footnotes" in simplified2:
|
|
||||||
new_list = simplified2.split("(1)Footnotes")[0]
|
|
||||||
print(new_list)
|
|
||||||
else:
|
|
||||||
new_list = simplified2
|
|
||||||
|
|
||||||
double_close = new_list.count('”')
|
|
||||||
double_open = new_list.count('“')
|
|
||||||
single_open = new_list.count("'")
|
|
||||||
single_open = new_list.count("‘")
|
|
||||||
single_closed = new_list.count('’')
|
|
||||||
char_tuple = (double_open, double_close, single_open, single_closed)
|
|
||||||
if char_tuple == (1, 0, 0, 0):
|
|
||||||
new_list += '”'
|
|
||||||
elif char_tuple == (1, 1, 1, 0):
|
|
||||||
new_list += '’'
|
|
||||||
elif char_tuple == (1, 0, 1, 0):
|
|
||||||
new_list += '”’'
|
|
||||||
print(new_list)
|
|
||||||
print(verse)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
parse_verse()
|
|
||||||
Reference in New Issue
Block a user