#!/usr/bin/env python3
# pip3 install bible-passage-reference-parser
from bible import parse_string
import usfm2gmi.usfm2gmi as usfm2gmi
import os
import sys
import subprocess
from webp import printf
from webp import eprint
def main(qs):
if not qs:
print("10 Enter a scripture reference\r\n")
return
passages = parse_string(qs)
# TODO: Also handle "john 3, tomato 2" errors?
if type(passages[0]) == tuple:
print("51 " + str(passages[0][0]) + "'\r\n")
return
print("20 text/gemini\r\n")
printtcgnt(passages)
def printtcgnt(passages, title=True, plug=True, printStrongs=False):
books=subprocess.check_output([f"find", "tcgnt/", "-name", f'??-*.usfm']).strip().split(b"\n")
books.sort()
if plug:
print('=>https://ebible.org/find/details.php?id=grctcgnt This content from Text-Critical Greek NT (public domain)')
print('=> gemini://gemini.zachdecook.com/usfm2gmi/ and rendered with usfm2gmi')
for passage in passages:
if title:
print("# " + passage.format())
printing = 0
inendc = False
bookn = passage.start.book
#eprint(bookn)
if bookn-38 < 2:
return
f = open(books[bookn-38])
startc = passage.start.chapter
startv= passage.start.verse
endc = passage.end.chapter
endv= passage.end.verse
for line in f:
if f'\\c ' in line and f' {startc} ' in line:
printing = 1
if printing == 1 and (f'\\v {startv} ') in line:
printing =2
if f'\\c ' in line and f' {endc} ' in line:
inendc = True
if inendc and (f'\\v {endv+1} ') in line:
printing =0
if f'\\c ' in line and f' {endc+1} ' in line:
printing =0
if printing>=2:
printf(line, printStrongs)
print('(T-C GNT)') #end in newline
if __name__ == '__main__':
qs = os.getenv("QUERY_STRING") or (sys.argv[1] if len(sys.argv) >= 2 else '')
main(qs)