您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Thanks to OpenGG, Harv.c, KaFan15536900
// ==UserScript== // @name Onens.Clean.Player // @namespace http://onens.com/ // @description Thanks to OpenGG, Harv.c, KaFan15536900 // @version 2.3.5 // @include http://*/* // @include https://*/* // @grant GM_xmlhttpRequest // @run-at document-end // ==/UserScript== Function.prototype.bind = function() { var fn = this, arg = Array.prototype.slice.call(arguments), obj = arg.shift(); return function() { return fn.apply(obj, arg.concat(Array.prototype.slice.call(arguments))); }; }; String.prototype.sprintf = function() { var str = this.toString(), arg = Array.prototype.slice.call(arguments); if (arg.length) for (var i in arg) str = str.replace('%s', arg[i]); return str; }; var OCPlayer = { done: [], host: 'http://code.taobao.org/svn/ocp/trunk/player/', rule: [{ // YOUKU_COM find: /http:\/\/static\.youku\.com(\/v[\d\.]*)?\/v\/swf\/q?(player|loader)([^\.]+)?\.swf/i, replace: 'loader.swf' }, { // YOUKU_OUT find: /http:\/\/player\.youku\.com\/player\.php\/.*sid\/([\w=]+).*(\/v)?\.swf.*/i, replace: 'loader.swf?showAd=0&VideoIDS=$1' }, { // KU6_COM find: /http:\/\/player\.ku6cdn\.com\/default\/.*\/\d+\/(v|player)\.swf/i, replace: 'ku6.swf' }, { // KU6_OUT find: /http:\/\/player\.ku6\.com\/(inside|refer)\/([^\/]+)\/v\.swf.*/i, replace: 'ku6_out.swf?vid=$2' }, { // IQIYI_COM // find: /http:\/\/www\.iqiyi\.com\/(player\/\d+\/Player|common\/flashplayer\/\d+\/(Main|Coop|Share|Enjoy)?Player_?.*)\.swf/i, find: /http:\/\/www\.iqiyi\.com\/(player\/(\d+\/Player|[a-z0-9]*)|common\/flashplayer\/\d+\/(((PPS)?Main|Share|Enjo.)?Player[^\.]*|1355f98c2359))\.swf/i, replace: function(el, find) { var url = 'iqiyi.swf'; if (!/(^((?!baidu|61|178).)*\.iqiyi\.com|pps\.tv)/i.test(window.location.host)) url = 'iqiyi_out.swf'; else if (document.querySelector('span[data-flashplayerparam-flashurl]')) url = 'iqiyi5.swf'; this.Reload.bind(this, el, find, url)(); } // }, { // IQIYI_P2PCORE // find: /^http:\/\/www\.iqiyi\.com\/common\/flashplayer\/(?!20151119)\d+\/30.*\.swf/i, // replace: 'http://www.iqiyi.com/common/flashplayer/20151119/3022.swf' }, { // IQIYI_BILIBILI find: /http:\/\/www\.bilibili\.tv\/iqiyi\.swf/i, replace: 'iqiyi.swf' }, { // IQIYI_PPS find: /http:\/\/www\.iqiyi\.com\/common\/.*\/pps[\w]+.swf/i, replace: 'iqiyi_out.swf' }, { // IQIYI_OUT find: /http:\/\/(player|dispatcher)\.video\.i?qiyi\.com\/(.*[\?&]vid=)?([^\/&]+).*/i, replace: function(el, find) { var url = 'iqiyi_out.swf?vid=$3', match = (el.data || el.src).match(/(autoplay)=\d+/ig); if (match) url += '&' + match.join('&'); this.Reload.bind(this, el, find, url)(); } }, { // TUDOU_COM find: /http:\/\/js\.tudouui\.com\/.*PortalPlayer[^\.]*\.swf/i, replace: 'tudou.swf' }, { // TUDOU_OLC find: /http:\/\/js\.tudouui\.com\/.*olc[^\.]*\.swf/i, replace: 'http://code.taobao.org/svn/ocp/trunk/player/olc_8.swf' }, { // TUDOU_SP find: /http:\/\/js\.tudouui\.com\/.*SocialPlayer_[^\.]*\.swf$/i, replace: 'http://code.taobao.org/svn/ocp/trunk/player/sp.swf' }, { // LETV_COM find: /http:\/\/.*letv[\w]*\.com\/(hz|.*\/((?!(Live|seed|Disk))(S[\w]{2,3})?(?!Live)[\w]{4}|swf))Player*\.swf\/?\??/i, replace: function(el, find) { /^v\.baidu\.com/i.test(window.location.host) || this.Reload.bind(this, el, find, 'http://code.taobao.org/svn/ocp/trunk/player/letv.swf?')(); } }, { // LETV_COM find: /http:\/\/.*letv[\w]*\.com\/.*\/(letv-wrapper|letvbili|lbplayer)\.swf/i, replace: 'letv.swf' // }, { // LETV_SKIN // find: /http:\/\/.*letv[\w]*\.com\/p\/\d+\/\d+\/(?!15)\d*\/newplayer\/\d+\/S?SLetvPlayer\.swf/i, // replace: 'http://player.letvcdn.com/p/201407/24/15/newplayer/1/SSLetvPlayer.swf' }, { // LETV_CLOUD find: /http:\/\/assets\.dwstatic\.com\/.*\/vpp\.swf/i, replace: 'http://yuntv.letv.com/bcloud.swf' }, { // LETV_OUT find: /http:\/\/.*letv\.com\/player\/swfplayer\.swf(\?.*)/i, replace: 'letv.swf$1' }, { // PPLIVE find: /http:\/\/player\.pplive\.cn\/ikan\/.*\/player4player2\.swf/i, replace: 'player4player2.swf' }, { // SOHU_COM find: /http:\/\/(tv\.sohu\.com\/upload\/swf\/(p2p\/)?\d+|(\d+\.){3}\d+\/webplayer)\/(Main|PlayerShell)\.swf/i, replace: 'sohu/sohu_live.swf' }], extra: [{ // TUDOU_OUT find: /http:\/\/www\.tudou\.com\/.*(\/v\.swf)?/i, replace: function(el, find) { if (/firefox/i.test(navigator.userAgent)) { GM_xmlhttpRequest({ url: el.data || el.src, method: 'HEAD', onload: function(response) { var url = response.finalUrl; if (url) { url = url.replace(/http:\/\/js\.tudouui\.com\/.*?\/olc_[^.]*?\.swf/i, this.host + 'olc_8.swf'); url = url.replace(/http:\/\/js\.tudouui\.com\/.*?\/SocialPlayer_[^.]*?\.swf/i, this.host + 'sp.swf'); this.Reload.bind(this, el, find, url)(); } }.bind(this) }); } } }], init_css: 'object,embed{-webkit-animation-duration:.001s;-webkit-animation-name:playerInserted;-ms-animation-duration:.001s;-ms-animation-name:playerInserted;-o-animation-duration:.001s;-o-animation-name:playerInserted;animation-duration:.001s;animation-name:playerInserted;}@-webkit-keyframes playerInserted{from{opacity:0.99;}to{opacity:1;}}@-ms-keyframes playerInserted{from{opacity:0.99;}to{opacity:1;}}@-o-keyframes playerInserted{from{opacity:0.99;}to{opacity:1;}}@keyframes playerInserted{from{opacity:0.99;}to{opacity:1;}}', tips_css: '.ocplayer_tips{font:12px Arial, Verdana;padding:0 8px;cursor:default;border:1px solid #d5d5d5;line-height:25px;opacity:.2;background:#f5f5f5;position:fixed;right:0;bottom:-1px;z-index:999999}.ocplayer_tips:hover{opacity:.8}', tips_html: '<span style="color:green">Onens.Clean.Player \u5DF2\u542F\u7528</span> <a href="http://gesion.duapp.com/script/onens.clean.player.user.js" style="color:red" title="\u5347\u7EA7\u65B0\u7248" target="_blank">\u5347\u7EA7</a> <a href="http://blog.onens.com/onens-clean-player.html" style="color:blue" title="\u53CD\u9988\u95EE\u9898" target="_blank">\u53CD\u9988</a> <a href="http://blog.onens.com/donation" style="color:orange" title="\u6350\u52A9\u9879\u76EE" target="_blank">\u6350\u52A9</a> <a href="javascript:;" class="tips_close" style="color:gray" title="\u9690\u85CF\u63D0\u793A">\u9690\u85CF</a>', Handler: function(e) { if (e.animationName != 'playerInserted') return; var el = e.target; if (this.done.indexOf(el) != -1) return; this.done.push(el); var player = el.data || el.src; if (!player) return; for (var i in this.rule) { var find = this.rule[i]['find']; if (find.test(player)) { var replace = this.rule[i]['replace']; if (typeof replace == 'function') this.flag ? replace.bind(this, el, find)() : this.list.push(replace.bind(this, el, find)); else this.flag || this.Reload.bind(this, el, find, replace)(); break; } } }, Reload: function(el, find, replace) { // replace = /^https?:\/\//i.test(replace) ? replace : (this.flag ? chrome.extension.getURL('player/' + replace) : this.host + replace); replace = /^https?:\/\//i.test(replace) ? replace : this.host + replace; el.data && (el.data = el.data.replace(find, replace)) || el.src && ((el.src = el.src.replace(find, replace)) && (el.style.display = 'block')); var next = el.nextSibling, node = el.parentNode, elem = el.cloneNode(true); this.done.push(elem); if (node) { node.removeChild(el); next ? node.insertBefore(elem, next) : node.appendChild(elem); } this.flag || this.Tips(); }, Script: function() { this.rule = this.rule.concat(this.extra); var events = ['webkitAnimationStart', 'msAnimationStart', 'oAnimationStart', 'animationstart']; for (var i in events) document.addEventListener(events[i], this.Handler.bind(this), false); }, Style: function(css) { var style = document.createElement('style'); style.setAttribute('type', 'text/css'); style.innerHTML = css || this.init_css; document.getElementsByTagName('head')[0].appendChild(style); }, Timer: function() { this.list = []; setInterval(function() { this.list.length && this.list.shift()(); }.bind(this), 100); }, Tips: function() { if (this.done.indexOf('tips') != -1) return; this.done.push('tips'); this.Style(this.tips_css); var div = document.createElement('div'); div.className = 'ocplayer_tips'; div.innerHTML = this.tips_html; div.querySelector('.tips_close').addEventListener('click', function(e) { e.stopPropagation && e.stopPropagation(); e.preventDefault && e.preventDefault(); div.parentNode.removeChild(div); }, false); (document.documentElement || document.body).appendChild(div); }, Chrome: function() { chrome.windows.onFocusChanged.addListener(function(winId) { this.Icon(); }.bind(this)); chrome.tabs.onSelectionChanged.addListener(function(tabId) { this.Icon(); }.bind(this)); chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { changeInfo.status == 'complete' && this.Icon(); }.bind(this)); chrome.webRequest.onBeforeRequest.addListener(function(details) { if (details.tabId == -1) return; var url = details.url; for (var i in this.rule) { var find = this.rule[i]['find']; if (find.test(url)) { chrome.tabs.get(details.tabId, function(tab) { var key = this.Tab(tab); key && this.done.push(key); this.Icon(); }.bind(this)); var replace = this.rule[i]['replace']; if (typeof replace == 'string') { // replace = /^https?:\/\//i.test(replace) ? replace : chrome.extension.getURL('player/' + replace); replace = /^https?:\/\//i.test(replace) ? replace : this.host + replace; } else { break; } return { redirectUrl: url.replace(find, replace) }; } } return { cancel: false }; }.bind(this), { urls: ['<all_urls>'] }, ['blocking']); }, Youku: function() { chrome.webRequest.onCompleted.addListener(function(details) { chrome.cookies.set({ url: details.url, name: 'view', value: '0', path: '/', domain: '.youku.com' }); }, { urls: ['http://*.youku.com/*'], types: ['main_frame'] }); }, Icon: function() { chrome.tabs.getSelected(null, function(tab) { var key = this.Tab(tab); if (!key) return; var path, title; if (this.done.indexOf(key) != -1) { path = 'images/icon-22.png'; title = 'Onens.Clean.Player \u5DF2\u542F\u7528'; } else { path = 'images/icon-22-gray.png'; title = 'Onens.Clean.Player \u672A\u542F\u7528'; } chrome.browserAction.setIcon({ path: path }); chrome.browserAction.setTitle({ title: title }); }.bind(this)); }, Tab: function(tab) { return typeof tab == 'object' ? tab.windowId + '|' + tab.id + '|' + tab.url : false; }, Init: function() { this.flag = typeof GM_xmlhttpRequest == 'undefined'; if (this.flag) { if (!/^https?:\/\//i.test(window.location.href)) { this.Youku(); this.Chrome(); } else { this.Script(); } } else { this.Timer(); this.Style(); this.Script(); } } }; OCPlayer.Init();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址