Greasy Fork

Greasy Fork is available in English.

vipVideos_skipAd

油库、土~逗 VIP免费看,去iqiyi、sohu视频广告

当前为 2015-09-13 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name           vipVideos_skipAd
// @namespace      vipVideos_skipAd
// @author	       xinggsf~gmail。com
// @description    油库、土~逗 VIP免费看,去iqiyi、sohu视频广告
// @homepageURL    http://greasyfork.icu/scripts/8561
// updateURL       http://greasyfork.icu/scripts/8561.js
// @require        http://greasyfork.icu/scripts/11230.js
// @license        GPL version 3
// @include        http*
// @exclude        http://play.baidu.com/*
// @exclude        http://www.hunantv.com/*
// @version        2015.9.13
// @encoding       utf-8
// @grant          unsafeWindow
// ==/UserScript==

//开启GPU硬件加速,如果显卡不支持无效,请换direct!参考了thunderhit的代码:
// http://greasyfork.icu/zh-CN/scripts/6479,但用定时器太低效了
-function(doc) {
var 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 ckplayerMark = '<embed allowscriptaccess="always" allowfullscreen="true" quality="high" type="application/x-shockwave-flash" width="100%" height="100%" id="ckplayer" wmode="gpu" src="http://www.tuoku.sturgeon.mopaas.com/Public/ckplayer/ckplayer.swf" flashvars="f=http://www.tuoku.sturgeon.mopaas.com/xml.php?url=http://v.youku.com/v_show/id_{1}.html&p=1&s=2&c=0&loaded=loadedHandler">',
iqiyiMark = '<embed play="true" quality="high" 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(_[^.]+)?\.swf/,
		/^http:\/\/player\.youku\.com\/player\.php\/.*?sid\/(.*?)\/.*?v\.swf$/,
		/^http:\/\/player\.youku\.com\/embed\//,
		],
		swfMark: '<embed type="application/x-shockwave-flash" src="http://img.ct2t.net/flv/youku141007/loader.swf" width="100%" height="100%" id="mplayer" bgcolor="#000" allowfullscreen="true" allowscriptaccess="always" wmode="gpu" quality="high" flashvars="isShowRelatedVideo=false&showAd=0&show_ce=0&showsearch=0&VideoIDS={1}&isAutoPlay=true&winType=BDskin&partnerId=youkuind_&embedid=MTEzLjE0My4xNTkuOTYCMTUwNjk2NTE3AmkueW91a3UuY29tAi91L1VOakl6T1RjMk1UVXk%3D&Type=PlayList">',
		varsMatch: /VideoIDS=(\w+)/,
		//不判断,只是加入一个按钮
		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;
			}
			setTimeout(scrollTo(0, 99), 9);
			unsafeWindow._ssPlayer = ckplayerMark.format(fv.match(/VideoIDS=(\w+)/));
			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: ckplayerMark,
		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(\'#ckplayer\').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/],
		run: function(p, src, t) {
			var m = {'src': src};
			m.fvars = getFlashvars(p, 'flashVars').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="[^"]+/, 'wmode="gpu');
		//.replace(src, 'http://100.100.100.100/swf/sohu.swf');
			setPlayer(p, s);
		}
	}
];

function openFlashGPU(p) {
	if (!isPlayer(p)) return;
	'EMBED' === p.tagName ?
		p.setAttribute('wmode', 'gpu') :
		setObjectVal(p, 'wmode', 'gpu');
	flushPlayer(p);
}
function isPlayer(p) {
	console.log(p.width, p.height);
	if (p.width < 33 || p.height < 12)//也包括对百分比值设定的处理
		return !1;
	return 'EMBED' === p.tagName ?
		p.getAttribute('allowFullScreen') === 'true' :
		[].some.call(p.children, function(o) {
			console.log(o);
			return o.value === 'true' &&
			o.name.toLowerCase() === 'allowfullscreen';
		});
}
function flushPlayer(o) {
	delEvent();
	//chrome就刷body
	if (!window.chrome) return;
	o = doc.body;
	var s = o.style.display;
	o.style.display = 'none';
	setTimeout(function () {
		o.style.display = s;
	}, 9);
}
function delEvent() {
	doc.body.removeEventListener('animationstart', onAnimationStart);
	doc.body.removeEventListener('webkitAnimationStart', onAnimationStart);
	doc.body.removeEventListener('oAnimationStart', onAnimationStart);
	doc.head.removeChild(style);
}
function setPlayer(play, oHtml) {
	console.log('player new html: ', oHtml);
	delEvent();
	play.outerHTML = oHtml;
}
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, vName) {
	vName = vName || 'flashvars';
	return 'EMBED' === p.tagName ?
		p.getAttribute(vName) :
		p.children[vName].value;
}

function onAnimationStart(ev) {
	//ev.returnValue = !1;
	ev.cancelBubble = true;
	if (ev.animationName !== 'gAnimatAct') return true;
	var e = ev.target;//ev && ev.target || Event.srcElement
	console.log('AnimationStart:', ev, e);
	//防止OBJECT - EMBED结构重复处理
	if ('EMBED' === e.tagName && 'OBJECT' === e.parentNode.tagName)
		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)) {
				// if (v) a = v.match(t.varsMatch);
				// if (!a) a = addr.match(t.varsMatch);
				// console.log(a);
				if (v = v.match(t.varsMatch))
				setPlayer(e, t.swfMark.format(v));
			}
			return;
		}
	}
	openFlashGPU(e);
}
doc.body.addEventListener('animationstart', onAnimationStart, false);
doc.body.addEventListener('webkitAnimationStart', onAnimationStart, false);
doc.body.addEventListener('oAnimationStart', onAnimationStart, false);
}(document);