Greasy Fork is available in English.

vipVideos_skipAd

油库、土逗 VIP免费看;配合ABP去视频广告;开启GPU加速

Verzia zo dňa 06.10.2015. Pozri najnovšiu verziu.

// ==UserScript==
// @name           vipVideos_skipAd
// @namespace      vipVideos_skipAd
// @author	       xinggsf~gmail。com
// @description    油库、土逗 VIP免费看;配合ABP去视频广告;开启GPU加速
// @homepageURL    https://greasyfork.org/scripts/8561
// updateURL       https://greasyfork.org/scripts/8561.js
// @require        https://greasyfork.org/scripts/11230.js
// @license        GPL version 3
// @include        http*
// @exclude        http://play.baidu.com/*
// @exclude        http://www.hunantv.com/*
// @version        2015.10.6
// @encoding       utf-8
// @grant          unsafeWindow
// ==/UserScript==

//开启GPU硬件加速,如果显卡不支持无效,请换direct!参考了thunderhit的代码:
// https://greasyfork.org/zh-CN/scripts/6479,但用定时器太低效了
-function(doc, bd) {
var isEmbed, style = doc.createElement('style');
style.textContent = '@-webkit-keyframes gAnimatAct{from{opacity:0.99;}to{opacity:1;}}@keyframes gAnimatAct{from{opacity:0.99;}to{opacity:1;}}embed,object{animation:gAnimatAct 1ms;-webkit-animation:gAnimatAct 1ms;}';
doc.head.appendChild(style);

var youkuMark = '<embed type="application/x-shockwave-flash" wmode="gpu" src="http://img.ct2t.net/flv/youku141007/loader.swf" width="100%" height="100%" id="mplayer" allowfullscreen="true" allowscriptaccess="never" flashvars="isShowRelatedVideo=false&showAd=0&show_ce=0&showsearch=0&VideoIDS={1}&isAutoPlay=true&winType=BDskin&partnerId=youkuind_&embedid=MTEzLjE0My4xNTkuOTYCMTUwNjk2NTE3AmkueW91a3UuY29tAi91L1VOakl6T1RjMk1UVXk%3D&Type=PlayList">',
iqiyiMark = '<embed play="true" allowfullscreen="true" wmode="gpu" type="application/x-shockwave-flash" width="100%" height="100%" id="flash" allowscriptaccess="always" src="{src}" flashvars="{fvars}">',
PLAYER_URL = [
	{
		urls: [
			/^http:\/\/static\.youku\.com\/.*?q?(?:play|load)er\w*\.swf/,
			/^http:\/\/player\.youku\.com\/player\.php\/.*?sid\/(.*?)\/.*?v\.swf$/,
			/^http:\/\/player\.youku\.com\/embed\//,
		],
		swfMark: youkuMark,
		varsMatch: /VideoIDS=(\w+)/,
		//never不判断,只是加入一个按钮
		isProc: function(p, fv, src) {
			if (!doc.domain.endsWith('youku.com')) {
				var t = PLAYER_URL[0],
				m = src.match(t.urls[1]) || src.match(t.varsMatch);
				m && setPlayer(p, t.swfMark.format(m));
				return !m;
			}
			doc.addEventListener('DOMNodeInserted', function (ev) {
				var e = ev.target;
				if (/SCRIPT|IKUADAPTER/.test(e.tagName) ||
					e.id === 'ikuadapter'
				) ev.relatedNode.removeChild(e);
			}, !1);
			
			setTimeout(scrollTo(0, 99), 9);
			unsafeWindow._ssPlayer = p.outerHTML.replace('direct','gpu');
			doc.querySelector("div#ab_pip").outerHTML =
			'<a style="font-size:20px;" onclick="document.querySelector(\'#mplayer\').outerHTML=_ssPlayer, delete _ssPlayer, this.parentNode.removeChild(this);">换原播放器</a>';
			return !0;
		}
	},{
		urls: [/^http:\/\/js\.tudouui\.com\/.*?Player.*?\.swf/],
		swfMark: youkuMark,
		varsMatch: /vcode=([^&]+)/,
		isProc: function(p, fv) {
			if (!doc.domain.endsWith('tudou.com')) {
				openFlashGPU(p);
				return !1;
			}
			setTimeout(scrollTo(0, 99), 9);
			//有播放时间限制即替换播放器
			if (! /paidTime=\d{2,}&/.test(fv)) {
				setObjectVal(p, 'wmode', 'gpu');
				return !1;
			}
			var div = doc.querySelector("#summary>div:last-of-type");
			div.innerHTML = '<a id="a-rpPlayer" style="font-size:20px;cursor:pointer;" onclick="document.querySelector(\'#mplayer\').outerHTML=this._ssPlayer,this.parentNode.removeChild(this);">换原播放器</a>';
			div.style.display = 'block';
			unsafeWindow.document.getElementById('a-rpPlayer')._ssPlayer = p.outerHTML.replace('direct','gpu');
			return !0;
		}
	},{
		urls: [
			/^http:\/\/www\.iqiyi\.com\/common\/flashplayer\/\d+\/MainPlayer_\w+\.swf/,
			/^http:\/\/dispatcher\.video\.qiyi\.com\/disp\/shareplayer\.swf/,
		],
		run: function(p, src, t) {
			var m = {'src': src};
			m.fvars = getFlashvars(p).replace(/&(?:cid|tipdataurl|\w+?Time|cpn\w|\w+?loader|adurl|yhls|exclusive|webEventID|videoIsFromQidan)=[^&]*/g,'') + '&cid=qc_100001_300089';
			setPlayer(p, iqiyiMark.format(m));
		}
	}, {
		urls: [
		/^http:\/\/www\.iqiyi\.com\/common\/flashplayer\/\d+\/PPS\w+\.swf/,
		//安装PPS插件才能播放
		// /^http:\/\/www\.iqiyi\.com\/player\/cupid\/common\/pps_\w+\.swf/
		],
		run: function(p, src, t) {
			var m = {'src': src},
			s = getFlashvars(p);
			if (s.indexOf('&cid=') === -1) {
				alert('不支持!安装PPS插件才能播放!');
				return;
			}
			m.fvars = s.replace(/&?(?:cid|coreUrl|tipdataurl|preloader|adurl|P00001|expandState)=[^&]+/g,'') +'&cid=qc_100001_300089';
			setPlayer(p, iqiyiMark.format(m));
		}
	}, {
		urls: [
			/^http:\/\/(?:\d+\.){3}\d+\/(?:test|web)player\/Main\w*\.swf$/,
			/^http:\/\/tv\.sohu\.com\/upload\/swf\/.+?\/Main\.swf$/,
		],
		//http://update.adbyby.com/swf/sohu_livezb.swf
		//http://opengg.guodafanli.com/adkiller/sohu_live.swf
		run: function(p, src, t) {
			//if (!doc.domain.endsWith('tv.sohu.com')) return;
			var s = p.getAttribute('flashvars')
				.replace(/&(?:plid|api_key|on\w*?Ad\w*)=[^&]*/g, '')
				//.replace(/(&on\w*?Ad\w*=)[^&]*/g,'$1')
				+ '&plid=7038006&api_key=647bfb88a84fc3c469d289f961993be6';
			s = p.outerHTML.replace(/(flashvars=")[^"]+/, '$1'+ s)
				.replace(/(wmode=")\w+/, '$1gpu');
		//.replace(src, 'http://100.100.100.100/swf/sohu.swf');
			setPlayer(p, s);
		}
	}
];

function openFlashGPU(p) {
	isEmbed ? p.setAttribute('wmode', 'gpu') :
		setObjectVal(p, 'wmode', 'gpu');
	delEvent();
	if (window.chrome) refreshElem(bd);
	// refreshElem(p.offsetParent);
}
function isPlayer(p) {
	if (!p.width || p.width < 33 || p.height < 12) return !1;
	if (isEmbed) return p.getAttribute('allowFullScreen') === 'true';
	//chrome下[].some.call在此处有问题:不能返回正确值
	var t, i = 0, l = p.children.length;
	for (; i< l; i++) {
		t = p.children[i];
		if (t.value === 'true' &&
			t.name.toLowerCase() === 'allowfullscreen')
			return !0;
	}
	return !1;
}
function refreshElem(o) {
	var s = o.style.display;
	o.style.display = 'none';
	setTimeout(function () {
		o.style.display = s;
	}, 9);
}
function delEvent() {
	bd.removeEventListener('animationstart', onAnimationStart);
	bd.removeEventListener('webkitAnimationStart', onAnimationStart);
	bd.removeEventListener('oAnimationStart', onAnimationStart);
	doc.head.removeChild(style);
}
function setPlayer(play, oHtml) {
	console.log('new player: ', oHtml);
	delEvent();
	play.outerHTML = oHtml;
	if (window.chrome) refreshElem(bd);
}
function setObjectVal(p, name, v) {
	var e = p.querySelector('embed');
	e && e.setAttribute(name, v);
	name = name.toLowerCase();
	if ([].some.call(p.children, function(o) {
		if (o.name && o.name.toLowerCase() === name) {
			o.value = v;
			return true;
		}
	})) return;
	e = doc.createElement('param');
	e.name = name;
	e.value = v;
	p.appendChild(e);
}
function getFlashvars(p) {
	var s = 'flashvars';
	if (isEmbed) return p.getAttribute(s);
	if (!p.children[s]) s = 'flashVars';
	return p.children[s].value;
}

function onAnimationStart(ev) {
	//ev.returnValue = !1;
	//ev.cancelBubble = true;
	if (ev.animationName !== 'gAnimatAct') return;
	var e = ev.target;//ev && ev.target || Event.srcElement
	console.log('CSS3 animation start:', ev, e);
	isEmbed = 'EMBED' === e.tagName;
	//防止OBJECT - EMBED结构重复处理
	if (isEmbed && 'OBJECT' === e.parentNode.tagName) return;
	if (!isPlayer(e)) return;
	var t, addr = e.src || e.data || e.children.movie.value;
	for (t of PLAYER_URL) {
		if (t.urls.some(function(reg) {
			return reg.test(addr);
		})) {//if
			if (t.run) {//custom function
				t.run(e, addr, t);
				return;
			}
			var v = getFlashvars(e);
			if (!t.isProc || t.isProc(e, v, addr)) {
				v = v.match(t.varsMatch);
				v && setPlayer(e, t.swfMark.format(v));
			}
			return;
		}
	}
	openFlashGPU(e);
}
bd.addEventListener('animationstart', onAnimationStart, !1);
bd.addEventListener('webkitAnimationStart', onAnimationStart, !1);
bd.addEventListener('oAnimationStart', onAnimationStart, !1);
}(document, document.body);