about summary refs log tree commit diff
path: root/tcgnt.py
diff options
context:
space:
mode:
authorZach DeCook <zachdecook@librem.one>2023-12-11 18:21:24 -0500
committerZach DeCook <zachdecook@librem.one>2023-12-11 18:21:24 -0500
commit6d8988b6c7349e08393f1d51e7b09ea5fef008fd (patch)
tree475248a8dab5ff80599db754035ebf0bc7f623da /tcgnt.py
parent7e573fc75644b822cb6451a274d00d18caa015c4 (diff)
downloadcgi-bin-6d8988b6c7349e08393f1d51e7b09ea5fef008fd.tar.gz
bible: add tcgnt
Diffstat (limited to 'tcgnt.py')
-rwxr-xr-xtcgnt.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/tcgnt.py b/tcgnt.py
new file mode 100755
index 0000000..3349ec0
--- /dev/null
+++ b/tcgnt.py
@@ -0,0 +1,59 @@
+#!/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)
+    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)