Advertisement
riipah

Nico HTML5

May 10th, 2015
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var NicovideoPlayer = function (data) {
  2.     var self = this;
  3.     self.videoId = data.id;
  4.     self.scuri = data.meta.scuri || self.videoId;
  5.     self.codec = data.meta.codec;
  6.     self.videoLength = data.seconds;
  7.     self.theYouTubeDevsNeedToFixThisShit = false;
  8.     self.init = function () {
  9.         var iframe = $("<iframe/>");
  10.         iframe.addClass("embed-responsive-item");
  11.         iframe.css("display", "none");
  12.         iframe.attr("width", VWIDTH);
  13.         iframe.attr("height", VHEIGHT);
  14.         iframe.attr("src", "/php/sm.php?id="+self.videoId+"&w="+VWIDTH+"&h="+VHEIGHT);
  15.         iframe.attr("frameborder", "0");
  16.         iframe.attr("scrolling", "no");
  17.         removeOld(iframe);
  18.         iframe.load(function(){
  19.             var obj = iframe.contents().find('#external_nico_0');
  20.             obj.css("display", "none");
  21.             var data = GetQueryString(obj[0].getAttribute('flashvars'));
  22.             var iframe2 = $("<iframe/>");
  23.             iframe2.css("display", "none");
  24.             iframe2.attr("src", "http://ext.nicovideo.jp/thumb_watch?eco=1&v="+data.videoId+"&k="+data.thumbPlayKey);
  25.             iframe2.load(function(){
  26.                 switch(self.codec){
  27.                     case "swf":
  28.                         removeOld();
  29.                         var url = self.scuri;
  30.                         url += "&" + [
  31.                             "api=2",
  32.                             "show_title=0",
  33.                             "show_byline=0",
  34.                             "show_portrait=0",
  35.                             "fullscreen=1",
  36.                             "loop=0"
  37.                         ].join("&");
  38.                         var flashvars = {
  39.                             api: 2,
  40.                             player_id: "ytapiplayer"
  41.                         };
  42.                         var params = {
  43.                             allowfullscreen: true,
  44.                             allowScriptAccess: "always",
  45.                             wmode: USEROPTS.wmode_transparent ? "transparent" : undefined
  46.                         };
  47.                         swfobject.embedSWF(self.scuri,
  48.                                            "ytapiplayer",
  49.                                            VWIDTH,
  50.                                            VHEIGHT,
  51.                                            "9.0.0",
  52.                                            "expressInstall.swf",
  53.                                            flashvars,
  54.                                            params);
  55.            
  56.                         self.player = $("#ytapiplayer")[0];
  57.                         waitUntilDefined(self.player, "api_addEventListener", function () {
  58.                             self.player.api_addEventListener("ready", function () {
  59.                                 self.player.api_play();
  60.            
  61.                                 self.player.api_addEvent("finish", function () {
  62.                                     if(CLIENT.leader)
  63.                                         socket.emit("playNext");
  64.                                 });
  65.            
  66.                                 self.player.api_addEvent("pause", function () {
  67.                                     PLAYER.paused = true;
  68.                                     if(CLIENT.leader)
  69.                                         sendVideoUpdate();
  70.                                 });
  71.            
  72.                                 self.player.api_addEvent("play", function () {
  73.                                     PLAYER.paused = false;
  74.                                     if(CLIENT.leader)
  75.                                         sendVideoUpdate();
  76.                                 });
  77.            
  78.                                 self.setVolume(VOLUME);
  79.                             });
  80.                         });
  81.                         break;
  82.                       default:
  83.                         var video = $("<video/>");
  84.                         video
  85.                             .addClass("embed-responsive-item")
  86.                             .attr("src", self.scuri)
  87.                             .attr("controls", "controls")
  88.                             .attr("width", VWIDTH)
  89.                             .attr("height", VHEIGHT)
  90.                             .attr("autoplay", true)
  91.                             .attr("preload", "auto")
  92.                             .html("Your browser does not support HTML5 <code>&lt;video&gt;</code> tags :(");
  93.                         video.bind("loadeddata", function(){
  94.                             if (!self.paused && self.theYouTubeDevsNeedToFixThisShit) {
  95.                                 self.pause();
  96.                                 self.theYouTubeDevsNeedToFixThisShit = false;
  97.                             }
  98.                         });
  99.                         removeOld(video);
  100.                         self.player = video[0];
  101.                         if (!Object.hasOwnProperty.call(self, "paused")) {
  102.                             Object.defineProperty(self, "paused", {
  103.                                 get: function () {
  104.                                     return self.player.paused;
  105.                                 }
  106.                             });
  107.                         }
  108.                         self.player.onpause = function () {
  109.                             self.paused = true;
  110.                             if (CLIENT.leader) {
  111.                                 sendVideoUpdate();
  112.                             }
  113.                         };
  114.                         self.player.onplay = function () {
  115.                             self.paused = false;
  116.                             if (CLIENT.leader) {
  117.                                 sendVideoUpdate();
  118.                             }
  119.                         };
  120.                         self.player.onended = function () {
  121.                             if (CLIENT.leader) {
  122.                                 socket.emit("playNext");
  123.                             }
  124.                         };
  125.                         self.setVolume(VOLUME);
  126.                         break;
  127.                 }
  128.             });
  129.             iframe2.insertBefore(obj);
  130.         });
  131.     };
  132.  
  133.     self.load = function (data) {
  134.         self.videoId = data.id;
  135.         self.scuri = data.meta.scuri || self.videoId;
  136.         self.codec = data.meta.codec;
  137.         self.videoLength = data.seconds;
  138.         self.init();
  139.     };
  140.  
  141.     self.pause = function () {
  142.         switch(self.codec){
  143.             case "swf":
  144.                 if(self.player && self.player.api_pause)
  145.                     self.player.api_pause();
  146.                 break;
  147.             default:
  148.                 if (self.player)
  149.                     self.player.pause();
  150.                 break;
  151.         }
  152.     };
  153.  
  154.     self.play = function () {
  155.         switch(self.codec){
  156.             case "swf":
  157.                 if(self.player && self.player.api_play)
  158.                     self.player.api_play();
  159.                 break;
  160.             default:
  161.                 if (self.player)
  162.                     self.player.play();
  163.                 break;
  164.         }
  165.     };
  166.  
  167.     self.getTime = function (callback) {
  168.         switch(self.codec){
  169.             case "swf":
  170.                 if(self.player && self.player.api_getCurrentTime)
  171.                     callback(parseFloat(self.player.api_getCurrentTime()));
  172.                 break;
  173.             default:
  174.                 if (self.player)
  175.                     callback(self.player.currentTime);
  176.                 break;
  177.         }
  178.     };
  179.  
  180.     self.seek = function (time) {
  181.         switch(self.codec){
  182.             case "swf":
  183.                 if(self.player && self.player.api_seekTo);
  184.                     self.player.api_seekTo(time);
  185.                 break;
  186.             default:
  187.                 if (self.player) {
  188.                     try {
  189.                         if (self.player.paused) {
  190.                             self.player.play();
  191.                         }
  192.                         self.player.currentTime = time;
  193.                     } catch (e) {
  194.                     }
  195.                 }
  196.                 break;
  197.         }
  198.     };
  199.  
  200.     self.getVolume = function (cb) {
  201.         switch(self.codec){
  202.             case "swf":
  203.                 if (self.player && self.player.api_getVolume)
  204.                     cb(self.player.api_getVolume());
  205.                 break;
  206.             default:
  207.                 if (self.player) {
  208.                     if (self.player.muted) {
  209.                         cb(0);
  210.                     } else {
  211.                         cb(self.player.volume);
  212.                     }
  213.                 }
  214.                 break;
  215.         }
  216.     };
  217.  
  218.     self.setVolume = function (vol) {
  219.         switch(self.codec){
  220.             case "swf":
  221.                 if (self.player && self.player.api_setVolume)
  222.                     self.player.api_setVolume(vol);
  223.                 break;
  224.             default:
  225.                 if (self.player)
  226.                     self.player.volume = vol;
  227.                 break;
  228.         }
  229.     };
  230.  
  231.     self.init();
  232. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement