MMOON commited on
Commit
759901e
·
verified ·
1 Parent(s): 919be00

Create appsoluce.py

Browse files
Files changed (1) hide show
  1. appsoluce.py +109 -0
appsoluce.py ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import sqlite3
3
+ import streamlit as st
4
+ import pandas as pd
5
+ import requests
6
+
7
+ # Configuration du dépôt GitHub
8
+ REPO = "M00N69/RASFFDB"
9
+ FILE_PATH = "rasff_data.db"
10
+ API_URL = f"https://api.github.com/repos/{REPO}/commits"
11
+ RAW_URL_TEMPLATE = "https://raw.githubusercontent.com/{repo}/{commit}/{file}"
12
+
13
+ # Effacer le cache des données pour forcer le rechargement
14
+ st.cache_data.clear()
15
+
16
+ def download_latest_db():
17
+ """Télécharge le fichier rasff_data.db avec le hash du dernier commit."""
18
+ # Récupérer le dernier commit
19
+ response = requests.get(API_URL)
20
+ if response.status_code != 200:
21
+ st.error("❌ Erreur lors de la récupération du commit.")
22
+ return False
23
+
24
+ # Extraire le hash du dernier commit
25
+ commits = response.json()
26
+ latest_commit_hash = commits[0]["sha"]
27
+ st.write(f"📋 **Dernier commit :** {latest_commit_hash}")
28
+
29
+ # Construire l'URL du fichier basé sur le dernier commit
30
+ download_url = RAW_URL_TEMPLATE.format(repo=REPO, commit=latest_commit_hash, file=FILE_PATH)
31
+ st.write(f"📥 **Téléchargement depuis :** {download_url}")
32
+
33
+ # Télécharger le fichier
34
+ response = requests.get(download_url)
35
+ if response.status_code != 200:
36
+ st.error("❌ Erreur lors du téléchargement du fichier.")
37
+ return False
38
+
39
+ # Enregistrer le fichier
40
+ with open(FILE_PATH, "wb") as file:
41
+ file.write(response.content)
42
+
43
+ # Vérifier la taille du fichier
44
+ file_size = os.path.getsize(FILE_PATH) / (1024 * 1024) # Taille en Mo
45
+ st.write(f"📁 **Taille du fichier téléchargé :** {file_size:.2f} Mo")
46
+ return True
47
+
48
+ def get_data_from_db():
49
+ """Récupère les données directement depuis la table 'rasff_notifications'."""
50
+ if not os.path.exists(FILE_PATH):
51
+ st.error(f"⚠️ Le fichier '{FILE_PATH}' est introuvable.")
52
+ return pd.DataFrame()
53
+
54
+ try:
55
+ # Connexion à la base de données
56
+ conn = sqlite3.connect(FILE_PATH)
57
+
58
+ # Charger les données
59
+ query = "SELECT * FROM rasff_notifications"
60
+ df = pd.read_sql(query, conn)
61
+
62
+ # Nombre total d'enregistrements
63
+ total_records = len(df)
64
+ st.write(f"📊 **Nombre total d'enregistrements :** {total_records}")
65
+
66
+ conn.close()
67
+
68
+ return df
69
+ except Exception as e:
70
+ st.error(f"⚠️ Erreur lors du chargement des données: {e}")
71
+ return pd.DataFrame()
72
+
73
+ def check_years_presence(df):
74
+ """Vérifie la présence des années 2024 et 2025 dans la colonne 'date'."""
75
+ if 'date' not in df.columns:
76
+ st.warning("⚠️ Colonne 'date' introuvable.")
77
+ return
78
+
79
+ # Filtrer les données pour les années 2024 et 2025 dans la colonne 'date'
80
+ df_2024 = df[df['date'].astype(str).str[:4] == '2024']
81
+ df_2025 = df[df['date'].astype(str).str[:4] == '2025']
82
+
83
+ if not df_2024.empty:
84
+ st.success("✔️ Des données pour l'année 2024 sont présentes.")
85
+ st.write(f"📊 **Nombre d'enregistrements pour 2024 :** {len(df_2024)}")
86
+ else:
87
+ st.warning("⚠️ Aucune donnée trouvée pour l'année 2024.")
88
+
89
+ if not df_2025.empty:
90
+ st.success("✔️ Des données pour l'année 2025 sont présentes.")
91
+ st.write(f"📊 **Nombre d'enregistrements pour 2025 :** {len(df_2025)}")
92
+ st.dataframe(df_2025.head(10))
93
+ else:
94
+ st.warning("⚠️ Aucune donnée trouvée pour l'année 2025.")
95
+
96
+ # 📥 Télécharger la base avec l'API GitHub et le dernier commit
97
+ if download_latest_db():
98
+ # 🗂 Charger les données et afficher un aperçu si tout va bien
99
+ df = get_data_from_db()
100
+ if not df.empty:
101
+ st.write("📊 **Aperçu des données complètes:**")
102
+ st.dataframe(df.head(10))
103
+
104
+ # 🔍 Vérifier la présence des années 2024 et 2025
105
+ check_years_presence(df)
106
+ else:
107
+ st.warning("⚠️ Aucune donnée disponible dans 'rasff_notifications'.")
108
+ else:
109
+ st.error("❌ Le téléchargement a échoué.")