biblematedata 0.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,50 @@
1
+ Metadata-Version: 2.1
2
+ Name: biblematedata
3
+ Version: 0.0.1
4
+ Summary: BibleMate AI - Automate Your Bible Study
5
+ Home-page: https://biblemate.ai
6
+ Author: Eliran Wong
7
+ Author-email: support@marvel.bible
8
+ License: GNU General Public License (GPL)
9
+ Project-URL: Source, https://github.com/eliranwong/biblemate
10
+ Project-URL: Tracker, https://github.com/eliranwong/biblemate/issues
11
+ Project-URL: Documentation, https://github.com/eliranwong/biblemate/wiki
12
+ Project-URL: Funding, https://www.paypal.me/MarvelBible
13
+ Keywords: mcp agent biblemate ai anthropic azure chatgpt cohere deepseek genai github googleai groq llamacpp mistral ollama openai vertexai xai
14
+ Classifier: Development Status :: 5 - Production/Stable
15
+ Classifier: Intended Audience :: End Users/Desktop
16
+ Classifier: Topic :: Utilities
17
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
18
+ Classifier: Topic :: Software Development :: Build Tools
19
+ Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Requires-Python: >=3.10, <3.13
24
+ Provides-Extra: genai
25
+
26
+ # biblematedata
27
+
28
+ Bible Data for BibleMate AI Setup.
29
+
30
+ Install Essential Data for running [BibleMate AI](https://github.com/eliranwong/biblemate):
31
+
32
+ CLI version / MCP server:
33
+
34
+ https://github.com/eliranwong/biblematecli
35
+
36
+ Web GUI / Http Server / API Server:
37
+
38
+ https://github.com/eliranwong/biblemateweb
39
+
40
+ # Requirement
41
+
42
+ Install `git` command line tool separately.
43
+
44
+ # Install BibleMate Data
45
+
46
+ > pip install -U biblematedata
47
+
48
+ # Set Up Data For BibleMate Web / BibleMate CLI
49
+
50
+ > biblematedata
@@ -0,0 +1,25 @@
1
+ # biblematedata
2
+
3
+ Bible Data for BibleMate AI Setup.
4
+
5
+ Install Essential Data for running [BibleMate AI](https://github.com/eliranwong/biblemate):
6
+
7
+ CLI version / MCP server:
8
+
9
+ https://github.com/eliranwong/biblematecli
10
+
11
+ Web GUI / Http Server / API Server:
12
+
13
+ https://github.com/eliranwong/biblemateweb
14
+
15
+ # Requirement
16
+
17
+ Install `git` command line tool separately.
18
+
19
+ # Install BibleMate Data
20
+
21
+ > pip install -U biblematedata
22
+
23
+ # Set Up Data For BibleMate Web / BibleMate CLI
24
+
25
+ > biblematedata
File without changes
@@ -0,0 +1,296 @@
1
+ import os, zipfile, gdown, traceback, time, random, requests, shutil
2
+ from prompt_toolkit.formatted_text import HTML
3
+ from prompt_toolkit.shortcuts import radiolist_dialog
4
+ from pathlib import Path
5
+
6
+
7
+ AUDIO_REPOS = {
8
+ "ASV (American accent; verse-by-verse)": ("BBE", "eliranwong/MP3_AmericanStandardVersion_american", "default"),
9
+ "BBE (British accent; verse-by-verse)": ("BBE", "eliranwong/MP3_BibleInBasicEnglish_british", "default"),
10
+ "BHS5 (Hebrew; word-by-word)": ("BHS5", "eliranwong/MP3_BHS5_word-by-word", "default"),
11
+ "BSB (American accent; verse-by-verse)": ("BSB", "eliranwong/MP3_BereanStudyBible_american", "default"),
12
+ "BSB (British accent; verse-by-verse)": ("BSB", "eliranwong/MP3_BereanStudyBible_british", "default"),
13
+ "CUV (Cantonese; verse-by-verse)": ("CUV", "eliranwong/MP3_ChineseUnionVersion_cantonese", "default"),
14
+ "CUVs (Mandarin; verse-by-verse)": ("CUVs", "eliranwong/MP3_ChineseUnionVersion_mandarin", "default"),
15
+ "ERV (British accent; verse-by-verse)": ("ERV", "eliranwong/MP3_EnglishRevisedVersion_british", "default"),
16
+ "ISV (American accent; verse-by-verse)": ("ISV", "eliranwong/MP3_InternationalStandardVersion_american", "default"),
17
+ "ISV (British accent; verse-by-verse)": ("ISV", "eliranwong/MP3_InternationalStandardVersion_british", "default"),
18
+ "KJV (American accent; verse-by-verse)": ("KJV", "eliranwong/MP3_KingJamesVersion_american", "default"),
19
+ "KJV (British accent; verse-by-verse)": ("KJV", "eliranwong/MP3_KingJamesVersion_british", "default"),
20
+ "LEB (American accent; verse-by-verse)": ("LEB", "eliranwong/MP3_LexhamEnglishBible_american", "default"),
21
+ "LEB (British accent; verse-by-verse)": ("LEB", "eliranwong/MP3_LexhamEnglishBible_british", "default"),
22
+ "NET (American accent; verse-by-verse)": ("NET", "eliranwong/MP3_NewEnglishTranslation_american", "default"),
23
+ "NET (British accent; verse-by-verse)": ("NET", "eliranwong/MP3_NewEnglishTranslation_british", "default"),
24
+ "OGNT (Greek; word-by-word)": ("OGNT", "eliranwong/MP3_OpenGNT_word-by-word", "default"),
25
+ "OHGB (Hebrew & Greek; fast; verse-by-verse)": ("OHGB", "eliranwong/MP3_OpenHebrewGreekBible_fast", "default"),
26
+ "OHGB (Hebrew & Greek; slow; verse-by-verse)": ("OHGB", "eliranwong/MP3_OpenHebrewGreekBible_slow", "default"),
27
+ "SBLGNT (Greek; fast; verse-by-verse)": ("SBLGNT", "eliranwong/MP3_SBLGNT_fast", "default"),
28
+ "SBLGNT (Greek; slow; verse-by-verse)": ("SBLGNT", "eliranwong/MP3_SBLGNT_slow", "default"),
29
+ "WEB (British accent; verse-by-verse)": ("WEB", "eliranwong/MP3_WebEnglishBible_british", "default"),
30
+ "WLC (Hebrew; fast; verse-by-verse)": ("WLC", "eliranwong/MP3_WLC_fast", "default"),
31
+ "WLC (Hebrew; slow; verse-by-verse)": ("WLC", "eliranwong/MP3_WLC_slow", "default"),
32
+ }
33
+
34
+ FILE_IDS = {
35
+ # vectors - new
36
+ "bible.db": (("vectors",), "1x5WbytQHkiJHzDiAjaf_I6XTIkRyMIBF"),
37
+ "collection.db": (("vectors",), "18tUxwdcaGPaQ7e7m-RIIEEBFNwyBFWva"),
38
+ "dictionary.db": (("vectors",), "1JYjxA6Zf2TkJ4eHEJ9xSaG5XpGcz46yq"),
39
+ "encyclopedia.db": (("vectors",), "1yQmwXIjvZEbrUtoMAm7OQoAYVbnRZVP7"),
40
+ "exlb.db": (("vectors",), "1zY9sKi53ct4fyH5KwOe31uAsSDJ_6t8z"),
41
+ # commentaries - new
42
+ "cAIC.commentary": (("commentaries",), "1tkNrdpw5fmRJ0-3_uvJiRz-f8hMQJIPh"),
43
+ "cAICSC.commentary": (("commentaries",), "1sjPHwZf4gVp5O35yYr7qbjJDC0KzSsvh"),
44
+ "cAICTC.commentary": (("commentaries",), "1pKAzBeuFHXV7Jw6OTKQ9kqDlIUxt-Sf1"),
45
+ # commentaries - UBA
46
+ "cBarnes.commentary": (("commentaries",), "13uxButnFH2NRUV-YuyRZYCeh1GzWqO5J"),
47
+ "cBenson.commentary": (("commentaries",), "1MSRUHGDilogk7_iZHVH5GWkPyf8edgjr"),
48
+ "cBI.commentary": (("commentaries",), "1DUATP_0M7SwBqsjf20YvUDblg3_sOt2F"),
49
+ "cBrooks.commentary": (("commentaries",), "1pZNRYE6LqnmfjUem4Wb_U9mZ7doREYUm"),
50
+ "cCalvin.commentary": (("commentaries",), "1FUZGK9n54aXvqMAi3-2OZDtRSz9iZh-j"),
51
+ "cCBSC.commentary": (("commentaries",), "1IxbscuAMZg6gQIjzMlVkLtJNDQ7IzTh6"),
52
+ "cCECNT.commentary": (("commentaries",), "1MpBx7z6xyJYISpW_7Dq-Uwv0rP8_Mi-r"),
53
+ "cCGrk.commentary": (("commentaries",), "1Jf51O0R911Il0V_SlacLQDNPaRjumsbD"),
54
+ "cCHP.commentary": (("commentaries",), "1dygf2mz6KN_ryDziNJEu47-OhH8jK_ff"),
55
+ "cClarke.commentary": (("commentaries",), "1ZVpLAnlSmBaT10e5O7pljfziLUpyU4Dq"),
56
+ "cCPBST.commentary": (("commentaries",), "14zueTf0ioI-AKRo_8GK8PDRKael_kB1U"),
57
+ "cEBC.commentary": (("commentaries",), "1UA3tdZtIKQEx-xmXtM_SO1k8S8DKYm6r"),
58
+ "cECER.commentary": (("commentaries",), "1sCJc5xuxqDDlmgSn2SFWTRbXnHSKXeh_"),
59
+ "cEGNT.commentary": (("commentaries",), "1ZvbWnuy2wwllt-s56FUfB2bS2_rZoiPx"),
60
+ "cGCT.commentary": (("commentaries",), "1vK53UO2rggdcfcDjH6mWXAdYti4UbzUt"),
61
+ "cGill.commentary": (("commentaries",), "1O5jnHLsmoobkCypy9zJC-Sw_Ob-3pQ2t"),
62
+ "cHenry.commentary": (("commentaries",), "1m-8cM8uZPN-fLVcC-a9mhL3VXoYJ5Ku9"),
63
+ "cHH.commentary": (("commentaries",), "1RwKN1igd1RbN7phiJDiLPhqLXdgOR0Ms"),
64
+ "cICCNT.commentary": (("commentaries",), "1QxrzeeZYc0-GNwqwdDe91H4j1hGSOG6t"),
65
+ "cJFB.commentary": (("commentaries",), "1NT02QxoLeY3Cj0uA_5142P5s64RkRlpO"),
66
+ "cKD.commentary": (("commentaries",), "1rFFDrdDMjImEwXkHkbh7-vX3g4kKUuGV"),
67
+ "cLange.commentary": (("commentaries",), "1_PrTT71aQN5LJhbwabx-kjrA0vg-nvYY"),
68
+ "cMacL.commentary": (("commentaries",), "1p32F9MmQ2wigtUMdCU-biSrRZWrFLWJR"),
69
+ "cPHC.commentary": (("commentaries",), "1xTkY_YFyasN7Ks9me3uED1HpQnuYI8BW"),
70
+ "cPulpit.commentary": (("commentaries",), "1briSh0oDhUX7QnW1g9oM3c4VWiThkWBG"),
71
+ "cRob.commentary": (("commentaries",), "17VfPe4wsnEzSbxL5Madcyi_ubu3iYVkx"),
72
+ "cSpur.commentary": (("commentaries",), "1OVsqgHVAc_9wJBCcz6PjsNK5v9GfeNwp"),
73
+ "cVincent.commentary": (("commentaries",), "1ZZNnCo5cSfUzjdEaEvZ8TcbYa4OKUsox"),
74
+ "cWesley.commentary": (("commentaries",), "1rerXER1ZDn4e1uuavgFDaPDYus1V-tS5"),
75
+ "cWhedon.commentary": (("commentaries",), "1FPJUJOKodFKG8wsNAvcLLc75QbM5WO-9"),
76
+ # lexicons - new
77
+ "lexicons": ((), "1xlvJ6GURwYCxPnYwo2xuyREutWTeWMcH"),
78
+ # bibles - new
79
+ "ODB.bible": (("original",), "1DD8IsGnH2YAcyHeIp4_CKiezw0vvoMUF"),
80
+ "OIB.bible": (("original",), "1RipYgwIflQprP1h02_7L0chpcINNFxef"),
81
+ "OLB.bible": (("original",), "13wCL_cHTX-ZO6xcbtx6YhiZZuJq_iZht"),
82
+ "OPB.bible": (("original",), "1WzrQlFzOE1PK7Lg2QxcUo-zpFiQlJujO"),
83
+ "ORB.bible": (("original",), "17TnhpbkO7y261NcJ8GThEBpMpF_MeTjG"),
84
+ "OHGB.bible": (("bibles",), "1Wwn_HaVW_ViOdG7MA_3aAxZQajw7O4tK"),
85
+ "OHGBi.bible": (("bibles",), "1z5xSfTQ8FESr01xx-WKppRisLUECiXbV"),
86
+ # bibles - UBA
87
+ "ASV.bible": (("bibles",), "1oDuV54_zOl_L0GQqmYiLvgjk2pQu4iSr"),
88
+ "BSB.bible": (("bibles",), "1fQX8cT12LE9Q3dBUJyezTYg4a0AbdKbN"),
89
+ "CUV.bible": (("bibles",), "1SuXGZIx_ivz9ztPvnylO_ComYOYrJyzk"),
90
+ "CUVs.bible": (("bibles",), "1cu0FFIb_Zc3lQ71P1EJB3P8E5vDLnOt6"),
91
+ "ISV.bible": (("bibles",), "1_nmaakABx8wVsQHdBL9rVh2wtRK8uyyW"),
92
+ "KJV.bible": (("bibles",), "1ycOkEJ2JI_4iwjllb4mE02wkDvrsPlNq"),
93
+ "LEB.bible": (("bibles",), "1p-_phmh3y54i4FSLhzEd33_v0kzSjAZn"),
94
+ "LXX1.bible": (("bibles",), "1t9sgkQxYkZElg1M8f3QHYIF8oRAIN_hd"),
95
+ "LXX1i.bible": (("bibles",), "1vtGfv2otmb2N86M2QdRB6KdFjlNyAGOc"),
96
+ "LXX2.bible": (("bibles",), "1oZk5nYKcR1s2XtRLfU-H9IxCkCQ2px6U"),
97
+ "LXX2i.bible": (("bibles",), "1jgq30khM0Oqxa3phE07Wg4R2p15t1N12"),
98
+ "NET.bible": (("bibles",), "1pJ_9Wk4CmDdFO08wioOxs4krKjNeh4Ur"),
99
+ "SBLGNT.bible": (("bibles",), "1N1ryqvSytW3RFlOUy7rex0JdO2X5IzuK"),
100
+ "SBLGNTl.bible": (("bibles",), "1IgbX1ZBB05FgNglQM8t6GZBNSJVCu2fS"),
101
+ "ULT.bible": (("bibles",), "1C_YiWs7GsduCuBOO4vSR7c13RRFtIZGg"),
102
+ "UST.bible": (("bibles",), "1-s7NUKpPauer3w1hpu6W9YqVBjiLuXmc"),
103
+ "WEB.bible": (("bibles",), "1L9qAeamdZwGzVdf7jC4_ks05hyQa2R7l"),
104
+ # core - new
105
+ "collections3.sqlite": ((), "1zvNWt0ffo979Mkgp4XZLurbedY8GC4qU"),
106
+ # core - UBA
107
+ "images.sqlite": ((), "18rjzm_2sRcTN22oJPNZrxPZ3eIh_cphq"),
108
+ "indexes2.sqlite": ((), "1EwYNGBE8kCwQ2GsJnwXlg-kM8PURiNG6"),
109
+ "cross-reference.sqlite": ((), "1uitkNgqOH0TrKXwbULF4ibLl13WnZ-U2"),
110
+ "morphology.sqlite": ((), "11QfpwEd5fjdDglPiqzygLNN99AVz2mw5"),
111
+ # data - new
112
+ "biblePeople.data": (("data",), "1o7mfGoRAgPXKAjZfpj2dsY2Xp4vX8NdU"),
113
+ "book_analysis_sc.data": (("data",), "19PIQCP99HI1TEaJiaoMnmKbMu_vUP_OP"),
114
+ "book_analysis_tc.data": (("data",), "19XtVixBGFnCj0akutTivq13eT_Gkn6gU"),
115
+ "book_analysis.data": (("data",), "1_Z4qjwgxUC4O-Pz7rX72ZtM3qLOD5ZL-"),
116
+ "chapter_summary_sc.data": (("data",), "10Au81R8qxB1kPGUS6sv2L5imDCgQDoEa"),
117
+ "chapter_summary_tc.data": (("data",), "1jpJLNB2UZ7U0VSFnlqCh_idL-j5jLUYX"),
118
+ "chapter_summary.data": (("data",), "1W5a04a4d4hfQEMgHX1x0hUOY4Q2Cu-hp"),
119
+ # data - UBA
120
+ "exlb3.data": (("data",), "1gp2Unsab85Se-IB_tmvVZQ3JKGvXLyMP"),
121
+ "dictionary.data": (("data",), "1NfbkhaR-dtmT1_Aue34KypR3mfPtqCZn"),
122
+ "encyclopedia.data": (("data",), "1OuM6WxKfInDBULkzZDZFryUkU1BFtym8"),
123
+ # books
124
+ "books": ((), "10BmoBH-XOY4QOiYQ0gyzUn4YxsHYnPte"),
125
+ # podcast - new
126
+ "podcast": ((), "1aNS8rtdQcTZGub6jhZhEarpUK3R4f_x8"),
127
+ # audio (via git clone)
128
+ }
129
+
130
+ def start_download(file_id, destination):
131
+ URL = "https://docs.google.com/uc?export=download"
132
+ session = requests.Session()
133
+ response = session.get(URL, params={'id': file_id}, stream=True)
134
+
135
+ # Handle large file warning tokens
136
+ token = None
137
+ for key, value in response.cookies.items():
138
+ if key.startswith('download_warning'):
139
+ token = value
140
+ break
141
+
142
+ if token:
143
+ params = {'id': file_id, 'confirm': token}
144
+ response = session.get(URL, params=params, stream=True)
145
+
146
+ with open(destination, "wb") as f:
147
+ for chunk in response.iter_content(32768):
148
+ if chunk:
149
+ f.write(chunk)
150
+
151
+ def download_google_drive_file(file_id, target_folder=None, force=False):
152
+ # check if target folder exists
153
+ if target_folder is None:
154
+ target_folder = os.path.join(os.path.expanduser("~"), "biblemate", "data", *FILE_IDS[file_id][0])
155
+ if not os.path.isdir(target_folder):
156
+ Path(target_folder).mkdir(parents=True, exist_ok=True)
157
+ # check if final path exists
158
+ final_path = os.path.join(target_folder, file_id)
159
+ #print(f"Checking if {final_path} exists")
160
+ if os.path.exists(final_path):
161
+ if force:
162
+ os.remove(final_path)
163
+ else:
164
+ return final_path
165
+ # download
166
+ try:
167
+ print(f"Downloading {file_id}")
168
+ output = os.path.join(target_folder, file_id+".zip")
169
+ if os.path.isfile(output):
170
+ os.remove(output)
171
+ if os.path.isfile(output[:-4]):
172
+ os.remove(output[:-4])
173
+ start_download(FILE_IDS[file_id][-1], output)
174
+ with zipfile.ZipFile(output, 'r') as zip_ref:
175
+ zip_ref.extractall(target_folder)
176
+ if os.path.isfile(output):
177
+ os.remove(output)
178
+ # Wait between 5 to 15 seconds before the next download, to workaround rate limit
179
+ delay = random.uniform(5, 15)
180
+ print("Waiting for", delay, "seconds...")
181
+ time.sleep(random.uniform(5, 15))
182
+ except Exception as e:
183
+ print(f"Error downloading {file_id} in the first try: {str(e)}")
184
+ #traceback.print_exc()
185
+ delay = 15
186
+ print("Waiting for", delay, "seconds...")
187
+ time.sleep(delay)
188
+ try:
189
+ # 2nd attempt with gdown
190
+ print(f"Trying again to download {file_id}")
191
+ gdown.download(id=FILE_IDS[file_id][-1], output=output)
192
+ with zipfile.ZipFile(output, 'r') as zip_ref:
193
+ zip_ref.extractall(target_folder)
194
+ if os.path.isfile(output):
195
+ os.remove(output)
196
+ except Exception as e:
197
+ print(f"Error downloading {file_id}: {str(e)}")
198
+ #traceback.print_exc()
199
+ delay = 15
200
+ print("Waiting for", delay, "seconds...")
201
+ time.sleep(delay)
202
+ return ""
203
+ return final_path
204
+
205
+ def getValidOptions(options=[], descriptions=[], bold_descriptions=False, filter="", default="", title="Available Options", text="Select an item:"):
206
+ if not options:
207
+ return ""
208
+ filter = filter.strip().lower()
209
+ if descriptions:
210
+ descriptionslower = [i.lower() for i in descriptions]
211
+ values = [(option, HTML(f"<b>{descriptions[index]}</b>") if bold_descriptions else descriptions[index]) for index, option in enumerate(options) if (filter in option.lower() or filter in descriptionslower[index])]
212
+ else:
213
+ values = [(option, option) for option in options if filter in option.lower()]
214
+ if not values:
215
+ if descriptions:
216
+ values = [(option, HTML(f"<b>{descriptions[index]}</b>") if bold_descriptions else descriptions[index]) for index, option in enumerate(options)]
217
+ else:
218
+ values = [(option, option) for option in options]
219
+ result = radiolist_dialog(
220
+ title=title,
221
+ text=text,
222
+ values=values,
223
+ default=default if default and default in options else values[0][0],
224
+ ).run()
225
+ if result:
226
+ print(result)
227
+ return result
228
+ return ""
229
+
230
+ def downloadbibleaudio(default=""):
231
+ options = list(AUDIO_REPOS.keys())
232
+ userInput = getValidOptions(options=options, title="Downlaod Bible Audio", default=default, text="NET (American accent), OHGB (slow), BHS5, OGNT are downloaded by default. \nSelect below for a replacement or new download:")
233
+ if not userInput:
234
+ return False
235
+ print(f"You selected '{userInput}'.")
236
+ module, repo, *_ = AUDIO_REPOS[userInput]
237
+ downloadbibleaudioaction(module, repo, force=True)
238
+ return True
239
+
240
+ def downloadbibleaudioaction(module, repo, force=False):
241
+ if not shutil.which("git"):
242
+ print("git is not installed. Please install git and try again.")
243
+ return
244
+ try:
245
+ audioDir = os.path.join(os.path.expanduser("~"), "biblemate", "data", "audio", "bibles", module, "default")
246
+ # remove old files
247
+ if os.path.isdir(audioDir):
248
+ # os.rmdir does not work with sub directories
249
+ # os.rmdir(audioDir)
250
+ # use shutil.rmtree instead
251
+ if force:
252
+ shutil.rmtree(audioDir)
253
+ else:
254
+ print(f"{audioDir} already exists.")
255
+ return
256
+ Path(audioDir).mkdir(parents=True, exist_ok=True)
257
+ os.system(f"git clone https://github.com/{repo} {audioDir}")
258
+ print("Downloaded!")
259
+ print(f"unpacking `{module}` audio files ...")
260
+ for item in os.listdir(audioDir):
261
+ zipFile = os.path.join(audioDir, item)
262
+ if os.path.isfile(zipFile) and item.endswith(".zip"):
263
+ #os.system(f"unzip {zipFile}")
264
+ # Unzip file
265
+ shutil.unpack_archive(zipFile, audioDir)
266
+ # Delete zip file
267
+ os.remove(zipFile)
268
+ print(f"`{module}` audio installed!")
269
+ except:
270
+ print("Errors!")
271
+
272
+ def main():
273
+ # download files
274
+ for i in FILE_IDS:
275
+ download_google_drive_file(i)
276
+ # setup custom folders
277
+ for i in ("lexicons", "commentaries", "audio", "bibles"):
278
+ target_folder = os.path.join(os.path.expanduser("~"), "biblemate", "data_custom", i)
279
+ if not os.path.isdir(target_folder):
280
+ Path(target_folder).mkdir(parents=True, exist_ok=True)
281
+ # downloading default audio with git clone
282
+ for i in (
283
+ "NET (American accent; verse-by-verse)",
284
+ "OHGB (Hebrew & Greek; slow; verse-by-verse)",
285
+ "BHS5 (Hebrew; word-by-word)",
286
+ "OGNT (Greek; word-by-word)",
287
+ ):
288
+ module, repo, *_ = AUDIO_REPOS[i]
289
+ downloadbibleaudioaction(module, repo)
290
+ # download more audio
291
+ download_audio = True
292
+ while download_audio:
293
+ download_audio = downloadbibleaudio()
294
+
295
+ if __name__ == "__main__":
296
+ main()
@@ -0,0 +1 @@
1
+ biblematedata
@@ -0,0 +1,2 @@
1
+ prompt_toolkit
2
+ gdown
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,50 @@
1
+ Metadata-Version: 2.1
2
+ Name: biblematedata
3
+ Version: 0.0.1
4
+ Summary: BibleMate AI - Automate Your Bible Study
5
+ Home-page: https://biblemate.ai
6
+ Author: Eliran Wong
7
+ Author-email: support@marvel.bible
8
+ License: GNU General Public License (GPL)
9
+ Project-URL: Source, https://github.com/eliranwong/biblemate
10
+ Project-URL: Tracker, https://github.com/eliranwong/biblemate/issues
11
+ Project-URL: Documentation, https://github.com/eliranwong/biblemate/wiki
12
+ Project-URL: Funding, https://www.paypal.me/MarvelBible
13
+ Keywords: mcp agent biblemate ai anthropic azure chatgpt cohere deepseek genai github googleai groq llamacpp mistral ollama openai vertexai xai
14
+ Classifier: Development Status :: 5 - Production/Stable
15
+ Classifier: Intended Audience :: End Users/Desktop
16
+ Classifier: Topic :: Utilities
17
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
18
+ Classifier: Topic :: Software Development :: Build Tools
19
+ Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Requires-Python: >=3.10, <3.13
24
+ Provides-Extra: genai
25
+
26
+ # biblematedata
27
+
28
+ Bible Data for BibleMate AI Setup.
29
+
30
+ Install Essential Data for running [BibleMate AI](https://github.com/eliranwong/biblemate):
31
+
32
+ CLI version / MCP server:
33
+
34
+ https://github.com/eliranwong/biblematecli
35
+
36
+ Web GUI / Http Server / API Server:
37
+
38
+ https://github.com/eliranwong/biblemateweb
39
+
40
+ # Requirement
41
+
42
+ Install `git` command line tool separately.
43
+
44
+ # Install BibleMate Data
45
+
46
+ > pip install -U biblematedata
47
+
48
+ # Set Up Data For BibleMate Web / BibleMate CLI
49
+
50
+ > biblematedata
@@ -0,0 +1,13 @@
1
+ setup.py
2
+ biblematedata/README.md
3
+ biblematedata/config.py
4
+ biblematedata/main.py
5
+ biblematedata/package_name.txt
6
+ biblematedata/requirements.txt
7
+ biblematedata/version.txt
8
+ biblematedata.egg-info/PKG-INFO
9
+ biblematedata.egg-info/SOURCES.txt
10
+ biblematedata.egg-info/dependency_links.txt
11
+ biblematedata.egg-info/entry_points.txt
12
+ biblematedata.egg-info/requires.txt
13
+ biblematedata.egg-info/top_level.txt
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ biblematedata = biblematedata.main:main
@@ -0,0 +1,5 @@
1
+ gdown
2
+ prompt_toolkit
3
+
4
+ [genai]
5
+ google-genai>=1.46.0
@@ -0,0 +1 @@
1
+ biblematedata
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,94 @@
1
+ from setuptools import setup
2
+ from setuptools.command.install import install
3
+ import os, shutil, platform, sys
4
+
5
+ version = "0.0.1"
6
+ with open(os.path.join("biblematedata", "version.txt"), "w", encoding="utf-8") as fileObj:
7
+ fileObj.write(version)
8
+
9
+ # package name
10
+ package_name_0 = "package_name.txt"
11
+ with open(package_name_0, "r", encoding="utf-8") as fileObj:
12
+ package = fileObj.read()
13
+ package_name_1 = os.path.join(package, "package_name.txt") # package readme
14
+ shutil.copy(package_name_0, package_name_1)
15
+
16
+ # update package readme
17
+ latest_readme = os.path.join("..", "README.md") # github repository readme
18
+ package_readme = os.path.join(package, "README.md") # package readme
19
+ shutil.copy(latest_readme, package_readme)
20
+ with open(package_readme, "r", encoding="utf-8") as fileObj:
21
+ long_description = fileObj.read()
22
+
23
+ # get required packages
24
+ install_requires = []
25
+ with open(os.path.join(package, "requirements.txt"), "r") as fileObj:
26
+ for line in fileObj.readlines():
27
+ mod = line.strip()
28
+ if mod:
29
+ install_requires.append(mod)
30
+
31
+ # make sure config.py is empty
32
+ open(os.path.join(package, "config.py"), "w").close()
33
+
34
+ # https://packaging.python.org/en/latest/guides/distributing-packages-using-setuptools/
35
+ setup(
36
+ name=package,
37
+ version=version,
38
+ python_requires=">=3.10, <3.13",
39
+ description=f"BibleMate AI - Automate Your Bible Study",
40
+ long_description=long_description,
41
+ author="Eliran Wong",
42
+ author_email="support@marvel.bible",
43
+ packages=[
44
+ package,
45
+ ],
46
+ package_data={
47
+ package: ["*.*"],
48
+ },
49
+ license="GNU General Public License (GPL)",
50
+ install_requires=install_requires,
51
+ extras_require={
52
+ 'genai': ["google-genai>=1.46.0"], # Dependencies for running Vertex AI
53
+ },
54
+ entry_points={
55
+ "console_scripts": [
56
+ f"{package}={package}.main:main",
57
+ ],
58
+ },
59
+ keywords="mcp agent biblemate ai anthropic azure chatgpt cohere deepseek genai github googleai groq llamacpp mistral ollama openai vertexai xai",
60
+ url="https://biblemate.ai",
61
+ project_urls={
62
+ "Source": "https://github.com/eliranwong/biblemate",
63
+ "Tracker": "https://github.com/eliranwong/biblemate/issues",
64
+ "Documentation": "https://github.com/eliranwong/biblemate/wiki",
65
+ "Funding": "https://www.paypal.me/MarvelBible",
66
+ },
67
+ classifiers=[
68
+ # Reference: https://pypi.org/classifiers/
69
+
70
+ # How mature is this project? Common values are
71
+ # 3 - Alpha
72
+ # 4 - Beta
73
+ # 5 - Production/Stable
74
+ 'Development Status :: 5 - Production/Stable',
75
+
76
+ # Indicate who your project is intended for
77
+ 'Intended Audience :: End Users/Desktop',
78
+ 'Topic :: Utilities',
79
+ 'Topic :: Scientific/Engineering :: Artificial Intelligence',
80
+ 'Topic :: Software Development :: Build Tools',
81
+
82
+ # Pick your license as you wish (should match "license" above)
83
+ 'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)',
84
+
85
+ # Specify the Python versions you support here. In particular, ensure
86
+ # that you indicate whether you support Python 2, Python 3 or both.
87
+ #'Programming Language :: Python :: 3.8',
88
+ #'Programming Language :: Python :: 3.9',
89
+ # currently, fastmcp supports 3.10-3.12
90
+ 'Programming Language :: Python :: 3.10',
91
+ 'Programming Language :: Python :: 3.11',
92
+ 'Programming Language :: Python :: 3.12',
93
+ ],
94
+ )