Pokaż długość filmu YT na wykop.pl

Wyświetla pasek sterowania przy filmach z YouTube zawierający informację o długości filmu (jeszcze przed rozpoczęciem odtwarzania)

当前为 2015-08-14 提交的版本,查看 最新版本

// ==UserScript==
// @name        Pokaż długość filmu YT na wykop.pl
// @description Wyświetla pasek sterowania przy filmach z YouTube zawierający informację o długości filmu (jeszcze przed rozpoczęciem odtwarzania)
// @namespace   Wykop scripts
// @include     http://www.wykop.pl/link/*
// @version     1.02
// @license     MIT License
// @grant       none
// ==/UserScript==

function getYTDuration()
{
   var timeWithLetters = false; // false -> [3:13:37]; true -> [3h13m13s]

   if(document.getElementsByClassName("youtube-player vtop").length > 0)
   {

      var yw, yh, yId, yIframe;

      yIframe = document.getElementsByClassName("youtube-player vtop")[0];

      //var yClone = yIframe.cloneNode(true);

      yw = yIframe.width;
      yh = yIframe.height;
      yId = yIframe.src.match(/https?\:\/\/www\.youtube\.com\/embed\/(.+?)\?.*/i)[1];

      yDiv = document.createElement('div');
      yDiv.id = 'playerYT';
      yIframe.parentNode.insertBefore(yDiv, yIframe);
      yIframe.parentNode.removeChild(yIframe);


       var taggg = document.createElement('script');

         taggg.src = "https://www.youtube.com/iframe_api";
         var firstScriptTag = document.getElementsByTagName('script')[0];
         firstScriptTag.parentNode.insertBefore(taggg, firstScriptTag);

         var playerYT;
         function onYouTubeIframeAPIReady()
         {
           playerYT  = new YT.Player('playerYT', {
             height: yh,
             width: yw,
             videoId: yId,
             events: {
               'onReady': onPlayerReady
             }
           });
         }

         function onPlayerReady(event)
         {
           var dur, dh, dm, ds;
           event.target.playVideo();
           event.target.pauseVideo();
           dur = event.target.getDuration();
           ds = ('0' + (dur % 60)).slice(-2);
           dur = Math.floor(dur/60);
           dm = ('0' + (dur % 60)).slice(-2);
           dur = Math.floor(dur/60);
           dh = dur;
           if(timeWithLetters)
             document.getElementsByTagName('h2')[0].innerHTML = ('[' + dh + 'h' + dm + 'm' + ds +'s] ') + document.getElementsByTagName('h2')[0].innerHTML;
           else
             document.getElementsByTagName('h2')[0].innerHTML = ('[' + dh + ':' + dm + ':' + ds +'] ') + document.getElementsByTagName('h2')[0].innerHTML;
           event.target.stopVideo();
//alert(event.target.getDuration());
         }

   }
}

function addJS_Node(funcToRun)
{
    var D                                   = document;
    var scriptNode                          = D.createElement ('script');
   
    scriptNode.type                         = "text/javascript";
    scriptNode.textContent  =  funcToRun.toString().replace(/^function .*?\(\)[\s\S]\{/i, '').replace(/\}$/,'');
    var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
    targ.appendChild (scriptNode);
}

addJS_Node (getYTDuration);



/**************** old script for old YT player
if(document.getElementsByClassName('youtube-player').length > 0)
   document.getElementsByClassName('youtube-player')[0].src = 
      document.getElementsByClassName('youtube-player')[0].src.replace(/&autohide=1/i, '&autohide=2');
****************/