Ribot commited on
Commit
50c8ca2
·
verified ·
1 Parent(s): 9a10296

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -5
app.py CHANGED
@@ -5,6 +5,7 @@ import requests
5
  import tempfile
6
  import subprocess
7
  import gradio as gr
 
8
 
9
  # Installation automatique des dépendances si nécessaire
10
  try:
@@ -47,16 +48,32 @@ def download_and_zip_mp3s(url):
47
  if not mp3_entries:
48
  return "Aucun lien .mp3 trouvé sur cette page.", None
49
 
50
- # Crée un ZIP dans un dossier temporaire
51
- with tempfile.TemporaryDirectory() as tmpdir:
52
- zip_path = os.path.join(tmpdir, "episodes_radiofrance.zip")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  with zipfile.ZipFile(zip_path, "w") as zipf:
54
  for idx, (mp3_url, title) in enumerate(mp3_entries, 1):
55
  if title:
56
  filename = f"{idx:02d}-{sanitize_filename(title)}.mp3"
57
  else:
58
  filename = f"{idx:02d}-episode.mp3"
59
- filepath = os.path.join(tmpdir, filename)
60
  try:
61
  print(f"Téléchargement : {mp3_url}")
62
  audio_resp = requests.get(mp3_url)
@@ -69,8 +86,9 @@ def download_and_zip_mp3s(url):
69
  zipf.write(filepath, arcname=filename)
70
  except Exception as e:
71
  print(f"Erreur lors du téléchargement de {mp3_url} : {e}")
72
-
73
  return "Téléchargement terminé avec succès.", zip_path
 
 
74
 
75
  def gradio_interface(url):
76
  message, zip_file = download_and_zip_mp3s(url)
 
5
  import tempfile
6
  import subprocess
7
  import gradio as gr
8
+ import shutil
9
 
10
  # Installation automatique des dépendances si nécessaire
11
  try:
 
48
  if not mp3_entries:
49
  return "Aucun lien .mp3 trouvé sur cette page.", None
50
 
51
+ # package dans Zip
52
+ def download_and_zip_mp3s(url):
53
+ try:
54
+ response = requests.get(url)
55
+ response.raise_for_status()
56
+ except Exception as e:
57
+ return f"Erreur de téléchargement de la page : {e}", None
58
+
59
+ html_text = response.text
60
+ mp3_entries = extract_mp3_links_and_titles(html_text)
61
+
62
+ if not mp3_entries:
63
+ return "Aucun lien .mp3 trouvé sur cette page.", None
64
+
65
+ temp_dir = tempfile.mkdtemp()
66
+ try:
67
+ zip_fd, zip_path = tempfile.mkstemp(suffix=".zip", prefix="episodes_")
68
+ os.close(zip_fd) # On ferme le descripteur immédiatement
69
+
70
  with zipfile.ZipFile(zip_path, "w") as zipf:
71
  for idx, (mp3_url, title) in enumerate(mp3_entries, 1):
72
  if title:
73
  filename = f"{idx:02d}-{sanitize_filename(title)}.mp3"
74
  else:
75
  filename = f"{idx:02d}-episode.mp3"
76
+ filepath = os.path.join(temp_dir, filename)
77
  try:
78
  print(f"Téléchargement : {mp3_url}")
79
  audio_resp = requests.get(mp3_url)
 
86
  zipf.write(filepath, arcname=filename)
87
  except Exception as e:
88
  print(f"Erreur lors du téléchargement de {mp3_url} : {e}")
 
89
  return "Téléchargement terminé avec succès.", zip_path
90
+ finally:
91
+ shutil.rmtree(temp_dir)
92
 
93
  def gradio_interface(url):
94
  message, zip_file = download_and_zip_mp3s(url)