File size: 2,792 Bytes
3045238
 
99b3ef5
3045238
 
a676448
78317d1
3045238
e4ee4df
3045238
 
78317d1
420ea26
 
 
 
3045238
 
 
1b969ef
78317d1
420ea26
 
 
e4ee4df
420ea26
a676448
78317d1
420ea26
78317d1
e4ee4df
420ea26
 
e4ee4df
420ea26
 
 
 
3045238
420ea26
3045238
 
 
420ea26
e4ee4df
 
 
 
 
420ea26
e4ee4df
 
 
78317d1
3045238
e4ee4df
78317d1
 
e4ee4df
78317d1
 
3045238
78317d1
 
 
1b969ef
 
420ea26
3045238
78317d1
420ea26
 
 
1b969ef
 
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
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  # Hypothèse : utils.py contient la fonction date_to_words
from gematria import calculate_gematria, strip_diacritics
from datetime import datetime, timedelta
import json

# --- Fonctions auxiliaires ---
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, end_date):
    logger.info(f"Date de début : {start_date}, Date de fin : {end_date}")  # Sortie de débogage
    results = {}
    delta = timedelta(days=1)
    current_date = start_date

    while current_date <= end_date:
        date_words = date_to_words(current_date)
        logger.info(f"Date : {current_date}, Noms de jours : {date_words}")  # Sortie de débogage
        gematria_sum = calculate_gematria_sum(date_words)
        logger.info(f"Somme Gematria : {gematria_sum}")  # Sortie de débogage

        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)

# --- Application principale Gradio ---
with gr.Blocks() as app:
    with gr.Row():
        start_date = Calendar(type="datetime", label="Date de début")  # Retour à "datetime"
        end_date = Calendar(type="datetime", label="Date de fin")    # Retour à "datetime"

    calculate_btn = gr.Button("Calculer la Gematria pour la période")
    json_output = gr.Textbox(label="Sortie JSON")

    # --- Gestionnaires d'événements ---
    def perform_calculation(start_date, end_date):  # Recevoir les objets datetime
        logger.info(f"perform_calculation appelé avec : start_date={start_date}, end_date={end_date}")
        results = perform_gematria_calculation_for_date_range(start_date, end_date)
        json_result = generate_json_output(results, start_date, end_date)
        return json_result

    # --- Déclencheurs d'événements ---
    calculate_btn.click(
        perform_calculation,
        inputs=[start_date, end_date],
        outputs=[json_output],
        api_name="calculate_gematria"
    )

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