KawtarTL commited on
Commit
18ef4de
·
verified ·
1 Parent(s): 185e2dd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -11
app.py CHANGED
@@ -1,7 +1,7 @@
1
  import gradio as gr
2
  import pandas as pd
3
- import freesound
4
  import numpy as np
 
5
  import joblib
6
 
7
  # ========= CONFIG =========
@@ -9,10 +9,8 @@ API_TOKEN = "zE9NjEOgUMzH9K7mjiGBaPJiNwJLjSM53LevarRK"
9
  client = freesound.FreesoundClient()
10
  client.set_token(API_TOKEN, "token")
11
 
12
- # Charger le modèle
13
  model = joblib.load("xgb_num_downloads_music_model.pkl")
14
-
15
- # Charger les features
16
  FEATURE_COLS = joblib.load("xgb_num_downloads_music_features.pkl")
17
 
18
  # ========= UTILS =========
@@ -23,19 +21,28 @@ def to_str(v):
23
  return str(v)
24
  return v
25
 
26
- # ========= FONCTION DEBUG + PREDICTION =========
27
- def debug_and_predict(url):
28
  try:
29
  sound_id = int(url.rstrip("/").split("/")[-1])
30
 
31
- # 🔹 Récupération FreeSound
32
- sound = client.get_sound(sound_id).retrieve_persistent().json()
 
 
 
 
 
 
 
 
 
33
 
34
  # 🔹 RAW DEBUG
35
  raw_data = {f"RAW_{k}": to_str(v) for k, v in sound.items()}
36
 
37
  # 🔹 Préparer le DataFrame pour XGBoost
38
- X_new = {col: float(sound.get(col, 0)) for col in FEATURE_COLS} # toutes les colonnes + 0 si manquante
39
  X_prepared = pd.DataFrame([X_new], columns=FEATURE_COLS).astype(float) # ordre strict
40
 
41
  # 🔮 PRÉDICTION
@@ -65,9 +72,9 @@ with gr.Blocks(title="FreeSound Debug + Prediction") as demo:
65
  gr.Markdown("✔ mêmes features que l'entraînement\n✔ ordre strict\n✔ pas d'erreur XGBoost")
66
 
67
  url = gr.Textbox(label="URL FreeSound", placeholder="https://freesound.org/s/123456/")
68
- btn = gr.Button("🛠️ Debug + Predict")
69
  out = gr.Dataframe()
70
 
71
- btn.click(debug_and_predict, url, out)
72
 
73
  demo.launch()
 
1
  import gradio as gr
2
  import pandas as pd
 
3
  import numpy as np
4
+ import freesound
5
  import joblib
6
 
7
  # ========= CONFIG =========
 
9
  client = freesound.FreesoundClient()
10
  client.set_token(API_TOKEN, "token")
11
 
12
+ # Charger le modèle et les features
13
  model = joblib.load("xgb_num_downloads_music_model.pkl")
 
 
14
  FEATURE_COLS = joblib.load("xgb_num_downloads_music_features.pkl")
15
 
16
  # ========= UTILS =========
 
21
  return str(v)
22
  return v
23
 
24
+ # ========= MAIN FUNCTION =========
25
+ def extract_and_predict(url):
26
  try:
27
  sound_id = int(url.rstrip("/").split("/")[-1])
28
 
29
+ # 🔹 Récupération via search() avec fields
30
+ results = client.search(
31
+ query="",
32
+ filter=f"id:{sound_id}",
33
+ fields=",".join(FEATURE_COLS + ["id", "duration", "num_downloads", "avg_rating"])
34
+ )
35
+
36
+ if len(results.results) == 0:
37
+ return pd.DataFrame([{"Erreur": "Sound not found"}])
38
+
39
+ sound = results.results[0] # dict directement
40
 
41
  # 🔹 RAW DEBUG
42
  raw_data = {f"RAW_{k}": to_str(v) for k, v in sound.items()}
43
 
44
  # 🔹 Préparer le DataFrame pour XGBoost
45
+ X_new = {col: float(sound.get(col, 0)) for col in FEATURE_COLS} # colonnes manquantes = 0
46
  X_prepared = pd.DataFrame([X_new], columns=FEATURE_COLS).astype(float) # ordre strict
47
 
48
  # 🔮 PRÉDICTION
 
72
  gr.Markdown("✔ mêmes features que l'entraînement\n✔ ordre strict\n✔ pas d'erreur XGBoost")
73
 
74
  url = gr.Textbox(label="URL FreeSound", placeholder="https://freesound.org/s/123456/")
75
+ btn = gr.Button("🛠️ Extraire + Prédire")
76
  out = gr.Dataframe()
77
 
78
+ btn.click(extract_and_predict, url, out)
79
 
80
  demo.launch()