Replace Vandal Video Player

Cambia el reproductor de video usado en el portal Vandal

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name           Replace Vandal Video Player
// @author         unsigned char*
// @version        2
// @grant          none
// @namespace      uchar
// @icon           https://vandal.elespanol.com/favicon-32x32.png
// @include        /^https?:\/\/(?:www\.)?vandal\.elespanol\.com\/?.*$/
// @description:es Cambia el reproductor de video usado en el portal Vandal
// @description Cambia el reproductor de video usado en el portal Vandal
// ==/UserScript==

(function (window) {
  "use strict";
  
  var FAVandal = {    
    init: function() {
      var self = this;
    	this._replaceVideoPlayers("div[class*='reproductor_']", function(elm){
      	if ('embed' in elm.dataset && elm.dataset.embed.indexOf('youtube') !== -1) {
          self._injectPlayerHTML(elm, `<iframe width='560' height='315' src='${elm.dataset.embed}' frameborder='0' allow='encrypted-media' allowfullscreen></iframe>`);
        }
      });
      this._replaceVideoPlayers("iframe[id^='video_']", function(elm){
      	var vandalid = elm.id.split('_');
        if (vandalid && vandalid.length === 2 && self._isNumber(vandalid[1])) {
          self._injectPlayerHTML(elm, `<video controls webkit-playsinline='true' playsinline='true' src='https://videos.vandalimg.com/mp4/${vandalid[1]}.mp4' x-webkit-airplay='allow'></video>`);
        }
      });
    },
    
    _isNumber: function (n) {
      return !isNaN(parseFloat(n)) && isFinite(n);
    },
    
    _injectPlayerHTML: function(elmToReplace, htmlToInject) {
    	var ndiv = document.createElement('DIV');
      ndiv.innerHTML = htmlToInject;
      elmToReplace.parentNode.insertBefore(ndiv, elmToReplace);
      elmToReplace.parentNode.removeChild(elmToReplace);
    },

    _replaceVideoPlayers: function (selector, callback){
      document.body.querySelectorAll(selector).forEach(elm => { callback(elm); });
    }
	};

  FAVandal.init();

})(window)