Spaces:
Sleeping
Sleeping
| import os | |
| import sys | |
| import json | |
| import logging | |
| from datetime import datetime | |
| # Setup absolute paths for the API directory | |
| API_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "book-of-souls-json-api")) | |
| sys.path.append(API_DIR) | |
| # Configure logging to suppress verbose API logs if needed | |
| api_logger = logging.getLogger("book_of_souls_api") | |
| api_logger.setLevel(logging.WARNING) | |
| # Global imports from the API | |
| try: | |
| original_cwd = os.getcwd() | |
| os.chdir(API_DIR) | |
| from gematria import calculate_gematria | |
| from utils import translate_date_to_words | |
| import torah | |
| import bible | |
| from deep_translator import GoogleTranslator | |
| os.chdir(original_cwd) | |
| except Exception as e: | |
| print(f"Error importing modules: {e}") | |
| calculate_gematria = None | |
| translate_date_to_words = None | |
| def get_oracle_data(name_or_topic: str): | |
| """ | |
| Queries the Book of Souls logic for a specific name/topic. | |
| """ | |
| if not calculate_gematria: | |
| return {"error": "Oracle modules not properly initialized."} | |
| original_cwd = os.getcwd() | |
| os.chdir(API_DIR) | |
| try: | |
| date_obj = datetime.now() | |
| date_words = translate_date_to_words(date_obj) | |
| # Calculate Gematria Sum (Step) | |
| gematria_sum = calculate_gematria(name_or_topic) | |
| if gematria_sum < 2: | |
| gematria_sum = 42 | |
| step = gematria_sum | |
| rounds = "1,-1" | |
| length = 200 | |
| tlang = "de" | |
| strip_spaces = True | |
| strip_in_braces = True | |
| strip_diacritics_chk = True | |
| translate = True # Enable automated translation | |
| results = [] | |
| # Torah: start 1, end 5 | |
| res_torah = torah.process_json_files(1, 5, step, rounds, length, tlang, strip_spaces, strip_in_braces, strip_diacritics_chk, translate) | |
| if res_torah: results.extend(res_torah) | |
| # Bible: start 40, end 45 | |
| res_bible = bible.process_json_files(40, 45, step, rounds, length, tlang, strip_spaces, strip_in_braces, strip_diacritics_chk, translate) | |
| if res_bible: results.extend(res_bible) | |
| return { | |
| "search_phrase": f"{date_words} {name_or_topic}", | |
| "gematria_step": step, | |
| "results": results[:5] | |
| } | |
| finally: | |
| os.chdir(original_cwd) | |
| def format_oracle_response(data: dict, topic: str) -> str: | |
| """Formats the JSON result into a prophetic response.""" | |
| if not data or "error" in data: | |
| return f"Das Orakel ist getrübt: {data.get('error', 'Keine Verbindung zum Buch der Seelen.')}" | |
| results = data.get("results", []) | |
| if not results: | |
| return f"Das Schicksalsbuch schweigt zum Thema '{topic}'. Die Sterne verweigern im Moment die Antwort." | |
| header = f"🔮 **Prophezeiung des Orakels für: {topic}**\n\n" | |
| header += f"*Der Gematria-Schlüssel liegt bei {data['gematria_step']}.*\n\n" | |
| content = "" | |
| for i, res in enumerate(results, 1): | |
| text = res.get("translated_text") or res.get("result_text") or "..." | |
| book = res.get("book", "Unbekannte Quelle") | |
| content += f"**Vision {i} ({book}):**\n> \"{text}\"\n\n" | |
| footer = "Deute diese Zeichen weise. Das Buch der Seelen hat gesprochen." | |
| return header + content + footer | |