Procházet zdrojové kódy

Anomalie #456: Autoplay: passer a la suivant si lecture impossible

Sevajol Bastien před 12 roky
rodič
revize
04d4cb4649
1 změnil soubory, kde provedl 74 přidání a 40 odebrání
  1. 74 40
      web/bundles/muzichcore/js/autoplay.js

+ 74 - 40
web/bundles/muzichcore/js/autoplay.js Zobrazit soubor

@@ -206,6 +206,8 @@ $(document).ready(function(){
206 206
     $('#autoplay').hide();
207 207
     // On vide le dom du lecteur
208 208
     $('div#'+autoplay_player_div_id+'_container').html('<div id="'+autoplay_player_div_id+'"></div>');
209
+    // Plus rien de dois être lu
210
+    autoplay_pause_all_players();
209 211
   });
210 212
    
211 213
   
@@ -246,6 +248,7 @@ $(document).ready(function(){
246 248
   {
247 249
     autoplay_player = document.getElementById(autoplay_player_id);
248 250
     autoplay_player.addEventListener("onStateChange", "youtube_StateChange");
251
+    autoplay_player.addEventListener("onError", "youtube_error");
249 252
     $('img#autoplay_loader').hide();
250 253
     youtube_play();
251 254
   }
@@ -259,6 +262,12 @@ $(document).ready(function(){
259 262
       autoplay_next();
260 263
     }
261 264
   }
265
+  
266
+  // Fonction appelé par le lecteur youtube quand il y a une erreur
267
+  window.youtube_error = function(newState)
268
+  {
269
+    autoplay_next();
270
+  }
262 271
 
263 272
   // Lecture
264 273
   function youtube_play()
@@ -307,60 +316,85 @@ $(document).ready(function(){
307 316
       var widgetIframe = document.getElementById('soundcloud_iframe_player');
308 317
       autoplay_player_soundcloud = SC.Widget(widgetIframe);
309 318
 
310
-      // Lorsque le lecteur est prêt on lance la lecture
311
-      autoplay_player_soundcloud.bind(SC.Widget.Events.READY, function ()
312
-      {
313
-        autoplay_player_soundcloud.play();
314
-        $('img#autoplay_loader').hide();
319
+      SC.get(ref_url, function(track, error) {
320
+        if (error) 
321
+        { 
322
+          // En cas d'erreur on passe a al suivante
323
+          autoplay_next(); 
324
+        }
325
+        else
326
+        {
327
+          // Lorsque le lecteur est prêt on lance la lecture
328
+          autoplay_player_soundcloud.bind(SC.Widget.Events.READY, function ()
329
+          {
330
+            autoplay_player_soundcloud.play();
331
+            $('img#autoplay_loader').hide();
315 332
 
316
-      });
333
+          });
317 334
 
318
-      autoplay_player_soundcloud.bind(SC.Widget.Events.PLAY, function ()
319
-      {
320
-        // Lorsque le lecteur commence une lecture
321
-        // On garde en mémoire l'index de la lecture en cours
322
-        autoplay_player_soundcloud.getCurrentSoundIndex(function(value){
323
-            index_track_previous = value;
324
-        });
325
-      });
335
+          autoplay_player_soundcloud.bind(SC.Widget.Events.PLAY, function ()
336
+          {
337
+            // Lorsque le lecteur commence une lecture
338
+            // On garde en mémoire l'index de la lecture en cours
339
+            autoplay_player_soundcloud.getCurrentSoundIndex(function(value){
340
+                index_track_previous = value;
341
+            });
342
+          });
326 343
 
327
-      // Lorsque le lecteur a terminé sa lecture, on passe au suivant
328
-      autoplay_player_soundcloud.bind(SC.Widget.Events.FINISH, function ()
329
-      {
344
+          // Lorsque le lecteur a terminé sa lecture, on passe au suivant
345
+          autoplay_player_soundcloud.bind(SC.Widget.Events.FINISH, function ()
346
+          {
330 347
 
331
-        // Cette variable contient le nombre de pistes dans la liste de lecture
332
-        var track_count = 1;
333
-        autoplay_player_soundcloud.getSounds(function(value){
334
-          // On récupère le nomre de pistes
335
-          track_count = value.length;
336
-        });
348
+            // Cette variable contient le nombre de pistes dans la liste de lecture
349
+            var track_count = 1;
350
+            autoplay_player_soundcloud.getSounds(function(value){
351
+              // On récupère le nomre de pistes
352
+              track_count = value.length;
353
+            });
337 354
 
338
-        autoplay_player_soundcloud.getCurrentSoundIndex(function(value){
355
+            autoplay_player_soundcloud.getCurrentSoundIndex(function(value){
339 356
 
340
-          // Si la index_track_previous est la même maintenant que la piste
341
-          // est terminé, c'est que l'on est arrivé en fin de liste.
342
-          // Cependant, si c'est une liste avec une piste unique, on passe 
343
-          // tout de suite a la suite
344
-          if (value == index_track_previous || track_count == 1)
345
-          {
346
-            autoplay_next();
347
-          }
357
+              // Si la index_track_previous est la même maintenant que la piste
358
+              // est terminé, c'est que l'on est arrivé en fin de liste.
359
+              // Cependant, si c'est une liste avec une piste unique, on passe 
360
+              // tout de suite a la suite
361
+              if (value == index_track_previous || track_count == 1)
362
+              {
363
+                autoplay_next();
364
+              }
348 365
 
349
-          // Sinon on prend al nouvelle valeur
350
-          index_track_previous = value;
366
+              // Sinon on prend al nouvelle valeur
367
+              index_track_previous = value;
351 368
 
352
-        });
369
+            });
353 370
 
371
+          });
372
+        }
354 373
       });
355 374
 
375
+      
376
+
356 377
     }
357 378
     else
358 379
     {
359
-      // Le lecteur iframe existait déjà
360
-    $('div#autoplay_player_soundcloud').show();
361
-      autoplay_player_soundcloud.load(ref_url+'&show_artwork=false&auto_play=true');
362
-      //autoplay_player_soundcloud.play();
363
-    $('img#autoplay_loader').hide();
380
+      SC.get(ref_url, function(track, error) {
381
+        if (error) 
382
+        { 
383
+          // En cas d'erreur on passe a al suivante
384
+          console.log('Not found!');
385
+          autoplay_next(); 
386
+        }
387
+        else
388
+        {
389
+
390
+          // Le lecteur iframe existait déjà
391
+          $('div#autoplay_player_soundcloud').show();
392
+            autoplay_player_soundcloud.load(ref_url+'&show_artwork=false&auto_play=true');
393
+            //autoplay_player_soundcloud.play();
394
+          $('img#autoplay_loader').hide();
395
+
396
+        }
397
+      });
364 398
     }
365 399
          
366 400
   }