#!/usr/bin/env python3 # pip3 install bible-passage-reference-parser from bible import parse_string import usfm2gmi.usfm2gmi as usfm2gmi import os import sys from subprocess import check_output as sco 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") printoeb(passages) def printoeb(passages, title=True,plug=True): if plug: print('=> https://github.com/openenglishbible/Open-English-Bible This content from OpenEnglishBible (public domain)') print('=> gemini://gemini.zachdecook.com/usfm2gmi/ and rendered with usfm2gmi') for passage in passages: printing = 0 inendc = False book=passage.start.format('b').upper() fname=sco(['find', 'oeb/', '-iname', f'*-{book}*']).strip() if not fname: # TODO: throw 51? print(f"{book} doesn't exist yet in the OEB\r\n") continue if title: print("# " + passage.format()) f = open(fname) startc = passage.start.chapter startv= passage.start.verse endc = passage.end.chapter endv= passage.end.verse for line in f: if f'\\c {startc}' == line.strip(): printing = 1 if startv <= 1: printing = 2 if printing == 1 and (f'\\v {startv} ' in line or f'\\v {startv}' == line.strip()): printing =2 if (f'\\c {endc}') == line.strip(): inendc = True if inendc and (f'\\v {endv+1} ') in line: printing =0 if (f'\\c {endc+1}') in line.strip(): printing =0 if printing>=2: printf(line) print('(OEB)') #end in newline if __name__ == '__main__': qs = os.getenv("QUERY_STRING") or (sys.argv[1] if len(sys.argv) >= 2 else '') main(qs)