feat[converter] Added converter tools
I added converter tools and a download task to make. This ensures I can distribute the program without running into legal issues about distributin the ESV.
This commit is contained in:
parent
cb1f6c8608
commit
fc86a09bbf
3
.gitignore
vendored
3
.gitignore
vendored
@ -1 +1,4 @@
|
|||||||
esv
|
esv
|
||||||
|
ESV.json
|
||||||
|
esv.tsv
|
||||||
|
esv.zip
|
||||||
|
21
Makefile
21
Makefile
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
PREFIX = /usr/local
|
PREFIX = /usr/local
|
||||||
|
|
||||||
|
|
||||||
esv: esv.sh esv.awk esv.tsv
|
esv: esv.sh esv.awk esv.tsv
|
||||||
cat esv.sh > $@
|
cat esv.sh > $@
|
||||||
echo 'exit 0' >> $@
|
echo 'exit 0' >> $@
|
||||||
@ -15,7 +16,7 @@ test: esv.sh
|
|||||||
shellcheck -s sh esv.sh
|
shellcheck -s sh esv.sh
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f esv
|
rm -f esv ESV.json esv.zip
|
||||||
|
|
||||||
install: esv
|
install: esv
|
||||||
mkdir -p $(DESTDIR)$(PREFIX)/bin
|
mkdir -p $(DESTDIR)$(PREFIX)/bin
|
||||||
@ -25,6 +26,24 @@ install: esv
|
|||||||
uninstall:
|
uninstall:
|
||||||
rm -f $(DESTDIR)$(PREFIX)/bin/esv
|
rm -f $(DESTDIR)$(PREFIX)/bin/esv
|
||||||
|
|
||||||
|
esv.tsv: download
|
||||||
|
|
||||||
|
download:
|
||||||
|
ifeq ("$(wildcard ./esv.tsv)","") # Check if the file exists before downloading
|
||||||
|
ifeq ( $(strip $(unzip -v)), )
|
||||||
|
curl --location \
|
||||||
|
--request GET "https://bolls.life/static/translations/ESV.json" \
|
||||||
|
-o ESV.json
|
||||||
|
else
|
||||||
|
curl --location \
|
||||||
|
--request GET "https://bolls.life/static/translations/ESV.zip" \
|
||||||
|
-o esv.zip
|
||||||
|
unzip esv.zip
|
||||||
|
endif
|
||||||
|
./convert.py
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
.PHONY: test clean install uninstall
|
.PHONY: test clean install uninstall
|
||||||
|
|
||||||
# end
|
# end
|
||||||
|
@ -18,6 +18,6 @@ esv John 3:16
|
|||||||
|
|
||||||
* Credits
|
* Credits
|
||||||
Thanks to Luke Smith's kjv project.
|
Thanks to Luke Smith's kjv project.
|
||||||
I took the awk scripts, makefile, and shell script from him.
|
I took the awk scripts, Makefile, and shell script from him.
|
||||||
|
|
||||||
https://github.com/LukeSmithxyz/kjv
|
https://github.com/LukeSmithxyz/kjv
|
||||||
|
176
convert.py
Executable file
176
convert.py
Executable file
@ -0,0 +1,176 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import json
|
||||||
|
import pandas
|
||||||
|
import re
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
titles = [
|
||||||
|
"Genesis",
|
||||||
|
"Exodus",
|
||||||
|
"Leviticus",
|
||||||
|
"Numbers",
|
||||||
|
"Deuteronomy",
|
||||||
|
"Joshua",
|
||||||
|
"Judges",
|
||||||
|
"Ruth",
|
||||||
|
"1 Samuel",
|
||||||
|
"2 Samuel",
|
||||||
|
"1 Kings",
|
||||||
|
"2 Kings",
|
||||||
|
"1 Chronicles",
|
||||||
|
"2 Chronicles",
|
||||||
|
"Ezra",
|
||||||
|
"Nehemiah",
|
||||||
|
"Esther",
|
||||||
|
"Job",
|
||||||
|
"Psalms",
|
||||||
|
"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",
|
||||||
|
"The 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"
|
||||||
|
]
|
||||||
|
|
||||||
|
abbreviations = [
|
||||||
|
"Ge",
|
||||||
|
"Exo",
|
||||||
|
"Lev",
|
||||||
|
"Num",
|
||||||
|
"Deu",
|
||||||
|
"Josh",
|
||||||
|
"Jdgs",
|
||||||
|
"Ruth",
|
||||||
|
"1Sm",
|
||||||
|
"2Sm",
|
||||||
|
"1Ki",
|
||||||
|
"2Ki",
|
||||||
|
"1Chr",
|
||||||
|
"2Chr",
|
||||||
|
"Ezra",
|
||||||
|
"Neh",
|
||||||
|
"Est",
|
||||||
|
"Job",
|
||||||
|
"Psa",
|
||||||
|
"Prv",
|
||||||
|
"Eccl",
|
||||||
|
"SSol",
|
||||||
|
"Isa",
|
||||||
|
"Jer",
|
||||||
|
"Lam",
|
||||||
|
"Eze",
|
||||||
|
"Dan",
|
||||||
|
"Hos",
|
||||||
|
"Joel",
|
||||||
|
"Amos",
|
||||||
|
"Obad",
|
||||||
|
"Jonah",
|
||||||
|
"Mic",
|
||||||
|
"Nahum",
|
||||||
|
"Hab",
|
||||||
|
"Zep",
|
||||||
|
"Hag",
|
||||||
|
"Zec",
|
||||||
|
"Mal",
|
||||||
|
"Mat",
|
||||||
|
"Mark",
|
||||||
|
"Luke",
|
||||||
|
"John",
|
||||||
|
"Acts",
|
||||||
|
"Rom",
|
||||||
|
"1Cor",
|
||||||
|
"2Cor",
|
||||||
|
"Gal",
|
||||||
|
"Eph",
|
||||||
|
"Phi",
|
||||||
|
"Col",
|
||||||
|
"1Th",
|
||||||
|
"2Th",
|
||||||
|
"1Tim",
|
||||||
|
"2Tim",
|
||||||
|
"Titus",
|
||||||
|
"Phmn",
|
||||||
|
"Heb",
|
||||||
|
"Jas",
|
||||||
|
"1Pet",
|
||||||
|
"2Pet",
|
||||||
|
"1Jn",
|
||||||
|
"2Jn",
|
||||||
|
"3Jn",
|
||||||
|
"Jude",
|
||||||
|
"Rev"
|
||||||
|
]
|
||||||
|
|
||||||
|
f = open('ESV.json')
|
||||||
|
json_list = json.load(f)
|
||||||
|
|
||||||
|
# The keys we need to extract from the json data
|
||||||
|
key_list = ['book', 'chapter', 'verse', 'text']
|
||||||
|
json_list = [{k:d[k] for k in key_list} for d in json_list]
|
||||||
|
df = pandas.json_normalize(json_list)
|
||||||
|
|
||||||
|
# Function to get book name
|
||||||
|
def get_name(row):
|
||||||
|
index = int(row["book"]) - 1
|
||||||
|
return abbreviations[index], titles[index]
|
||||||
|
|
||||||
|
df.insert(0, "name", '')
|
||||||
|
df.insert(0, "abbrev", '')
|
||||||
|
df[["name", "abbrev"]] = df.apply(get_name, axis=1, result_type='expand')
|
||||||
|
|
||||||
|
export_csv = df.to_csv('esv.tsv',
|
||||||
|
sep='\t',
|
||||||
|
encoding='utf-8',
|
||||||
|
header=False,
|
||||||
|
index=None)
|
||||||
|
|
||||||
|
# Sanity check the size of the file.
|
||||||
|
file_stats = os.stat("esv.tsv")
|
||||||
|
if file_stats.st_size != 4616589:
|
||||||
|
print("Warning: File appears different from recorded value")
|
||||||
|
print("Recorded value: 4616589")
|
||||||
|
print("Found value: ", file_stats.st_size)
|
||||||
|
else:
|
||||||
|
print("Convertion successful!")
|
Loading…
Reference in New Issue
Block a user