Spaces:
Runtime error
Runtime error
neuralworm
commited on
Commit
•
310d6f7
1
Parent(s):
3459978
Delete lib/torah.py
Browse fileslib.torah is already in torahbiblecodespython module
- lib/torah.py +0 -246
lib/torah.py
DELETED
@@ -1,246 +0,0 @@
|
|
1 |
-
from deep_translator import GoogleTranslator
|
2 |
-
import torahcodes.resources.func.utils as util
|
3 |
-
from hebrew_numbers import gematria_to_int
|
4 |
-
from textblob import TextBlob
|
5 |
-
from os import listdir
|
6 |
-
from os.path import isfile, join
|
7 |
-
import re
|
8 |
-
import time
|
9 |
-
import random
|
10 |
-
import os
|
11 |
-
import json
|
12 |
-
|
13 |
-
BLUE, RED, WHITE, YELLOW, MAGENTA, GREEN, END = '\33[1;94m', '\033[1;91m', '\33[1;97m', '\33[1;93m', '\033[1;35m', '\033[1;32m', '\033[0m'
|
14 |
-
ORANGE = '\033[1;33m' # orange
|
15 |
-
|
16 |
-
|
17 |
-
data_dir = "resources/texts"
|
18 |
-
|
19 |
-
class BibleBooks():
|
20 |
-
def __init__(self):
|
21 |
-
self.folder = data_dir
|
22 |
-
self.book = {}
|
23 |
-
def load(self):
|
24 |
-
|
25 |
-
for f in listdir(self.folder):
|
26 |
-
print(f)
|
27 |
-
if isfile(join(self.folder, f)) and f.endswith(".json"):
|
28 |
-
fn = f.split('.')
|
29 |
-
#print('Load', fn[0])
|
30 |
-
with open(self.folder+f, encoding="utf-8-sig") as File:
|
31 |
-
self.book[fn[0]] = File.read()
|
32 |
-
|
33 |
-
def rawdata(self, bookname):
|
34 |
-
return self.book[bookname]
|
35 |
-
|
36 |
-
def booklist(self):
|
37 |
-
return list(self.book.keys())
|
38 |
-
|
39 |
-
books = BibleBooks()
|
40 |
-
|
41 |
-
class Torah():
|
42 |
-
def __init__(self):
|
43 |
-
self.book = ''
|
44 |
-
self.gcode = {
|
45 |
-
'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 7, 'h': 8, 'i': 9, 'j': 600,
|
46 |
-
'k': 10, 'l': 20, 'm': 30, 'n': 40, 'o': 50, 'p': 60, 'q': 70, 'r': 80, 's': 90,
|
47 |
-
't': 100, 'u': 200, 'v': 700, 'w': 900, 'x': 300, 'y': 400, 'z': 500
|
48 |
-
}
|
49 |
-
|
50 |
-
def loadbooks(self):
|
51 |
-
books.load()
|
52 |
-
|
53 |
-
def func_getnumber(self, listL, listW):
|
54 |
-
return util.fn_GetNumberValues(listL, listW)
|
55 |
-
|
56 |
-
def func_checklang(self, word, lang):
|
57 |
-
b = TextBlob(word)
|
58 |
-
|
59 |
-
try:
|
60 |
-
b.detect_language()
|
61 |
-
if (b.detect_language() == lang):
|
62 |
-
return True
|
63 |
-
except:
|
64 |
-
return True
|
65 |
-
return False
|
66 |
-
|
67 |
-
def numtobook(self, number):
|
68 |
-
for x in books.booklist():
|
69 |
-
xt = re.findall("[-+]?[.]?[\d]+(?:,\d\d\d)*[\.]?\d*(?:[eE][-+]?\d+)?", x)
|
70 |
-
if xt[0] == str(number):
|
71 |
-
return x
|
72 |
-
|
73 |
-
def func_translate(self, lang_in, lang_out, data):
|
74 |
-
translated = GoogleTranslator(source=lang_in, target=lang_out).translate(data.strip())
|
75 |
-
return translated
|
76 |
-
|
77 |
-
def gematria(self, word: str) -> int:
|
78 |
-
try:
|
79 |
-
if word.isdigit():
|
80 |
-
return int(word)
|
81 |
-
|
82 |
-
# Aufteilen des Wortes in Buchstaben und Zahlen
|
83 |
-
letters = [char for char in word if char.isalpha()]
|
84 |
-
numbers = [int(char) for char in word if char.isdigit()]
|
85 |
-
|
86 |
-
# Berechnen des Gematria-Werts für die Buchstaben
|
87 |
-
letters_value = sum([self.gcode[char] for char in letters if char in self.gcode])
|
88 |
-
|
89 |
-
|
90 |
-
# Hinzufügen der Summe der Zahlen zum Gematria-Wert der Buchstaben
|
91 |
-
total_value = letters_value + sum(numbers)
|
92 |
-
|
93 |
-
return total_value
|
94 |
-
except:
|
95 |
-
print(word)
|
96 |
-
raise ValueError
|
97 |
-
|
98 |
-
|
99 |
-
def gematrix(self, phrase: str) -> int:
|
100 |
-
phrase = self.strip_accents(phrase.lower())
|
101 |
-
phrase = ''.join([i for i in phrase if i.isalpha() or i.isdigit() or i.isspace()])
|
102 |
-
|
103 |
-
# Aufteilen der Eingabe in separate Wörter und Zahlen
|
104 |
-
elements = phrase.split()
|
105 |
-
total_value = 0
|
106 |
-
|
107 |
-
for element in elements:
|
108 |
-
if element.isalpha():
|
109 |
-
# Berechne den Wert für Buchstaben
|
110 |
-
total_value += sum([self.gcode[char] for char in element if char in self.gcode])
|
111 |
-
elif element.isdigit():
|
112 |
-
# Addiere Zahlen direkt zum Gesamtwert
|
113 |
-
total_value += int(element)
|
114 |
-
|
115 |
-
return total_value
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
def strip_accents(self, s):
|
123 |
-
try:
|
124 |
-
return ''.join(
|
125 |
-
c for c in unicodedata.normalize('NFD', s)
|
126 |
-
if unicodedata.category(c) != 'Mn'
|
127 |
-
)
|
128 |
-
except:
|
129 |
-
return s
|
130 |
-
|
131 |
-
|
132 |
-
def gematria_iw_int(text):
|
133 |
-
return gematria_to_int(text)
|
134 |
-
|
135 |
-
|
136 |
-
def func_ParseTranslation(self, translated, lang, active):
|
137 |
-
abd = 'abcdefghijklmnñopqrstuvwxyz1234567890'
|
138 |
-
str_split = translated.split(' ')
|
139 |
-
str_final = ''
|
140 |
-
for word in str_split:
|
141 |
-
try:
|
142 |
-
if word[0].lower() in abd:
|
143 |
-
if active == 'true':
|
144 |
-
if self.func_checklang(word, lang) == True:
|
145 |
-
str_final = str_final+ word+' '
|
146 |
-
else:
|
147 |
-
str_final = str_final+ word+' '
|
148 |
-
except:
|
149 |
-
pass
|
150 |
-
|
151 |
-
if not str_final == '':
|
152 |
-
return str_final
|
153 |
-
else:
|
154 |
-
return 0
|
155 |
-
def els(self, namebook, number, tracert='false', visualice=False):
|
156 |
-
space = number
|
157 |
-
abd = 'abcdefghijklmnñopqrstuvwxyz'
|
158 |
-
i=1
|
159 |
-
rese=""
|
160 |
-
totalvalue = 0
|
161 |
-
D = self.GetDataBook(namebook)
|
162 |
-
for (z,b,y) in D:
|
163 |
-
try:
|
164 |
-
charnum = 0
|
165 |
-
res=""
|
166 |
-
|
167 |
-
for char in D[z,b,y]:
|
168 |
-
charnum = charnum+1
|
169 |
-
if (i % int(space)) == 0:
|
170 |
-
if tracert == 'true':
|
171 |
-
totalvalue = totalvalue + int(charnum)
|
172 |
-
print('Source:',int(z),'chapter:', int(b),'Verse:', int(y),'CharNum:',int(charnum),'Char:', char)
|
173 |
-
|
174 |
-
res=res+char
|
175 |
-
|
176 |
-
i=i+1
|
177 |
-
rese=rese+res
|
178 |
-
except:
|
179 |
-
pass
|
180 |
-
#print('Total', totalvalue)
|
181 |
-
ret = re.sub('\s+', ' ', rese.strip())
|
182 |
-
return ret, totalvalue
|
183 |
-
|
184 |
-
def GetDataBook(self, bibleNumberBook):
|
185 |
-
|
186 |
-
|
187 |
-
JSON = books.rawdata(bibleNumberBook)
|
188 |
-
ListOfJSONStringsParsed, ListOfJSONStringsParsedWithSpaces = util.fn_TextFilePreprocess(JSON)
|
189 |
-
ListOfDictsOfJSONStringsParsed, ListOfDictsOfJSONStringsParsedWithSpaces = util.fn_ConvertJSONStringsToDicts(ListOfJSONStringsParsed, ListOfJSONStringsParsedWithSpaces)
|
190 |
-
SearchTextChosen = util.fn_GetNumberOfTextChosen(ListOfDictsOfJSONStringsParsed)
|
191 |
-
ZippedTupleNoSpaces, ZippedTupleWithSpaces = util.fn_ZippedTupleCreate(ListOfDictsOfJSONStringsParsed, ListOfDictsOfJSONStringsParsedWithSpaces, SearchTextChosen)
|
192 |
-
D, DS = util.fn_DictionaryOfVersesCreate(ZippedTupleNoSpaces, ZippedTupleWithSpaces)
|
193 |
-
S, L, DL, D5, ListOfWords = util.fn_DataObjectsCreate(D, DS)
|
194 |
-
N, NW = util.fn_GetNumberValues(S, ListOfWords)
|
195 |
-
ListOfIndexesCustom = util.fn_ListOfIndexesCustomCreate(D5)
|
196 |
-
W = util.fn_TupleOfWordsAndGematriaValuesCreate(ListOfWords, NW)
|
197 |
-
|
198 |
-
return D
|
199 |
-
|
200 |
-
|
201 |
-
def process_json_files(start, end, step, length=0, tlang="en", spaces_include=False, strip_in_braces=True, strip_diacritics=True):
|
202 |
-
base_path = "resources/texts"
|
203 |
-
translator = GoogleTranslator(source='auto', target=tlang)
|
204 |
-
results = []
|
205 |
-
|
206 |
-
for i in range(start, end + 1):
|
207 |
-
file_name = f"{base_path}/{i:02}.json"
|
208 |
-
try:
|
209 |
-
with open(file_name, 'r', encoding='utf-8') as file:
|
210 |
-
data = json.load(file)
|
211 |
-
text_blocks = data["text"]
|
212 |
-
|
213 |
-
full_text = ""
|
214 |
-
for block in text_blocks:
|
215 |
-
full_text += ' '.join(block)
|
216 |
-
|
217 |
-
clean_text = full_text
|
218 |
-
if strip_in_braces:
|
219 |
-
clean_text = re.sub(r"\[.*?\]", "", clean_text, flags=re.DOTALL)
|
220 |
-
if strip_diacritics:
|
221 |
-
clean_text = re.sub(r"[^\u05D0-\u05EA ]+", "", clean_text)
|
222 |
-
if not spaces_include:
|
223 |
-
clean_text = clean_text.replace(" ", "")
|
224 |
-
|
225 |
-
if length != 0:
|
226 |
-
selected_characters = clean_text[step - 1::step][:length]
|
227 |
-
else:
|
228 |
-
selected_characters = clean_text[step - 1::step] # If length is 0, select all characters from step
|
229 |
-
|
230 |
-
translated_text = translator.translate(''.join(selected_characters))
|
231 |
-
if selected_characters != "":
|
232 |
-
results.append({
|
233 |
-
"book": i,
|
234 |
-
"title": data["title"],
|
235 |
-
"original_text": selected_characters,
|
236 |
-
"translated_text": translated_text
|
237 |
-
})
|
238 |
-
|
239 |
-
except FileNotFoundError:
|
240 |
-
results.append({"error": f"File {file_name} not found."})
|
241 |
-
except json.JSONDecodeError:
|
242 |
-
results.append({"error": f"File {file_name} could not be read as JSON."})
|
243 |
-
except KeyError:
|
244 |
-
results.append({"error": f"Expected key 'text' is missing in {file_name}."})
|
245 |
-
|
246 |
-
return results
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|