#!/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 def printf(line, printStrongs=False): if line.strip(): print(usfm2gmi.convert(line, printStrongs), end=' ') else: print() def eprint(*args, **kwargs): print(*args, file=sys.stderr, **kwargs) 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") printwebp(passages) def printwebp(passages, title=True, plug=True, printStrongs=False): books=subprocess.check_output([f"find", "webp/", "-name", f'??-*.usfm']).strip().split(b"\n") books.sort() if plug: print('=>https://ebible.org/find/details.php?id=engwebp&all=1 This content from World English Bible (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) f = open(books[bookn]) 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('(WEB)') #end in newline if __name__ == '__main__': qs = os.getenv("QUERY_STRING") or (sys.argv[1] if len(sys.argv) >= 2 else '') main(qs)