// ==UserScript==
// @name vipVideos_skipAd
// @namespace vipVideos_skipAd-xinggsf
// @author xinggsf
// @description 配合ABP去视频广告;开启GPU加速
// updateURL https://greasyfork.org/scripts/8561.js
// @include http*
// @exclude https://www.youtube.com/*
// @exclude http://*.dj92cc.com/*
//全面支持音悦台HTML5播放,详见 https://greasyfork.org/scripts/14593
// @exclude http://*.yinyuetai.com/*
// @version 2017.1.24
// @encoding utf-8
// @resource player_swf https://bitbucket.org/kafan15536900/haoutil/raw/master/player/testmod/player.swf
// @grant GM_getResourceURL
// @grant unsafeWindow
// @downloadURL none
// ==/UserScript==
-function(doc, bd) {
"use strict";
let isEmbed, swfAddr, regYk = /VideoIDS=(\w+)/,
onlyUseGpu = false,//仅使用脚本的GPU加速功能
noAdPlayerPath = 'http://halflife.coding.me/swf/',//可填写有效播放器地址路径(不包括文件名)
swfWhiteList = [
'.pdim.gs/static/', //熊猫直播
'http://v.6.cn/apple/player/',
'.plures.net/pts/swfbin/player/live.swf', //龙珠直播
'http://www.gaoxiaovod.com/ck/player.swf',
];
let Youku = {
matchPlayer: function(url) {
return /^http:\/\/static\.youku\.com\/v.*?(?:play|load)er/.test(url);
},
setPlayer: function(p, v) {
if (document.domain.endsWith('youku.com')) {
//unsafeWindow.scrollTo(0, 99);
unsafeWindow._ssPlayer = p.outerHTML.replace('direct', 'gpu');
unsafeWindow.document.querySelector("div.base_info+div").outerHTML =
'换原播放器';
}
let m = v.match(regYk)[1],
s = getPlayerUrl('player.swf');
if (typeof(s) ==='string')
setYkPlayer(p, s, m);
else s.then(url => {
setYkPlayer(p, url, m);
setTimeout(() => URL.revokeObjectURL(url), 3e3);
})
.then(console.log)
.catch(console.error);
}
};
let YkOutsite = {
matchPlayer: function(url) {
return /^http:\/\/player\.youku\.com\/player\.php\/sid\/(\w+)/.test(url);
},
setPlayer: function(p, v) {
let m = RegExp.$1;
if (!m) {
m = swfAddr.match(regYk) || v.match(regYk);
m = m[1];
}
let s = getPlayerUrl('player.swf');
if (typeof(s) === 'string')
setYkPlayer(p, s, m);
else if (window.chrome) {
s.then(url => {
setYkPlayer(p, url, m);
setTimeout(() => URL.revokeObjectURL(url), 3e3);
});
} else {
setYkPlayer(p, 'http://static.youku.com/v1.0.0658/v/swf/player.swf', m);
}
}
};
let AcfunYk = {
matchPlayer: function(url) {
return url.toLowerCase().startsWith('http://cdn.aixifan.com/player/cooperation/acfunxyouku.swf');
},
setPlayer: function(p, v) {
let m = v.match(/vid=(\w+)/)[1];
let s = getPlayerUrl('player.swf');
if (typeof(s) === 'string')
setYkPlayer(p, s, m);
else if (window.chrome) {
s.then(url => {
setYkPlayer(p, url, m);
//if (s.startsWith('blob:'))
setTimeout(() => URL.revokeObjectURL(url), 3e3);
});
} else {
setYkPlayer(p, 'http://static.youku.com/v1.0.0658/v/swf/player.swf', m);
}
}
};
let Iqiyi = {
matchPlayer: function(url) {
return url.startsWith('http://www.iqiyi.com/common/flashplayer/201');
},
setPlayer: function(p, v) {
p.data = noAdPlayerPath + 'iqiyi5.swf';
openFlashGPU(p);
/*
let opts = {};
opts.params = { 'wMode' : 'gpu' };
opts.vars = { cid: 'qc_100001_300089'};
let vars = s.split('&');
for (let k of vars) {
s = k.split('=');
opts.vars[s[0]] = s[1];
}
s = unsafeWindow.Q.player.create(p.id, opts); */
}
};
let Sohu = {
matchPlayer: function(url) {
return location.hostname === 'tv.sohu.com' && url.startsWith('http://tv.sohu.com/upload/swf/');
},
setPlayer: function(p, v) {
p.src = noAdPlayerPath + 'sohu_live.swf';
openFlashGPU(p);
}
};
function setYkPlayer(p, url, vid) {
p.outerHTML = `