您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Remove ads, enlarge video, add video download links, block popups and stops autoplay keeping buffering
当前为
// ==UserScript== // @author Jack_mustang // @version 5.2 // @name ExtendRedTube // @description Remove ads, enlarge video, add video download links, block popups and stops autoplay keeping buffering // @date 2015 July 15 // @include *redtube.com* // @include *redtube.org* // @include *redtube.cz* // @include *redtube.es* // @include *redtube.fr* // @include *redtube.it* // @include *redtube.kr* // @include *redtube.pl* // @include *redtube.si* // @exclude *blog.redtube.com* // @run-at document-start // @grant none // @license Public Domain // @icon https://gmgmla.dm2301.livefilestore.com/y2phTdvWAn7a3fxjda6GWNCiS1ERegalgwxn5z-65SPxhpws5ISHa-Z8CHpmq18FPUOBm-3QJtCfOYFaiyM0Kji1MwBUy6mkxBLJtc5THpPtEU/ERT-logo.png // @namespace 44db8537bb6ac3d112dd3b5ec7b6b33b84aa5765 // ==/UserScript== var ExtendRT = function ExtendRedTube() { // Pop-up killer, we trick RT to think we are old Presto Opera, this kills the pop-ups if (!window.opera) window.opera = true //Inject blocker and CSS addStuff() window.addEventListener('DOMContentLoaded', function() { // Remove ads functions, comment these if you just want them hidden function removeQuery(query) { var ifr = document.querySelectorAll(query) if(ifr.length > 0) for(var i=0; i < ifr.length; i++) ifr[i].parentNode.removeChild(ifr[i]) } // Remove header ad removeQuery('#as_134') // Remove footer ad removeQuery('#as_131') // Remove right ad removeQuery('.sb') removeQuery('div.qb') // Remove below vid ad removeQuery('.bvq') removeQuery('.bvq-caption') // Remove iframe ads removeQuery("iframe") var remtab = document.querySelector(".fakeLinkTabber[rel=related-premium-videos]").parentNode if (remtab !== null) document.querySelector('.tabsElements').removeChild(remtab) if(document.getElementById('redtube_flv_player')) { // move right column if it exists if(document.querySelector(".video-page-right-col")) { var rightColumn = document.querySelector(".video-page-right-col"), rightColumnNode = rightColumn.cloneNode(true), contentHolder = document.querySelector(".content.pageVideos") contentHolder.removeChild(rightColumn) contentHolder.appendChild(rightColumnNode) } videoStuff() // Include thumbnail button tab var thumbtab = document.createElement("li") thumbtab.innerHTML = "<a style='cursor:pointer' class='fakeLinkTabber' onclick='$(\"div[class*=tab-content]\").css({\"display\": \"none\"});$(\"#tabsParent>ul li\").attr(\"class\",\"\");$(\"#tabsParent>ul li:last-child\").attr(\"class\",\"activeTab\");$(\"#tabsContentHolder\").attr(\"style\",\"display:none\");$(\"#tagger_thumbs\").attr(\"style\",\"\");$(\"#tabsContentHolder\").slideDown(\"slow\");'>Thumbnails</a>" var tabs = document.querySelector(".tabsElements") tabs.appendChild(thumbtab) // Add arrows to navigate var tabs = document.querySelector("#tabsParent .tabsElements").childNodes, l = tabs.length-1 var tabbar = document.getElementById('moreTopSearches').clientWidth, max = tabbar - tabs[l].offsetLeft - tabs[l].clientWidth - 40 if (max < -41) { function moveTabs(button, max) { console.log("lol") var tabs = document.querySelector("#tabsParent .tabsElements"), move = tabs.offsetLeft console.log(move+"\n"+max) if (button && move > max) tabs.setAttribute("style", "margin-left: "+(move-20)+"px") else if (!button && move < 0) tabs.setAttribute("style", "margin-left: "+(move+20)+"px") else clearInterval(mvTab) } var prev, next, moveTabFunc = document.createElement("script") moveTabFunc.setAttribute("type", "text/javascript") moveTabFunc.innerHTML = moveTabs.toString() document.getElementById("tabsParent").appendChild(moveTabFunc) prev = document.createElement("div") next = document.createElement("div") prev.innerHTML = "<" next.innerHTML = ">" prev.setAttribute("id", "ERT-prev") next.setAttribute("id", "ERT-next") prev.setAttribute("class", "ERT-nav") next.setAttribute("class", "ERT-nav") prev.setAttribute("onmouseout", "console.log('onMouseOut');clearInterval(mvTab)") next.setAttribute("onmouseout", "console.log('onMouseOut');clearInterval(mvTab)") prev.setAttribute("onmouseover", "mvTab = setInterval(function(){moveTabs(0, 0)}, 50)") next.setAttribute("onmouseover", "mvTab = setInterval(function(){moveTabs(1, "+max+")}, 50)") document.getElementById("moreTopSearches").appendChild(prev) document.getElementById("moreTopSearches").appendChild(next) } // Add, check thumbs exist, change location if needed and include div function changeServer(num) { var s = '0', table = '', source, nums = num + 1, vidId = location.pathname vidId = vidId.slice(1) vidId2 = vidId.slice(0, vidId.length -3) while(vidId.length < 7) vidId = '0' + vidId while(vidId2.length < 7) vidId2 = '0' + vidId2 switch(num) { case 0: source = 'img03' break case 1: source = 'thumbs.lsw' break case 2: source = 'img01' break case 3: source = 'img02' break case 4: source = 'img04' break } for(i=1; i<17; i++) { if(i == 10) s = '' table = table + '<td><img class="te" ' if(i == 1 && num < 4) table = table + 'onerror="changeServer('+ nums +');"' table = table + 'src="http://'+ source +'.redtubefiles.com/_thumbs/'+ vidId2 +'/'+ vidId +'/'+ vidId +'_0'+ s + i +'m.jpg" /></td>' if(i == 4 || i == 8 || i == 12) table = table + '</tr><tr>' } if(num == 0) { var node = document.createElement('div') node.setAttribute('id', 'tagger_thumbs') node.setAttribute('style', 'overflow:hidden;display:none') } else var node = document.getElementById('tagger_thumbs') node.innerHTML = '<table style="padding:30px 20px 20px"><tr>'+ table +'</tr></table>' if(num == 0) document.getElementById('tabsContentHolder').appendChild(node) }// Now inject this function var thumbscript = document.createElement("script") thumbscript.setAttribute("type", "text/javascript") thumbscript.innerHTML = changeServer.toString() + "changeServer(0);" document.body.appendChild(thumbscript) // Download videos without loggin-in, we need to wait both jQuery and $rt.bootstrap.queue to populate var downloadNow = document.createElement("script") downloadNow.setAttribute("type", "text/javascript") downloadNow.setAttribute("id", "ERT-CAPETA") downloadNow.innerHTML = "function downVids() {\n\ var dwVid = $rt.bootstrap.queue\n\ for (var i=0; i<dwVid.length; i++)\n\ if (dwVid[i].func == 'initVideoDownload')\n\ for (var j=dwVid[i].params.length-1; j>=0; j--)\n\ if (typeof(dwVid[i].params[j]) === 'object')\n\ var downLinks = dwVid[i].params[j]\n\ link = [downLinks.hd,\n\ downLinks.flv,\n\ downLinks.mobile],\n\ linkElem = [document.getElementById('download-link-hd'),\n\ document.getElementById('download-link-flv'),\n\ document.getElementById('download-link-mobile')]\n\ for (i=0;i<3;i++)\n\ if (linkElem[i] && linkElem[i].href == 'javascript:;')\n\ linkElem[i].href = link[i]\n\ }\n\ function redoitalltime() {\n\ (window.jQuery && $rt.bootstrap.queue) ? downVids() : setTimeout(redoitalltime, 200)\n\ }redoitalltime()" document.body.appendChild(downloadNow) } },false) function videoStuff() { if (!(document.querySelector("#redtube_flv_player embed") || document.querySelector("#redtube_flv_player video"))) return setTimeout(videoStuff, 50) // Scroll video to middle of page function scrollthere() { var vid = document.querySelector('.watch'), vh = vid.offsetHeight, vd = vid.offsetTop + document.querySelector('.pageVideos').offsetTop, fh = window.innerHeight, sc = vd-((fh-vh)/2) scrollTo(0, sc) }// Now inject this function var script = document.createElement("script") script.setAttribute("type","text/javascript") script.innerHTML = scrollthere.toString() + "scrollthere();" script.id = ("ERT-scrollVid") document.body.appendChild(script) // Include button in right corner to center video on screen; var node = document.createElement("div") node.setAttribute("style", "position:fixed; bottom:0; right:0; top:auto!important; height:15px; width:80px; cursor:pointer; background:#121212; padding:5px 10px; border:1px solid #202020; z-index: 10000") node.setAttribute("onclick", "scrollthere();") node.innerHTML = "Center video" document.body.appendChild(node) // Change player if (!(document.querySelector('#redtube_flv_player video')==null)) { var player = document.querySelector('#redtube_flv_player video') player.setAttribute("onerror", null) player.setAttribute("onclick", "var vid = event.target;if(vid.paused)vid.play();else vid.pause()") player.setAttribute("onmouseover", "event.target.controls = true") player.setAttribute("onmouseout", "event.target.controls = false") } if (!(document.querySelector('#redtube_flv_player embed')==null)) { var player = document.querySelector('#redtube_flv_player').parentNode, modPlayer = player.innerHTML modPlayer = modPlayer.replace(/autoplay=true/g,"autoplay=false&autoload=true") modPlayer = modPlayer.replace(/disablePauseroll=false/g,"disablePauseroll=true") modPlayer = modPlayer.replace(/disable_sharebar=false/g,"disable_sharebar=true") modPlayer = modPlayer.replace(/&pauseroll_url=http:\/\/ads(.*).php/g,"") player.innerHTML = modPlayer } } function addStuff() { // While <head> is not loaded we keep trying if (!document.querySelector("head")) return setTimeout(addStuff, 50) // We create an object and start including its content to include in DOM at the end. var ertcss = // Hide ads while we can't remove them "#as_130, #as_131, #as_134, .sb, div.qb, .bvq, .bvq-caption, iframe:not(#slidePanelContainerloginFrame) {\n\ display: none !important;\n\ visibility: hidden !important;\n\ opacity: 0 !important;\n\ height: 0 !important;\n\ overflow: hidden !important;\n\ width: 0 !important;\n\ }\n" + // Prevent background ad "body {\n\ background-color: #000 !important\n\ }\n" + // Make thumbs have 4 in every row "ul.video-listing.two-in-row {\n\ width: 100% !important;\n\ }\n\ ul.video-listing.two-in-row .first-in-row:nth-child(3) {\n\ clear: none;\n\ margin-left: 25px;\n\ }\n\ .videoThumbs.three-in-row + .videoThumbs.five-in-row {\n\ display: inline-block;\n\ margin-top: -228px\n\ }\n\ .videoThumbs.three-in-row + .videoThumbs.five-in-row li:first-of-type{\n\ margin-left: 190px !important\n\ }\n\ .videoThumbs > li {\n\ clear: none !important;\n\ margin: 0 9px 20px 0 !important\n\ }\n\ ul.videoThumbs {\n\ width: auto !important\n\ }\n" + /* PornStars page */ "ul.pornStarsThumbs.four-in-row, .pornstar-videos .video-listing.one-in-row {\n\ width: 100% !important\n\ }\n\ .pornStarsThumbs.four-in-row > li {\n\ clear: none !important;\n\ margin: 0 8px 20px 0 !important\n\ }\n\ .pornStarsThumbs.four-in-row > li:last-child {\n\ margin-right: 0 !important;\n\ }\n\ .pornstar-videos .video-listing.one-in-row li.first-in-row {\n\ clear: none !important;\n\ margin-right: 25px !important\n\ }\n" + /* Video Page */ // Enlarge player ".video-wrap, .watch, .videoPlayer, #redtubeplayer, #posterHolder, #html5_vid video {\n\ width: 100% !important\n\ }\n\ .videoPlayer, #redtube_flv_player, #redtubeplayer, #html5_vid video, #vidImgPoster {\n\ height: 547.3px !important;\n\ }\n\ #vidImgPoster {\n\ position: static !important;\n\ width: auto;\n\ }\n\ #posterHolder #playBtn {\n\ position: absolute !important;\n\ margin: 0 !important;\n\ top: 40%;\n\ left: 45%;\n\ }\n\ .video-wrap h1.videoTitle {\n\ width: 800px !important\n\ }\n\ .moreTopSearches {\n\ overflow: hidden;\n\ }\n\ .moreTopSearches .topSearch ul.tabsElements li:first-child {\n\ margin-left: 40px !important;\n\ }\n\ .moreTopSearches .topSearch ul.tabsElements {\n\ transition: margin-left 50ms linear;\n\ width: 150% !important;\n\ }\n\ .ERT-nav {\n\ background: #121212;\n\ box-shadow: 0 0 25px 15px #121212;\n\ cursor: pointer;\n\ font-size: 40px;\n\ padding: 0 5px;\n\ position: absolute;\n\ }\n\ .ERT-nav:hover {\n\ color: #FFF;\n\ }\n\ .ERT-nav:last-child {\n\ right: 0;\n\ }\n" + /* Image galleries list */ ".albumThumbs.three-in-row {\n\ width: 100% !important\n\ }\n\ .albumThumbs.three-in-row li:nth-of-type(4) {\n\ clear: none !important;\n\ margin-left: 31px !important\n\ }\n" + /* Other random pages */ // API "#wrapper {\n\ background: #FFF !important\n\ }\n" // Inject created CSS var ertnode = document.createElement("style") ertnode.type = "text/css" ertnode.id = "ERT-style" ertnode.appendChild(document.createTextNode(ertcss)) document.head.appendChild(ertnode) } }();