您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Remove ads, enlarge video, add video download links, block popups and stops autoplay keeping buffering
// ==UserScript== // @author Jack_mustang // @version 6.0 // @name ExtendRedTube // @description Remove ads, enlarge video, add video download links, block popups and stops autoplay keeping buffering // @date 2017 October 3 // @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* // @exclude *api.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== // Block popups fallback function NoOpen() { return 1; } parent.open = NoOpen; this.open = NoOpen; window.open = NoOpen; open = NoOpen; window.open = function () { return; }; open = function () { return; }; this.open = function () { return; }; parent.open = function () { return; }; function fnull() { return null; } // Block ads Object.defineProperty(window, "adDelivery", { get: fnull, set: fnull }); Object.defineProperty(window, "tj_ads", { get: fnull, set: fnull }); Object.defineProperty(window, "tj_channels", { get: fnull, set: fnull }); // stop autoplay Object.defineProperty(window, "MHP1138", { set: function (e) { if (!!e.players.redtube_flv_player) { e.players.redtube_flv_player.autoplay = false; e.players.redtube_flv_player.autoPlayVideo.enabled = false; e.players.redtube_flv_player.flashSettings.autoplay = false; } window.MHP1138a = e; }, get: function () { return window.MHP1138a; } }); // Inject CSS (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 ".tja,\ .tj_ads_remove,\ #slidePanelContainerAB,\ .footerAd,\ .bvq,\ .bvq-caption {\ display: none !important;\ visibility: hidden !important;\ opacity: 0 !important;\ height: 0 !important;\ overflow: hidden !important;\ width: 0 !important;\ }" + // Prevent background ad "body {\ background-color: #000 !important;\ }" + // Make thumbs have 4 in every row "#home_page_section_c,\ #community_section_b {\ display: none;\ }\ ul.video-listing.two-in-row {\ width: 100% !important;\ }\ ul.video-listing.two-in-row .first-in-row:nth-child(3) {\ clear: none;\ margin-left: 25px;\ }" + // Porstar page ".pornstar-small-info,\ .close-button,\ .show-less-link {\ display: none !important\ }\ .pornstar-highlight {\ background: none !important;\ margin-bottom: -390px !important;\ width: auto !important;\ z-index: 2;\ }\ .pornstar-details-subscribe {\ margin-right: 0 !important;\ padding-left: 235px\ }\ .pornstar-all-info {\ float: right !important;\ width: 485px !important;\ }\ .pornstar-highlight-more {\ display: block !important\ }" + // PornStars page "ul.pornStarsThumbs.four-in-row {\ width: 100% !important\ }\ .pornStarsThumbs.four-in-row > li {\ clear: none !important;\ margin: 0 8px 20px 0 !important\ }\ .pornStarsThumbs.four-in-row > li:last-child {\ margin-right: 0 !important;\ }" + // Gallery ".gallery-listing.three-in-row .first-in-row {\ clear: none !important;\ margin-left: 24px !important;\ }\ .galleriesTable .pages {\ padding: 45px 0 125px 100px;\ }\ .gallery-listing.three-in-row li:last-child {\ position: absolute;\ bottom: 135px;\ margin-left: 0 !important;\ }" + // Video Page // Enlarge player ".video-wrap,\ .watch,\ .videoPlayer {\ width: 100% !important;\ }\ .videoPlayer {\ height: auto !important;\ }\ .mhp1138_container .mhp1138_videoWrapper,\ .mhp1138_container .mhp1138_videoWrapper video {\ height: auto !important;\ position: static !important;\ }" + // Change pause button "#pb_template > :not(.mhp1138_playerStateIcon) {\ display: none;\ }"; // 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); }()); (function ExtendRedTube() { function videoStuff() { // Scroll video to middle of page function scrollthere() { var vid = document.querySelector(".watch"); var vh = vid.offsetHeight; var vd = vid.offsetTop + document.querySelector("#contentHolder").offsetTop; var fh = window.innerHeight; var sc = vd - ((fh - vh) / 2); console.log(vd); scrollTo(0, sc); } // Now inject this function var script = document.createElement("script"); script.setAttribute("type", "text/javascript"); script.innerHTML = scrollthere.toString(); script.id = ("ERT-scrollVid"); document.head.appendChild(script); window.setTimeout(scrollthere, 500); // Keyboard Shortcut for centring window.addEventListener("keyup", function (e) { if (e.ctrlKey && e.altKey && (e.code === "KeyC" || (e.code === undefined && e.keyCode === 67))) { scrollthere(); } }, false); // 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;" + "cursor: pointer;" + "background: #121212;" + "padding: 5px 10px;" + "border: 1px solid #202020;" + "z-index: 10000"); node.setAttribute("onclick", "scrollthere();"); node.setAttribute("title", "Use the keyboard shortcut Ctrl+Alt+C (For other keyboard layouts use the key where C should be on the QWERTY layout)"); node.innerHTML = "Centre"; document.body.appendChild(node); // Download withouth being logged if (!!document.querySelector("#download-link-hd")) { node = document.querySelector("#download-link-hd"); node.parentNode.appendChild(node.cloneNode()); node.parentNode.lastElementChild.innerText = node.innerText.match(/[^\n]+/)[0]; node.parentNode.removeChild(node); } if (!!document.querySelector("#download-link-480p")) { node = document.querySelector("#download-link-480p"); node.parentNode.appendChild(node.cloneNode()); node.parentNode.lastElementChild.innerText = node.innerText.match(/[^\n]+/)[0]; node.parentNode.removeChild(node); } if (!!document.querySelector("#download-link-mobile")) { node = document.querySelector("#download-link-mobile"); node.parentNode.appendChild(node.cloneNode()); node.parentNode.lastElementChild.innerText = node.innerText.match(/[^\n]+/)[0]; node.parentNode.removeChild(node); } // Thumbnail tabs var remtab = document.querySelector(".fakeLinkTabber[rel=related-premium-videos]").parentNode; if (!remtab) { document.querySelector(".tabsElements").removeChild(remtab); } } var observer = new MutationObserver(function (changes) { changes.forEach(function (chg) { if (chg.target.id === "redtube_flv_player") { chg.addedNodes.forEach(function (element) { if (!!element && element.id === "pb_template") { var node = document.createElement("div"); node.className = "mhp1138_playerStateIcon"; node.setAttribute("style", "opacity: 1"); node.innerHTML = "<div class='mhp1138_play' style='display: block'>" + " <div class='mhp1138_icon mhp1138_icon-play'></div>" + "</div>" + "<div class='mhp1138_background'></div>"; element.appendChild(node); videoStuff(); } }); } }); }); // starts the mutation observer observer.observe(document, {childList: true, subtree: true}); }());