j-r-b commited on
Commit
47c46ea
·
verified ·
1 Parent(s): dd3436e

Upload 7 files

Browse files
Files changed (4) hide show
  1. public/index.html +4 -0
  2. public/script.js +9 -5
  3. public/style.css +9 -0
  4. server.js +11 -1
public/index.html CHANGED
@@ -15,6 +15,10 @@
15
  Cette application utilise un algorithme JavaScript exécuté dans votre navigateur
16
  pour résumer le contenu textuel (transcription) d'une vidéo YouTube.
17
  </p>
 
 
 
 
18
 
19
  <label for="youtube-url">URL de la vidéo YouTube :</label>
20
  <input type="text" id="youtube-url" placeholder="Ex: https://www.youtube.com/watch?v=dQw4w9WgXcQ">
 
15
  Cette application utilise un algorithme JavaScript exécuté dans votre navigateur
16
  pour résumer le contenu textuel (transcription) d'une vidéo YouTube.
17
  </p>
18
+
19
+ <div class="info-box">
20
+ <p><strong>Important :</strong> Cette application fonctionne uniquement avec les vidéos YouTube qui ont des sous-titres/transcriptions disponibles (activés par le créateur ou générés automatiquement).</p>
21
+ </div>
22
 
23
  <label for="youtube-url">URL de la vidéo YouTube :</label>
24
  <input type="text" id="youtube-url" placeholder="Ex: https://www.youtube.com/watch?v=dQw4w9WgXcQ">
public/script.js CHANGED
@@ -108,10 +108,14 @@ document.addEventListener('DOMContentLoaded', () => {
108
  const data = await response.json();
109
 
110
  if (!response.ok) {
111
- // Afficher l'erreur détaillée si disponible
112
- const errorMessage = data.details
113
- ? `${data.error} Détails: ${data.details}`
114
- : data.error || `Erreur HTTP: ${response.status}`;
 
 
 
 
115
  throw new Error(errorMessage);
116
  }
117
 
@@ -145,7 +149,7 @@ document.addEventListener('DOMContentLoaded', () => {
145
  }
146
 
147
  function showError(message) {
148
- errorDiv.textContent = message;
149
  errorDiv.style.display = 'block';
150
  }
151
 
 
108
  const data = await response.json();
109
 
110
  if (!response.ok) {
111
+ // Afficher l'erreur détaillée si disponible avec la solution si fournie
112
+ let errorMessage = data.error || `Erreur HTTP: ${response.status}`;
113
+ if (data.details) {
114
+ errorMessage += ` Détails: ${data.details}`;
115
+ }
116
+ if (data.solution) {
117
+ errorMessage += `\n💡 Solution: ${data.solution}`;
118
+ }
119
  throw new Error(errorMessage);
120
  }
121
 
 
149
  }
150
 
151
  function showError(message) {
152
+ errorDiv.innerHTML = message.replace(/\n/g, '<br>');
153
  errorDiv.style.display = 'block';
154
  }
155
 
public/style.css CHANGED
@@ -71,6 +71,15 @@ button:hover {
71
  border-radius: 4px;
72
  }
73
 
 
 
 
 
 
 
 
 
 
74
  #loading {
75
  text-align: center;
76
  padding: 10px;
 
71
  border-radius: 4px;
72
  }
73
 
74
+ .info-box {
75
+ background-color: #e6f7ff;
76
+ border: 1px solid #91d5ff;
77
+ color: #1890ff;
78
+ padding: 10px;
79
+ margin: 15px 0;
80
+ border-radius: 4px;
81
+ }
82
+
83
  #loading {
84
  text-align: center;
85
  padding: 10px;
server.js CHANGED
@@ -66,6 +66,7 @@ app.get('/get-transcript', async (req, res) => {
66
  name: error.name
67
  });
68
 
 
69
  if (error.message && error.message.includes('Could not find transcripts')) {
70
  return res.status(404).json({ error: "Aucune transcription disponible pour cette vidéo (elles sont peut-être désactivées ou n'existent pas en auto-généré)." });
71
  }
@@ -76,7 +77,16 @@ app.get('/get-transcript', async (req, res) => {
76
  return res.status(504).json({ error: 'Délai d\'attente dépassé lors de la récupération de la transcription. Veuillez réessayer.' });
77
  }
78
 
79
- // Message d'erreur plus détaillé
 
 
 
 
 
 
 
 
 
80
  res.status(500).json({
81
  error: 'Erreur interne du serveur lors de la récupération de la transcription.',
82
  details: error.message
 
66
  name: error.name
67
  });
68
 
69
+ // Gestion des cas d'erreur spécifiques
70
  if (error.message && error.message.includes('Could not find transcripts')) {
71
  return res.status(404).json({ error: "Aucune transcription disponible pour cette vidéo (elles sont peut-être désactivées ou n'existent pas en auto-généré)." });
72
  }
 
77
  return res.status(504).json({ error: 'Délai d\'attente dépassé lors de la récupération de la transcription. Veuillez réessayer.' });
78
  }
79
 
80
+ // Nouvelle gestion spécifique pour les transcriptions désactivées
81
+ if (error.message && error.message.includes('Transcript is disabled')) {
82
+ const videoId = error.message.match(/\(([^)]+)\)/)?.[1] || "cette vidéo";
83
+ return res.status(404).json({
84
+ error: `Les sous-titres/transcriptions sont désactivés sur cette vidéo (ID: ${videoId}).`,
85
+ solution: "Essayez une autre vidéo qui possède des sous-titres activés."
86
+ });
87
+ }
88
+
89
+ // Message d'erreur plus détaillé pour les autres cas
90
  res.status(500).json({
91
  error: 'Erreur interne du serveur lors de la récupération de la transcription.',
92
  details: error.message