File size: 3,086 Bytes
3045238
 
99b3ef5
3045238
 
a676448
 
3045238
e4ee4df
3045238
 
420ea26
 
 
 
 
3045238
 
 
a676448
 
 
 
 
 
 
 
420ea26
 
 
e4ee4df
420ea26
a676448
 
420ea26
a676448
e4ee4df
420ea26
 
e4ee4df
420ea26
 
 
 
3045238
420ea26
3045238
 
 
420ea26
e4ee4df
 
 
 
 
420ea26
e4ee4df
 
 
3045238
 
e4ee4df
a676448
 
e4ee4df
420ea26
 
3045238
e4ee4df
a676448
 
 
 
 
420ea26
3045238
 
420ea26
 
 
 
3045238
 
 
a676448
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import logging
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)

import gradio as gr
from gradio_calendar import Calendar
from utils import date_to_words  # Annahme: utils.py enthält die date_to_words Funktion
from gematria import calculate_gematria, strip_diacritics
from datetime import datetime, timedelta
import json

# --- Helper Functions ---
def calculate_gematria_sum(text):
    if text:
        text_gematria = calculate_gematria(strip_diacritics(text))
        return text_gematria
    else:
        return None

def perform_gematria_calculation_for_date_range(start_date_str, end_date_str):
    logger.info(f"Startdatum (String): {start_date_str}, Enddatum (String): {end_date_str}")  # Debugging-Ausgabe

    # Konvertiere die Datumsstrings in datetime-Objekte
    start_date = datetime.strptime(start_date_str, "%Y-%m-%d")
    end_date = datetime.strptime(end_date_str, "%Y-%m-%d")

    logger.info(f"Startdatum: {start_date}, Enddatum: {end_date}")  # Debugging-Ausgabe
    results = {}
    delta = timedelta(days=1)
    current_date = start_date

    while current_date <= end_date:
        date_words = date_to_words(current_date)
        logger.info(f"Datum: {current_date}, Tagesnamen: {date_words}")  # Debugging-Ausgabe
        gematria_sum = calculate_gematria_sum(date_words)
        logger.info(f"Gematria-Summe: {gematria_sum}")  # Debugging-Ausgabe

        if gematria_sum not in results:
            results[gematria_sum] = []

        results[gematria_sum].append({
            "date": current_date.strftime('%Y-%m-%d'),
            "date_words": date_words
        })

        current_date += delta

    return results

def generate_json_output(results, start_date, end_date):
    result = {
        "DateRange": {
            "StartDate": start_date.strftime("%Y-%m-%d"),
            "EndDate": end_date.strftime("%Y-%m-%d")
        },
        "Results": results
    }
    return json.dumps(result, indent=4, ensure_ascii=False)

# --- Main Gradio App ---
with gr.Blocks() as app:
    with gr.Row():
        start_date = Calendar(type="date", label="Start Date")  # Ändere den Typ zu "date"
        end_date = Calendar(type="date", label="End Date")    # Ändere den Typ zu "date"

    calculate_btn = gr.Button("Calculate Gematria for Date Range")
    json_output = gr.Textbox(label="JSON Output")

    # --- Event Handlers ---
    def perform_calculation(start_date_str, end_date_str):  # Empfange Datumsstrings
        logger.info("Berechnung gestartet")  # Debugging-Ausgabe
        results = perform_gematria_calculation_for_date_range(start_date_str, end_date_str)
        json_result = generate_json_output(results, datetime.strptime(start_date_str, "%Y-%m-%d"), datetime.strptime(end_date_str, "%Y-%m-%d"))
        logger.info("Berechnung abgeschlossen")  # Debugging-Ausgabe
        return json_result

    # --- Event Triggers ---
    calculate_btn.click(
        perform_calculation,
        inputs=[start_date, end_date],
        outputs=[json_output]
    )

if __name__ == "__main__":
    app.launch(share=False)