Greasy Fork is available in English.
把live48的Flash播放器替换为HTML5播放器(dplayer ver 1.25)
// ==UserScript==
// @name SNH48公演直播(live48)HTML5播放器
// @namespace live48_html5_player
// @version 0.2
// @description 把live48的Flash播放器替换为HTML5播放器(dplayer ver 1.25)
// @author SUZEMEF
// @match https://live.48.cn/*
// @run-at document-body
// @grant none
// @require https://greasemonkey.github.io/gm4-polyfill/gm4-polyfill.js
// ==/UserScript==
(function() {
function loadScriptOrCSS(src, callback){
const isStyle = src.slice(-4) ==='.css';
let dom = document.createElement(isStyle?'link':"script");
if(isStyle){
dom.rel = "stylesheet";
dom.href = src;
} else {
dom.src = src;
dom.async = true;
}
if(callback){
dom.onload = callback
}
document.body.appendChild(dom);
return dom;
}
// 引用类库
loadScriptOrCSS('https://cdnjs.cloudflare.com/ajax/libs/hls.js/8.0.0-beta.3/hls.min.js');
loadScriptOrCSS('https://cdnjs.cloudflare.com/ajax/libs/dplayer/1.25.0/DPlayer.min.css');
loadScriptOrCSS('https://cdnjs.cloudflare.com/ajax/libs/dplayer/1.25.0/DPlayer.min.js');
// 样式
GM_addStyle('body{display:block!important;} .dplayer {max-width:100%;height:100%;}');
// 页面加载完毕后运行播放器
window.onload= function(){
// 找到原播放器
let playerWrap = document.getElementsByClassName("videoplay")[0];
let videoSrc;
if(!playerWrap){
return
}
// 默认高清
videoSrc = document.getElementById("gao_url").value;
var index = videoSrc.indexOf('p');
// 需要https
function insertStr(soure, start, newStr){
return soure.slice(0, start) + newStr + soure.slice(start);
}
// 新的video
let player = document.createElement("div");
player.setAttribute("id", "dplayer");
// 替换播放器
while (playerWrap.firstChild) {
playerWrap.removeChild(playerWrap.firstChild);
}
playerWrap.appendChild(player);
new window.DPlayer({
container: document.getElementById('dplayer'),
autoplay: true,
video: {
url: videoSrc,
type:'hls'
}
});
};
})();