您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Filter out users and channels from search with GUI. Include Auto-Paging and ScreenShot Links.
当前为
// ==UserScript== // @name [TS] Youtube Filter // @namespace TimidScript // @version 1.1.28 // @description Filter out users and channels from search with GUI. Include Auto-Paging and ScreenShot Links. // @icon https://i.imgur.com/E2wQ6Xm.gif // @author TimidScript // @homepageURL https://openuserjs.org/users/TimidScript // @copyright © 2014 TimidScript, All Rights Reserved. // @license Creative Commons BY-NC-SA + Please notify me if distributing // @include *//www.youtube.* // @exclude *//www.youtube.*/embed/* // @require https://openuserjs.org/src/libs/TimidScript/TSL_-_GM_Update.js // @require https://openuserjs.org/src/libs/TimidScript/TSL_-_Generic.js // @homeURL https://openuserjs.org/scripts/TimidScript/[TS]_Youtube_Filter // @grant GM_xmlhttpRequest // @grant GM_info // @grant GM_getMetadata // @grant GM_getValue // @grant GM_setValue // @grant GM_deleteValue // @grant GM_registerMenuCommand // ==/UserScript== /* Information ******************************************************************************************** Copyright © 2014 TimidScript, All Rights Reserved. Script's Homepage: Check homepages below TimidScript's Homepage: https://openuserjs.org/users/TimidScript https://greatest.deepsurf.us/users/1455-timidscript https://monkeyguts.com/author.php?un=timidscript http://userscripts.org/users/TimidScript http://userscripts-mirror.org/users/TimidScript Known Issues: - Support for paged front page is not implemented as it seems to cause infinite loop ---------------------------------------------- Version History ---------------------------------------------- 1.1.29 (2015-04-06) - Bug Fix: Removed monitor of search result - Bug Fix: Search results checks item count before parsing. 1.1.28 (2015-04-04) - Bug Fix: Now able to pickup changes in main page and by extension search result page. 1.1.27 (2015-01-18) - Bug fixes to changes in youtube layout (front page and user channel) - Bug fix filter button added to the side of video panel - Added script setting to change the icon size. Search for "VYCS" to get to the Section - Changed the scroll functionality - Generic Library added - Show all video setting is now stored 1.0.26 (2015-01-04) - Bug fix to front page due to changes in youtube 1.0.25 (2014-12-11) - Delay to handle delayed video recommendations 1.0.24 (2014-08-29) - Added GM_update 1.0.23 (2014-08-19) - Cleaned up header for OUJS 1.0.22 (2014-07-16) - @exclude iframe embed videos 1.0.21 (2014-07-15) - Added image link to channel videos - Added necessary @grant header - Altered the CSS - Remove MutationObserver from most page types 1.0.20 (2014-07-03) - Bug Fix: Fixed issues caused by change in youtube layout - Added option to turn off auto-paging - Removed img.youtube include 1.0.19 (2014-06-14) - Scrollable FilterWindow - Use port 8080 for require on userscripts.org 1.0.18 (2014-06-07) - Bug fix on pager when spelling correction is applied 1.0.17 (2014-05-31) - Updated so main page includes "Recommended" in the filter 1.0.16 (2014-05-30) - Modified CSS and link text 1.0.15 (2014-05-25) - Moved options button beside upload button if it exists. 1.0.14 (2014-05-21) - Bug Fix: Not checking for maxresdefault.jpg. 1.0.13 (2014-05-20) - Video screenshot link now points to "hqdefault.jpg" by default. Checks if "maxresdefault.jpg" and re-links if necessary 1.0.12 (2014-05-17) - Added link to max res screenshot 1.0.11 (2014-05-09) - Made options button invisible unless you hover over top, right corner. 1.0.10 (2014-03-28) - Updated broken script due to changes in youtube 1.0.9 (2014-01-16) - Bug not getting page type when type changes. 1.0.8 (2014-01-01) - Option button alternates filter window display 1.0.7b (2013-12-21) - Removed redundant code - Highlights blocked users and options buttonQ - Button now is an Icon - Bug fixes due to changes in Youtube - Captures changes in URL 1.0.6 - Added block button on all thumbnails - Information stored now only contains the name of the user-channel and nothing else 1.0.5 - Main X button now also removes filter 1.0.4 - Colours added 1.0.3 (2013-10-16) - Extended the filter to work on main page 1.0.2 (2013-08-25) - Bug Fix: Filter observer added 1.0.1 (2013-08-24) - Initial Release ********************************************************************************************/ /************** [VYCS] Variable you can set **************/ //CSS Style for video page. It uses smaller text and icon for the block button and image link //GM_setValue("PageType2",".blockBox .blockBTN32 {width: 24px; height: 24px;} .blockBox a {font-size: 10px;}" // + "body #watch7-sidebar-contents {padding: 15px 0px 15px 5px !important;}" // + "#watch7-sidebar-contents .video-list-item.related-list-item {padding-right: 24px;}"); //CSS Style that limites the size of the search list width, if increased by "Youtube Center" //GM_setValue("PageType1",".ytcenter-site-search .yt-card.clearfix{width: 700px !important;}"); /**************************************************/ if (window.self !== window.top) return; console.info("Youtube Filter"); var intervalID; var AutoPaging = GM_getValue("AutoPaging",true); //0 Main Page; 1 Search Result; 2 Video Page; 3 Channel Video Page var PageTYPE = null; //Video Page var FilteredUsers = new Array(); //***************** /// function IsMouseEventInClientArea(event, element) { var rect = element.getBoundingClientRect(); var minX = rect.left + element.clientLeft; var x = event.clientX; if (x < minX || x >= minX + element.clientWidth) return false; var minY = rect.top + element.clientTop; var y = event.clientY; if (y < minY || y >= minY + element.clientHeight) return false; return true; } function GetPageType() { PageTYPE = null; if (document.URL.match(/\.youtube\.[^\/]+\/?$/i)) PageTYPE = 0; //Main Page else if (document.URL.match(/youtube\.[^\/]+\/result/gi)) PageTYPE = 1; //Search Result else if (document.URL.match(/youtube\.[^\/]+\/watch/gi)) PageTYPE = 2; //Video Page else if (document.URL.match(/youtube\.[^\/]+\/(user|channel)\/.+\/videos/gi)) PageTYPE = 3; //User Channel } function GetUserData(link) { var user = new Object(); user.name = link.textContent; user.url = link.href.replace(/.+youtube\.[a-z]+/, ""); return user; } function IsFilteredUser(user) { var userFilters = GetFilters(); for (var i = 0; i < userFilters.length; i++) { if (userFilters[i] == user) return true; } return false; } function BlockUser(e) { e.stopImmediatePropagation(); console.log(this); var user = this.title; if (!IsFilteredUser(user)) { var filters = GetFilters(); filters.push(user); GM_setValue("Filters", JSON.stringify(filters)); } HideUnwantedUsers(); if (document.getElementById("FilterWindow")) CreateFilterWindow(); return false; } function CreateScreenshotLink(videoID) { var ss = document.createElement("a"); ss.textContent = "[SH]"; ss.href = "https://img.youtube.com/vi/" + videoID + "/hqdefault.jpg"; GM_xmlhttpRequest( { url: "https://img.youtube.com/vi/" + videoID + "/maxresdefault.jpg", method: "HEAD", onload: function (response) { if (response.status == 200) { //var contentLength = parseInt(response.responseHeaders.replace(/(Content-Length: (\d+)|.*\r?)/gi, "$2")); ss.href = "https://img.youtube.com/vi/" + videoID + "/maxresdefault.jpg"; ss.textContent = "[SM]"; } } }); return ss; } function AddBlockButton(li) { var btn = document.createElement("span"); btn.className = "blockBTN32"; if (PageTYPE == 1) btn.title = li.getElementsByClassName("g-hovercard")[0].textContent; else btn.title = li.getElementsByClassName("g-hovercard")[1].textContent; var span = document.createElement("span"); if (PageTYPE == 2) { span.setAttribute("style","position:absolute; right:0px;"); li.insertBefore(span, li.firstElementChild); } else { span.setAttribute("style","float:right;"); li.firstElementChild.insertBefore(span, li.firstElementChild.firstElementChild); } btn.onclick = BlockUser; span.appendChild(btn); span.className = "blockBox"; var href = li.getElementsByTagName("a")[0].href; if (href.indexOf("/watch?v=") > 0) { var ss = CreateScreenshotLink(href.replace(/.+watch\?v=(([a-z0-9]|_|-)+).*/gi,"$1")); ss.setAttribute("style","display:block;text-align:center;"); span.appendChild(ss); } } function NextPageURL() { var pager = document.getElementsByClassName('yt-uix-pager')[0]; if (!pager) return null; var nextpage = pager.getElementsByClassName("yt-uix-button-toggled")[0].nextElementSibling; if (!nextpage) return null; return nextpage.href; } function ScrollCheck() { var pager = document.getElementsByClassName('yt-uix-pager')[0]; var loc = pager.offsetTop + pager.offsetHeight - document.documentElement.offsetHeight; if (loc < document.documentElement.scrollTop) { clearInterval(intervalID); var url = NextPageURL(); var xhr = new XMLHttpRequest(); xhr.open("GET", url, true); xhr.responseType = "document"; xhr.onload = function (e) { var pager = document.getElementsByClassName('yt-uix-pager')[0]; var doc = xhr.response; var pagerNew = doc.getElementsByClassName('yt-uix-pager')[0]; pager.outerHTML = pagerNew.outerHTML; var result = document.getElementsByClassName("item-section")[0]; var resultNew = doc.getElementsByClassName("item-section")[0]; //Removes spell correction from result if (resultNew.getElementsByClassName("spell-correction")[0]) { resultNew.removeChild(resultNew.getElementsByClassName("spell-correction")[0].parentElement); } var lis = resultNew.children; while (lis.length > 0) { var li = lis[0]; result.appendChild(li); var imgs = li.getElementsByTagName("img"); for (var i = 0; i < imgs.length; i++) { var src = imgs[i].getAttribute("data-thumb"); if (src) imgs[i].src = src; } AddBlockButton(li); } HideUnwantedUsers(); setTimeout(EnablePager, 1500); }; xhr.send(); } } function EnablePager() { if (AutoPaging && NextPageURL()) intervalID = setInterval(ScrollCheck, 500); else clearInterval(intervalID); } function HideUnwantedUsers() { FilteredUsers = new Array(); if (PageTYPE == 0) //Main Page { //var items = document.getElementsByClassName("channels-content-item"); var items = document.getElementsByClassName("yt-lockup-video"); for(var i = 0; i < items.length; i++) { var thumbdata = items[i], user = thumbdata.querySelector(".yt-uix-sessionlink.spf-link.g-hovercard").textContent, filtered = IsFilteredUser(user), notice = thumbdata.parentNode.querySelector(".banNotice"); if (filtered && !notice) { FilteredUsers.push(user); TSL.addClass(thumbdata,"blockedVideoBG"); notice = document.createElement("div"); notice.className = "banNotice"; notice.style.left = thumbdata.offsetLeft + "px"; notice.style.height = thumbdata.clientHeight + "px"; notice.style.width = thumbdata.clientWidth + "px"; notice.setAttribute("name","YTF"); var txt = document.createElement("span"); txt.textContent = user; txt.style.height = thumbdata.clientHeight + "px"; txt.style.width = thumbdata.clientWidth + "px"; notice.appendChild(txt); thumbdata.parentNode.insertBefore(notice, thumbdata); } else if (!filtered && notice) { TSL.removeClass(thumbdata,"blockedVideoBG"); TSL.removeNode(notice); } } } else //Search Result & Video Page { var results, user; if (PageTYPE == 1) results = document.getElementsByClassName("item-section")[0].children; else results = document.getElementsByClassName("video-list-item"); for (var i = 0; i < results.length; i++) { try { var vid = results[i]; if (vid.getElementsByClassName("g-hovercard").length == 0) continue; if (PageTYPE == 1) user = vid.getElementsByClassName("g-hovercard")[0].textContent; else user = vid.getElementsByClassName("g-hovercard")[1].textContent; var filtered = IsFilteredUser(user); if (filtered) { FilteredUsers.push(user); TSL.addClass(vid,"blockedVideo"); } else { TSL.removeClass(vid,"blockedVideo"); } } catch (e) { console.warn(e); } } } if (FilteredUsers.length > 0) TSL.addStyle("OptSelect","#OptionsButton, #OptionsButton2{background-color: #FBE8E5;} #OptionsButton:hover{background-color: #FBD5CF}"); else TSL.removeNode("OptSelect"); } function GetFilters() { var filters = GM_getValue("Filters", null); if (!filters) return new Array(); return JSON.parse(filters); } function ShowAllVideos() { if (Boolean(GM_getValue("ShowAllVideos",false))) { TSL.removeNode("BlockVideos"); TSL.addStyle("ShowAllVideos",".banNotice {display: none;}"); } else { TSL.addStyle("BlockVideos",".blockedVideo {display:none;}"); TSL.removeNode("ShowAllVideos"); } } function CreateFilterWindow() { var fwin = document.getElementById("FilterWindow"); if (fwin) TSL.removeNode(fwin); var userFilters = GetFilters(); fwin = document.createElement("span"); var tbHolder = document.createElement("div"); tbHolder.setAttribute("style","overflow-x:hidden; overflow-y:auto; max-height: 500px;"); var table = document.createElement("table"); table.style.maxHeight tbHolder.appendChild(table); fwin.appendChild(tbHolder); for (var i = 0; i < userFilters.length; i++) { var user = userFilters[i]; var btn = document.createElement("a"); btn.className = "unblockBTN"; btn.title = user; btn.onclick = function (e) { e.stopImmediatePropagation(); var user = this.title; var filters = GetFilters(); for(var i = 0; i < filters.length; i++) { if (filters[i] == user) { filters.splice(i,1); GM_setValue("Filters", JSON.stringify(filters)); break; } } TSL.removeNode(this.parentElement.parentElement); HideUnwantedUsers(); }; var r = table.insertRow(-1); var td = document.createElement("td"); r.appendChild(td); td.appendChild(btn); var a = document.createElement("a"); a.href = "results?search_query=" + user + "&sm=3"; var d = document.createElement("div"); d.textContent = user; for(var j = 0; j < FilteredUsers.length; j++) { if (user == FilteredUsers[j]) { r.style.backgroundColor = "#FBE8E5"; //d.style.color = "red"; break; } } td = document.createElement("td"); a.appendChild(d); td.appendChild(a); r.appendChild(td); } var d = document.createElement("div"); d.style.textAlign = "center"; var b = document.createElement("input"); if (PageTYPE == 1) { b.type = "button"; b.value = "Auto-Page"; b.style.backgroundColor = (AutoPaging) ? "lime" : "gray"; b.onclick = function () { AutoPaging = !AutoPaging; this.style.backgroundColor = (AutoPaging) ? "lime" : "gray"; EnablePager(); GM_setValue("AutoPaging",AutoPaging); }; d.appendChild(b); } b = document.createElement("input"); b.type = "button"; b.value = "Show All"; b.style.backgroundColor = Boolean(GM_getValue("ShowAllVideos",false)) ? "lime" : "gray"; b.onclick = function () { var show = !Boolean(GM_getValue("ShowAllVideos",false)); this.style.backgroundColor = show ? "lime" : "gray"; GM_setValue("ShowAllVideos", show); ShowAllVideos(show); }; d.appendChild(b); b = document.createElement("input"); b.type = "button"; b.value = "Close"; b.onclick = function () { TSL.removeNode("FilterWindow");}; d.appendChild(b); fwin.appendChild(d); fwin.id = "FilterWindow"; document.body.appendChild(fwin); return fwin; } var SearchCount = 0; function AdjustSearchResult() { var results; if (PageTYPE == 1) results = document.getElementsByClassName("item-section")[0].children; else results = document.getElementsByClassName("video-list-item"); if (SearchCount == results.length) return; SearchCount = results.length; for (var i = 0; i < results.length; i++) { if (results[i].getElementsByClassName("blockBTN32").length == 0) { try { AddBlockButton(results[i]); } catch(e){}; } } HideUnwantedUsers(); if (PageTYPE == 1) EnablePager(); } function AddOptions() { if (document.getElementById("OptionsButton")) return; var masthead = document.getElementById("yt-masthead-signin"); if (masthead) { var options = document.createElement("button"); options.id = "OptionsButton"; options.className = "yt-uix-button yt-uix-button-default"; //options.textContent = "Options"; options.onclick = function () { var fwin = document.getElementById("FilterWindow"); if (fwin) TSL.removeNode(fwin); else CreateFilterWindow(); }; masthead.insertBefore(options, masthead.firstElementChild); } else { var placer = document.createElement("div"); placer.id = "FloatArea"; document.body.appendChild(placer); var options = document.createElement("div"); options.id = "OptionsButton"; //options.textContent = "Options"; options.onclick = function () { var fwin = document.getElementById("FilterWindow"); if (fwin) TSL.removeNode(fwin); else CreateFilterWindow(); }; document.onmousemove = function(e) { options.style.display = (IsMouseEventInClientArea(e,placer)) ? null : "none"; } document.body.appendChild(options); } } //Mutation Observer var MO = { monitorBody: function() { var mo = window.MutationObserver || window.MozMutationObserver || window.WebKitMutationObserver; if (mo) { MO.Observer = new mo( function() { setTimeout(MainFunc, 500); }); MO.Observer.observe(document.body, { characterData:true, attributes: true, childList: true, subtree: true }); } }, disconnect: function() { if (MO.Observer) MO.Observer.disconnect(); MO.Observer = null; } }; var MainItemPageCount = 0; function MainFunc() { GetPageType(); switch(PageTYPE) { case 0: //Main Page console.info("YTF: Main Page"); MO.disconnect(); AddOptions(); var items = document.getElementsByClassName("yt-lockup"); if (MainItemPageCount != items.length) { MainItemPageCount = items.length; for(var i = 0; i < items.length; i++) { var thumbdata = items[i]; if (thumbdata.parsed) continue; thumbdata.parsed = true; var user = thumbdata.querySelector(".yt-uix-sessionlink.spf-link.g-hovercard").textContent; var filters = GetFilters(); var block = document.createElement("span"); block.className = "blockLINKS"; var blockBtn = document.createElement("a"); blockBtn.className = "blockBTN16"; blockBtn.title = user; blockBtn.onclick = BlockUser; block.appendChild(blockBtn); var link = thumbdata.getElementsByTagName("a")[0]; link.appendChild(block); link.className += " aaTT"; var ss = CreateScreenshotLink(link.href.replace(/.+watch\?v=(([a-z0-9]|_|-)+).*/gi,"$1")); block.appendChild(ss); } HideUnwantedUsers(); } //setTimeout(MO.monitorBody, 1000); MO.monitorBody(); break; case 1: //Search Result console.info("YTF: Search Result"); //MO.disconnect(); AddOptions(); AdjustSearchResult(); //MO.monitorBody(); break; case 2: // Video Page //TSL.addStyle("YT_RELATED",".related-list-item .content-link {width:170px; background-color:red;}"); console.info("YTF: Video Page"); AddOptions(); AdjustSearchResult(); //Adds sceenshot var player = document.getElementById("watch7-headline"); if (!player.getAttribute("screenshot")) { player.setAttribute("screenshot","added"); var ss = CreateScreenshotLink(document.URL.replace(/.+watch\?v=(([a-z0-9]|_|-)+).*/gi,"$1")); player.insertBefore(ss, player.firstElementChild); } //Loads more side videos and filters them setTimeout(function() { if (document.getElementById("watch-more-related-button")) document.getElementById("watch-more-related-button").click(); setTimeout(function() { AdjustSearchResult(); }, 1000); //var player = document.getElementById("player"); }, 2500); break; case 3: //User Channel console.info("YTF: User Channel"); MO.disconnect(); var vthumbs = document.getElementsByClassName("ux-thumb-wrap"); for(var i = 0, thumb; i < vthumbs.length, thumb = vthumbs[i]; i++) { if (!thumb.className.match("aaTT")) { thumb.className += " aaTT"; var block = document.createElement("span"); block.className = "blockLINKS"; block.style.visibility = "visible"; block.style.top = "10px"; thumb.appendChild(block); var ss = CreateScreenshotLink(thumb.querySelector("a").href.replace(/.+watch\?v=(([a-z0-9]|_|-)+).*/gi,"$1")); ss.style.backgroundColor = "yellow"; ss.style.border = "1px solid black"; block.appendChild(ss); } } MO.monitorBody(); break; } } var URL = document.URL; (function () { GetPageType(); if (PageTYPE == null) return; //Replace old saved syntax CURRENTVERSION = 1; if (GM_getValue("Version", 0) != CURRENTVERSION) { var filters = GM_getValue("Filters", null); if (filters) { filters = filters.split("|"); for(var i = 0; i < filters.length; i++) { filters[i] = filters[i]; } GM_setValue("Filters", JSON.stringify(filters)); } GM_setValue("Version", CURRENTVERSION); } TSL.addStyle(null, "#OptionsButton {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADPUlEQVR42u3XX0xSURwH8N/lzwUVxED+mpW5HtQ0ptJspBPkKmVzTtfafKunntqa9d67bD219dZLPrVmc22mglhSul2FnEtfMjf/C4oCCpfLvw7XbGXxT5q98HuBO845389+nMs9YPCfC0t3oF6vl6DBpWwMk0Si0TMxDMtD17z4ZzGAIBaLBdhs9m4kEtkBFmvFYrHsnBig1WpxHo4TGIYRMplMU1Z2sVqpVAilUhkUigpBKBQCzsWBw+Ew48PhMNAhGnw+H3g9XnC6nLC5seH7trQ053I6yVgsNoKQZqvVSqcEXGtoIK6o1S86OjpK6uvrQSyWZNVit3sHpslpGBwcXJ2d/Xx3cmrKnBTQ3dX15WV/fyWO41kFHy+apqGnp2d+YGCgKingenv3fOmliorbTbWg0WhApSrJKnh9fQ1IkoRXY3ZYWVxYsA29rkwKaGzvtpKdz5r53g0Qr87AudAmVIsAzhfxQCaXg0gkOtwD+LE9QB/uAY/HA1tbW7C8G4S5bYBlUIC7uA5oXAJ1kw+GJ4bfGJMCDHq9/KBQZXHcNFVRBXJmi0MUgBUKAH/fBVzKC5zgPrDCNLAiYWZOFDgQZeEQ5gogxBUBxZeiaz4zLz4/b38VaqcekXzK1WoZG9tLCogXuuVkAaHSjBDVVIHi50JHmN9eU7xnwif/Hp4Q8AMhpYRKi93YhxDKEwHyfCj8U+LwpADm62hulvoLVWZ7m6mGEigzAjDhH3tJ3O9stY6P7yXKSPlLiPZEsb9APupo61MHBCVpAZhwW+rwtADx0ul0ElogN9sJ0yEiWdu9KHyidwaFG1KFpw1gOmEwSAJ8yYjdYKoNCM8mbvt7JpxA4bvprJs2IF4ter2YypeOOFr66vyC0j/bHg8/SD88Y8ARIpAvs5DG5+oQLmIAXMoDmtH7jgJq2zBqNrszWS9jQLwIg8E4d/Xx0OaFVgagWBqGsvEnN9CD5l2ma50IgLrQuKB5+GG9/BYDUH19CxUzT5vQvT6RA+QAOUAOkAOcFkC7Vt5uW6y5ByG86PQB6GzA5vF4LYFg6M5u8eVOdBoWy9Zspwf4tQiC4EbCYR3GYpHoD2na54B/Bsi2vgPc5hg/VHiJIwAAAABJRU5ErkJggg==); background-size:24px 24px; background-repeat:no-repeat; background-position:center;}"); if (document.getElementById("yt-masthead-signin")) { TSL.addStyle("YTF_FW", "#FilterWindow{position: fixed;z-index: 9999999999999; right: 50px;top: 50px;background-color: #E9EAEA;border: 1px solid black;}#FilterWindow div{color: gray;text-decoration-style: none;padding: 3px 5px;}#FilterWindow tr:hover{text-decoration-style: none;background-color: lightgray;color: black;}"); TSL.addStyle(null, "#OptionsButton {margin-right: 10px; height: 28px; width: 32px; background-size:15px 15px; background-repeat:no-repeat; background-position:center;}"); } else { TSL.addStyle("YTF_FW", "#FilterWindow{position: fixed;z-index: 9999999999999; right: 10px;top: 95px;background-color: #E9EAEA;border: 1px solid black;}#FilterWindow div{color: gray;text-decoration-style: none;padding: 3px 5px;}#FilterWindow tr:hover{text-decoration-style: none;background-color: lightgray;color: black;}"); TSL.addStyle(null, "#OptionsButton{height: 32px; width: 32px; margin: 0; padding: 0; position: fixed;color: #777979; right: 10px;top: 60px;border-radius: 3px;background-color: lightgray;border: 1px solid darkgray;cursor: pointer; z-index:99999999999999999;}#OptionsButton:hover{background-color: darkgray;color: black;}"); } TSL.addStyle(null, ".blockBTN32, .blockBTN16, .unblockBTN{background-repeat:no-repeat; cursor:pointer; background-image: url(data:image/png;base64,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);background-size: contain;z-index: 100;}"); TSL.addStyle("YTF_BT",".unblockBTN{display: inline-block;width: 16px;height: 16px; padding-right: 3px;} .blockBTN32{display: block;width: 32px;height: 32px;}a.aaTT:hover .blockLINKS{visibility: visible;} .blockBTN16 {display:block; background-color: black;border: 1px solid red;height: 24px;width: 24px;}"); TSL.addStyle("YTF_BL", ".blockLINKS{position: absolute;top: 2px;visibility: hidden; z-index: 100; right: 2px;} .blockLINKS a:nth-child(2){line-height:normal; background-color:yellow; border: 1px solid blue; display:block;text-align:center;}"); TSL.addStyle("YTF_NB", ".banNotice {position:absolute; z-index: 1000; font-size:medium;} .banNotice > span { display:table-cell; background-color:yellow; text-align: center; vertical-align: middle; }"); TSL.addStyle("YTF_PC", "#FloatArea{position: fixed; right: 0px; top:10px; border: none; visibility:hidden; height: 200px; width:140px;}"); TSL.addStyle("YTF_BX", ".blockBox {text-align:center;}"); ShowAllVideos(); TSL.addStyle("BlockVideoBG",".blockedVideo, .blockedVideoBG {background-color:#FBE8E5;}"); if (PageTYPE == 2) { if (GM_getValue("PageType2",false)) TSL.addStyle("",GM_getValue("PageType2")); else TSL.addStyle("","body #watch7-sidebar-contents {padding: 15px 0px 15px 5px !important;}" + "#watch7-sidebar-contents .video-list-item.related-list-item {padding-right: 35px;}"); } else if (PageTYPE == 1 && GM_getValue("PageType1",false)) { TSL.addStyle("",GM_getValue("PageType1")); } MainFunc(); })(); /* 1-3, Default is same as HQdefault but thumbnail size http://img.youtube.com/vi/<insert-youtube-video-id-here>/<1-3>.jpg http://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg 0 & HQ default are the same http://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg http://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg http://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg https://developers.google.com/youtube/2.0/developers_guide_php?csw=1 */