- // ==UserScript==
- // @name [TS] Youtube Filter
- // @namespace TimidScript
- // @version 1.1.43
- // @description Filter out users and channels from search with GUI. Include Auto-Paging and ScreenShot Links.
- // @author TimidScript
- // @homepageURL https://github.com/TimidScript
- // @copyright © 2013+ TimidScript, Some Rights Reserved.
- // @license https://github.com/TimidScript/UserScripts/blob/master/license.txt
- // @include *//www.youtube.*
- // @exclude *//www.youtube.*/embed/*
- // @require https://greasyfork.org/scripts/19967/code/TSL - GM_update.js
- // @require https://greasyfork.org/scripts/19968/code/TSLibrary - Generic.js
- // @homeURL https://greasyfork.org/en/scripts/4687
- // @grant GM_xmlhttpRequest
- // @grant GM_info
- // @grant GM_getMetadata
- // @grant GM_getValue
- // @grant GM_setValue
- // @grant GM_deleteValue
- // @grant GM_registerMenuCommand
- // @icon data:image/png;base64,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
- // ==/UserScript==
-
- /* License + Copyright Notice
- ********************************************************************************************
- License can be found at: https://github.com/TimidScript/UserScripts/blob/master/license.txt
- Below is a copy of the license the may not be up-to-date.
-
- Copyright © TimidScript, Some Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- 1) GPL-3 License is met that does not conflict with the rest of the license (http://www.gnu.org/licenses/gpl-3.0.en.html)
- 2) This notice must be included
- 3) Due credits and link to original author's homepage (included in this notice).
- 4) Notify the original author of redistribution
- 5) Clear clarification of the License and Notice to the end user
- 6) Do not upload on OpenUserJS.org or any other site that infringes on this license
-
- TimidScript's Homepages: GitHub: https://github.com/TimidScript
- GreasyFork: https://greasyfork.org/users/1455
- */
- /* Information
- ********************************************************************************************
- Known Issues:
- - Support for paged front page is not implemented as it seems to cause infinite loop
- ----------------------------------------------
- Version History
- ----------------------------------------------
- 1.1.43 (2017-01-27)
- - Bugfix: Support other URLs
- 1.1.42 (2016-06-19)
- - Fix auto-paging
- 1.1.41 (2016-05-27)
- - Altered license
- 1.1.40 (2016-05-25)
- - Moving to GreasyFork and preparing to remove OUJS files
- 1.1.39 (2016-04-10)
- - updateURL added
- 1.1.38 (2016-04-03)
- - Changed license to GPL-3
- - A delay on load more videos added
- 1.1.37 (2015-11-20)
- - Load more videos permanent fix
- 1.1.36 (2015-10-05)
- - Larger delay on Load More Videos on video page
- 1.1.35 (2015-10-05)
- - Replaced base64 bmp icon with png version
- 1.1.34 (2015-09-12)
- - Make filter compatible with "Youtube Center"
- - Bug Fix: Corrections to changes made in Youtube video page syntax
- 1.1.33 (2015-08-18)
- - Bug Fix: Corrections to changes made in Youtube page syntax
- - Added fullscreen link
- - Removal of tags occurs on mouseover and mouseout
- 1.1.32 (2015-06-20)
- - Remove link tag on mouse down
- 1.1.31 (2015-06-19)
- - Added tag "?timidscript_youtube" to screenshot links.
- 1.1.30 (2015-04-25)
- - Bug Fix: Make it compatible with "Youtube Center" as it changes some of the classes script queries.
- 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();
- e.preventDefault();
- 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?timidscript_youtube";
-
- 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?timidscript_youtube";
- ss.textContent = "[SM]";
- }
- }
- });
-
- ss.addEventListener("mouseover", RemoveLinkTag, true);
- ss.addEventListener("mouseout", AddLinkTag, false);
-
- return ss;
- }
-
- function AddLinkTag(e)
- {
- var link = e.target;
- link.href += link.postfix;
- //if (link.postfix)
- // setTimeout(function () { link.href += link.postfix; }, 250);
- }
- function RemoveLinkTag(e)
- {
- var s, m = this.href.match(/\?timidscript_[_a-z0-9]+/i);
- if (m)
- {
- this.postfix = m[0];
- this.href = this.href.replace(/\?timidscript_[_a-z0-9]+/i, "");
- }
- }
-
- 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;
- btn.title = li.getElementsByClassName("g-hovercard")[0].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 nextpage = document.querySelector(".branded-page-box > [disabled=true]");
-
- if (nextpage) nextpage = nextpage.nextElementSibling;
- if (!nextpage) return null;
-
- return nextpage.href;
- }
-
-
- function ScrollCheck()
- {
- var pager = document.querySelector(".branded-page-box");
- 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.querySelector(".branded-page-box");
- var doc = xhr.response;
- var pagerNew = doc.querySelector(".branded-page-box");
- 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, .yt-uix-sessionlink.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");
- console.log(results.length);
- for (var i = 0; i < results.length; i++)
- {
- try
- {
- var vid = results[i];
- if (vid.getElementsByClassName("g-hovercard").length == 0) continue;
- var user = vid.getElementsByClassName("g-hovercard")[0].textContent;
- //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);
-
- //var el = document.createElement("button");
- //el.id = "ViewAllButton";
- //el.className = "yt-uix-button yt-uix-button-default";
- //masthead.insertBefore(el, options);
- }
- 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.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);
- var fs = document.createElement("a");
- fs.textContent = "[FT]";
- fs.href = "https://www.youtube.com/v/" + document.location.search.match(/v=([-_\w]+)/)[1];
- fs.style.marginLeft = "10px";
- player.insertBefore(fs, ss.nextElementSibling);
- }
-
- setTimeout(LoadMoreVideos, 5000);
- 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;
- }
-
- //Loads more side videos and filters them
- function LoadMoreVideos()
- {
- var wmv = document.getElementById("watch-more-related-button");
- AdjustSearchResult();
-
- if (!wmv || wmv.style.display == "none") return;
-
- document.getElementById("watch-more-related-button").click();
- setTimeout(LoadMoreVideos, 2500);
- }
- }
-
- 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;}");
- TSL.addStyle(null, "#ViewAllButton {background-image: url(data:image/png;base64,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); background-size:24px 24px; background-repeat:no-repeat; background-position:center;}");
- //TSL.addStyle(null, "#OptionsButton {background-image: url(); 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, "#ViewAllButton, #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
- */