madibaalbert commited on
Commit
b769b23
·
verified ·
1 Parent(s): 55a1d79

Create web_viewer.py

Browse files
Files changed (1) hide show
  1. web_viewer.py +61 -0
web_viewer.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import sqlite3
3
+ import pandas as pd
4
+ import json
5
+ import os
6
+
7
+ DB_PATH = os.path.join(os.getenv('BUCKET_PATH', '/data'), 'aviator_regression.db')
8
+
9
+ def load_data():
10
+ if not os.path.exists(DB_PATH):
11
+ return pd.DataFrame(columns=["Date/Heure", "Cote Actuelle", "Historique (10 dernières)"])
12
+
13
+ try:
14
+ # On se connecte avec un timeout pour ne pas bloquer le script de collecte
15
+ conn = sqlite3.connect(DB_PATH, timeout=5)
16
+
17
+ # On lit les 500 dernières lignes pour ne pas surcharger le navigateur
18
+ df = pd.read_sql_query("""
19
+ SELECT cote, historique_10, timestamp
20
+ FROM aviator_data
21
+ ORDER BY id DESC
22
+ LIMIT 500
23
+ """, conn)
24
+ conn.close()
25
+
26
+ if df.empty:
27
+ return pd.DataFrame(columns=["Date/Heure", "Cote Actuelle", "Historique (10 dernières)"])
28
+
29
+ # On transforme le texte JSON en vraie liste lisible
30
+ df['historique_10'] = df['historique_10'].apply(lambda x: str(json.loads(x)))
31
+
32
+ # On formate le timestamp en date lisible
33
+ df['Date/Heure'] = pd.to_datetime(df['timestamp'], unit='s').dt.strftime('%Y-%m-%d %H:%M:%S')
34
+
35
+ # On réorganise les colonnes
36
+ df = df[['Date/Heure', 'cote', 'historique_10']]
37
+ df.columns = ["Date/Heure", "Cote Actuelle", "Historique (10 dernières)"]
38
+
39
+ return df
40
+
41
+ except Exception as e:
42
+ return pd.DataFrame({"Erreur": [f"Impossible de lire la DB : {str(e)}"]})
43
+
44
+ # Création de l'interface web
45
+ with gr.Blocks(title="DB Aviator", theme=gr.themes.Soft()) as demo:
46
+ gr.Markdown("# 📊 Explorateur de la base Aviator")
47
+ gr.Markdown("Les données se mettent à jour lorsque tu cliques sur le bouton.")
48
+
49
+ btn = gr.Button("🔄 Rafraîchir les données", variant="primary")
50
+ table = gr.Dataframe(
51
+ headers=["Date/Heure", "Cote Actuelle", "Historique (10 dernières)"],
52
+ datatype=["str", "number", "str"],
53
+ interactive=False
54
+ )
55
+
56
+ # Charge les données au démarrage et quand on clique
57
+ btn.click(fn=load_data, outputs=table)
58
+ demo.load(fn=load_data, outputs=table)
59
+
60
+ # Lance le serveur sur le port 7860 (obligatoire pour HF)
61
+ demo.launch(server_name="0.0.0.0", server_port=7860, show_error=True)