Advertisement
Guest User

background.js

a guest
Feb 21st, 2012
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var player;
  2. var port;
  3. var UNSTARTED = -1;
  4. var ENDED = 0;
  5. var PLAYING = 1;
  6. var PAUSED = 2;
  7. var BUFFERING = 3;
  8. var VIDCUED = 5;
  9.  
  10. function ToggleMusic() {
  11.     //Possible values are unstarted (-1), ended (0), playing (1), paused (2), buffering (3), video cued (5).
  12.     var playerState = player.getPlayerState();
  13.     var toggledOn = true;
  14.  
  15.     if (playerState == PAUSED || playerState == UNSTARTED || playerState == ENDED) {
  16.         player.playVideo();
  17.     }
  18.     else if (playerState == VIDCUED) {
  19.         var playlist = localStorage.getItem('playlist');
  20.         playlist = JSON.parse(playlist);
  21.         player.loadVideoById(playlist[0].ID);
  22.     }
  23.     else {
  24.         player.pauseVideo();
  25.         toggledOn = false;
  26.     }
  27.  
  28.     return toggledOn;
  29. }
  30.  
  31. function ShuffleMusic() {
  32.     var playlist = JSON.parse(localStorage.getItem('playlist'));
  33.     playlist = ShufflePlaylist(playlist);
  34.     localStorage.setItem('playlist', JSON.stringify(playlist));
  35.  
  36.     //The best way to do this is to load the next two songs so that we've got the next one pre-loaded.
  37.     LoadNext(playlist, 1);
  38. }
  39.  
  40. function LoadNext(playlist, countToLoad) {
  41.     //Possible values are unstarted (-1), ended (0), playing (1), paused (2), buffering (3), video cued (5).
  42.     var playerState = player.getPlayerState();
  43.  
  44.     var wasPlayingSong = playerState == 1 || playerState == 3;
  45.  
  46.     if (playerState != UNSTARTED) {
  47.         player.stopVideo();
  48.         player.clearVideo();
  49.     }
  50.  
  51.     for (count = 0; count < countToLoad; count++) {
  52.         player.loadVideoById(playlist[count].ID);
  53.     }
  54.  
  55.     if (!wasPlayingSong) {
  56.         player.pauseVideo();
  57.     }
  58. }
  59.  
  60. function NextSong() {
  61.     var playlist = JSON.parse(localStorage.getItem('playlist'));
  62.  
  63.     var nextSong = playlist.shift();
  64.     playlist.push(nextSong); //Move it to the end.
  65.  
  66.     LoadNext(playlist, 1);
  67.  
  68.     localStorage.setItem('playlist', JSON.stringify(playlist));
  69. }
  70.  
  71. function onPlayerStateChange() {
  72.     var playerState = player.getPlayerState();
  73.  
  74.     if (playerState == BUFFERING) {
  75.         port.postMessage({ playerState: "Buffering" });
  76.     }
  77.     else if (playerState == PLAYING) {
  78.         port.postMessage({ playerState: "Playing" });
  79.     }
  80.     else if (playerState == PAUSED) {
  81.         port.postMessage({ playerState: "Paused" });
  82.     }
  83.  
  84.     if (playerState == ENDED) {
  85.         NextSong();
  86.     }
  87. }
  88.  
  89. function Initialize(playlist) {
  90.     port = chrome.extension.connect({ name: "statusPoller" });
  91.     if (!player) {
  92.         YT_ready(function(){
  93.             var frameID = getFrameID("MusicHolder");
  94.             if (frameID) {
  95.                 player = new YT.Player(frameID, {
  96.                     events: {
  97.                         "onReady": function() {
  98.                             player.cueVideoById(playlist[0].ID, 0);
  99.                         },
  100.                         "onStateChange": onPlayerStateChange
  101.                     }
  102.                 });
  103.             }
  104.         });
  105.     } else {
  106.         // Only reload if the player is not playing. Otherwise, the music
  107.         // stops when re-opening the popup.
  108.         if (player.getPlayerState && player.getPlayerState() != PLAYING) {
  109.             player.cueVideoById(playlist[0].ID, 0);
  110.         }
  111.     }
  112. }
  113.  
  114. function GetIdFromUrl(url) {
  115.     var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
  116.     var match = url.match(regExp);
  117.     if (match && match[7].length == 11) {
  118.         return match[7];
  119.     } else {
  120.         alert("Failed to read YouTube URL. Did you enter a valid link?");
  121.     }
  122. }
  123.  
  124. //shuffles list in-place
  125. function ShufflePlaylist(list) {
  126.     var i, j, t;
  127.     for (i = 1; i < list.length; i++) {
  128.         j = Math.floor(Math.random() * (1 + i));  // choose j in [0..i]
  129.         if (j != i) {
  130.             t = list[i];                        // swap list[i] and list[j]
  131.             list[i] = list[j];
  132.             list[j] = t;
  133.         }
  134.     }
  135.  
  136.     return list;
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement