Spaces:
Sleeping
Sleeping
Commit
·
287228a
1
Parent(s):
084e807
fix
Browse files
app.py
CHANGED
@@ -9,6 +9,9 @@ from datetime import datetime, timedelta
|
|
9 |
import json
|
10 |
import inflect
|
11 |
|
|
|
|
|
|
|
12 |
# --- Helper Functions ---
|
13 |
def calculate_gematria_sum(text):
|
14 |
"""Calculates the gematria sum of a given text."""
|
@@ -166,13 +169,33 @@ def perform_calculation(start_date, end_date, include_words, min_results):
|
|
166 |
|
167 |
def download_json(json_data, start_date, end_date):
|
168 |
"""
|
169 |
-
Nimmt das
|
170 |
-
|
|
|
|
|
171 |
"""
|
|
|
172 |
filename = f"gematria_{start_date.strftime('%Y%m%d')}_{end_date.strftime('%Y%m%d')}.json"
|
173 |
-
|
|
|
174 |
json_string = json.dumps(json_data, indent=4, ensure_ascii=False)
|
175 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
176 |
|
177 |
# --- Main Gradio App ---
|
178 |
with gr.Blocks() as app:
|
@@ -181,21 +204,16 @@ with gr.Blocks() as app:
|
|
181 |
end_date = Calendar(type="datetime", label="End Date")
|
182 |
|
183 |
with gr.Row():
|
184 |
-
include_date_words = gr.Checkbox(
|
185 |
-
|
186 |
-
)
|
187 |
-
filter_results = gr.Checkbox(
|
188 |
-
value=False, label="Filter to sums with at least"
|
189 |
-
)
|
190 |
-
min_results_input = gr.Number(
|
191 |
-
value=2, label="results", interactive=True, precision=0
|
192 |
-
)
|
193 |
|
194 |
calculate_btn = gr.Button("Calculate Gematria for Date Range")
|
195 |
-
json_output = gr.JSON(label="JSON Output")
|
196 |
download_btn = gr.Button("Download JSON")
|
197 |
json_file = gr.File(label="Downloaded JSON")
|
198 |
|
|
|
199 |
# Damit wir den Wert von filter_results berücksichtigen können:
|
200 |
def handle_calculate(start_val, end_val, include_val, filter_val, min_val):
|
201 |
if not filter_val: # Checkbox nicht gesetzt
|
@@ -215,13 +233,13 @@ with gr.Blocks() as app:
|
|
215 |
api_name="calculate_gematria"
|
216 |
)
|
217 |
|
|
|
218 |
download_btn.click(
|
219 |
-
download_json,
|
220 |
inputs=[json_output, start_date, end_date],
|
221 |
-
outputs=[json_file]
|
222 |
)
|
223 |
|
224 |
-
# Aktiviert/Deaktiviert die Eingabe für min_results
|
225 |
filter_results.change(
|
226 |
lambda checked: gr.update(interactive=checked),
|
227 |
inputs=filter_results,
|
|
|
9 |
import json
|
10 |
import inflect
|
11 |
|
12 |
+
import os
|
13 |
+
import tempfile
|
14 |
+
|
15 |
# --- Helper Functions ---
|
16 |
def calculate_gematria_sum(text):
|
17 |
"""Calculates the gematria sum of a given text."""
|
|
|
169 |
|
170 |
def download_json(json_data, start_date, end_date):
|
171 |
"""
|
172 |
+
Nimmt das JSON-Dict (aus gr.JSON) und legt es als Datei ab,
|
173 |
+
deren Pfad wir zurückgeben.
|
174 |
+
Ältere Gradio-Versionen erwarten hier typischerweise einen String
|
175 |
+
(also File-Pfad), keinen Tuple oder dict.
|
176 |
"""
|
177 |
+
# Einen Dateinamen konstruieren – der taucht nur intern auf:
|
178 |
filename = f"gematria_{start_date.strftime('%Y%m%d')}_{end_date.strftime('%Y%m%d')}.json"
|
179 |
+
|
180 |
+
# Dictionary -> JSON-String
|
181 |
json_string = json.dumps(json_data, indent=4, ensure_ascii=False)
|
182 |
+
|
183 |
+
# Temporäre Datei erstellen
|
184 |
+
# delete=False => Datei bleibt bestehen, bis wir sie manuell entfernen wollen
|
185 |
+
temp = tempfile.NamedTemporaryFile(suffix=".json", delete=False)
|
186 |
+
temp_path = temp.name # Pfad merken
|
187 |
+
|
188 |
+
try:
|
189 |
+
# Schreiben als Bytes
|
190 |
+
temp.write(json_string.encode("utf-8"))
|
191 |
+
temp.flush()
|
192 |
+
finally:
|
193 |
+
# Datei-Handle schließen
|
194 |
+
temp.close()
|
195 |
+
|
196 |
+
# Jetzt returnen wir den Pfad
|
197 |
+
# => Gradio wird damit umgehen können und bietet Download an
|
198 |
+
return temp_path
|
199 |
|
200 |
# --- Main Gradio App ---
|
201 |
with gr.Blocks() as app:
|
|
|
204 |
end_date = Calendar(type="datetime", label="End Date")
|
205 |
|
206 |
with gr.Row():
|
207 |
+
include_date_words = gr.Checkbox(value=True, label="Include Date-Words in JSON")
|
208 |
+
filter_results = gr.Checkbox(value=False, label="Filter to sums with at least")
|
209 |
+
min_results_input = gr.Number(value=2, label="results", interactive=True, precision=0)
|
|
|
|
|
|
|
|
|
|
|
|
|
210 |
|
211 |
calculate_btn = gr.Button("Calculate Gematria for Date Range")
|
212 |
+
json_output = gr.JSON(label="JSON Output")
|
213 |
download_btn = gr.Button("Download JSON")
|
214 |
json_file = gr.File(label="Downloaded JSON")
|
215 |
|
216 |
+
|
217 |
# Damit wir den Wert von filter_results berücksichtigen können:
|
218 |
def handle_calculate(start_val, end_val, include_val, filter_val, min_val):
|
219 |
if not filter_val: # Checkbox nicht gesetzt
|
|
|
233 |
api_name="calculate_gematria"
|
234 |
)
|
235 |
|
236 |
+
# Hier der "fix" im Download-Button
|
237 |
download_btn.click(
|
238 |
+
download_json, # unsere neue Funktion
|
239 |
inputs=[json_output, start_date, end_date],
|
240 |
+
outputs=[json_file] # gr.File-Element
|
241 |
)
|
242 |
|
|
|
243 |
filter_results.change(
|
244 |
lambda checked: gr.update(interactive=checked),
|
245 |
inputs=filter_results,
|