Live Cách sử dụng Zootube phong cách xamer (rảnh thì update)

tranhthuregnick

Địt xong chạy
Cambodia
dùng Zootube ko quảng cáo là 1 phần nhỏ trong nhu cầu hoàn mỹ của tao, quan trọng là nó ko ban tài khoản của tao, chứ xem chùa kiểu ngu ngu nó ban phát mất hết mẹ hướng đề xuất thì ăn cứt :))

trước tiên phải hiểu cơ chế của thằng Zootube nó sẽ xác định bằng tài khoản, MAC của thiết bị và địa chỉ IP. Do đó phải có 1 thằng như Chrome để đăng nhập vô Zootube (cái tài khoản chính của tụi mày) và nên xem vài clip để nó ghi nhận?

Cái quan trọng tiếp theo là thằng dùng để xem chính, nhiều cái nhưng quan trọng là phải hỗ trợ cài ublock origin (đéo được bỏ mẹ đi). Tao liệt kê mấy thằng : Edge, Firefox, Ungoogled Chromium. Tao đéo liệt kê tml Brave ở đây là có lí do, đọc tiếp là hiểu.




cài 1 trong mấy thằng trên, cài ublock vô, cập nhật hết bộ lọc, thêm đống này vô "My filters"

youtube.com##ytd-rich-grid-row:style(display:contents !important;)
youtube.com###contents.ytd-rich-grid-row:style(display:contents !important;)
youtube.com##ytd-rich-grid-renderer:style(--ytd-rich-grid-items-per-row: 5 !important;)
youtube.com##ytd-rich-item-renderer:style(margin-right: calc(var(--ytd-rich-grid-item-margin)/2) !important; margin-left: calc(var(--ytd-rich-grid-item-margin)/2) !important;)
youtube.com###video-title.ytd-rich-grid-media:style(font-size: 1.4rem !important; line-height: 2rem !important;)
youtube.com###metadata-line.ytd-video-meta-block:style(font-size: 1.2rem !important; line-height: 1.8rem !important;)
youtube.com###video-title.ytd-rich-grid-slim-media:style(font-size: 1.4rem !important; line-height: 2rem !important;)
youtube.com##ytd-rich-section-renderer.ytd-rich-grid-renderer.style-scope:nth-of-type(1)
youtube.com##ytd-rich-section-renderer.ytd-rich-grid-renderer.style-scope:nth-of-type(2)
youtube.com##ytd-rich-section-renderer.ytd-rich-grid-renderer.style-scope:nth-of-type(3)
youtube.com#@##player-ads

đến đây là tụi mày vô xem ngon lành rồi nhưng có cái ngu là nó có rất nhiều kênh rác, gọi là rác vl :))

và đây là chiếc chổi thần kỳ "Channel Blocker", thằng này nếu tụi mày cài trực tiếp ở Chrome nó đéo hoạt động đâu, phải tải bản cũ hơn


thằng Firefox thì nó có sẵn bản này trên store của nó


mấy thằng dùng Edge hay Chromium tự tìm cách sideload extension, cài vô xong sẽ thấy điều diệu kỳ, bên cạnh tên kênh tụi bây sẽ thấy nút X (bấm vô là bye forever kênh đó), chịu khó dọn dẹp tầm vài lần là ok, nhớ tìm và xem các kênh tụi mày xem, càng dùng lâu càng tốt lên

204252.png


còn đây là script dọn mấy kênh ít sub rác, cài Violentmonkey mà xài

// ==UserScript==
// @name youtube crappy videos remover from the recommendations + remove ContainAdsSign
// @namespace http://tampermonkey.net/
// @version 3.4
// @description thanks to youtube for recommending crappy videos with ~10 views
// @author NiceL
// @match *://*.youtube.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com
// @grant none
// ==/UserScript==

// ---------------------------------------------------------------------------

let g_VideosFiltering = true;
let g_ShortsFiltering = true;
let g_RemoveContainAdsSign = true;

function IsSubscriptions()
{
return location.pathname.startsWith("/feed/subscriptions");
}

function IsChannel()
{
return location.pathname.startsWith("/@");
}

function IsShorts()
{
return location.pathname.startsWith("/shorts");
}

function IsNumber(i)
{
return (i >= '0' && i <= '9');
}

function IsSpace(i)
{
return i == ' ';
}

function IsSeparator(i)
{
return i == '.' || i == ',';
}

function IsBadVideo(videoViews)
{
if (!videoViews) {
return false;
}

let text = videoViews.innerText;
if (text.length == 0) {
return false;
}

let numbersExists = false
for (let i = 0; i < text.length; i++)
{
// searches for a single number to verify that there's more than zero views
if (IsNumber(text)) {
numbersExists = true;
break;
}
}

let twoWordsExists = false
for (let i = 0; i < text.length - 2; i++)
{
// not number + space + not number = this is >1000 views (this should work for all languages)
if (!IsNumber(text) && IsSpace(text[i + 1]) && !IsNumber(text[i + 2])) {
twoWordsExists = true;
break;
}

// number + separator + number = this is >1000 views (this should work for all languages)
if (IsNumber(text) && IsSeparator(text[i + 1]) && IsNumber(text[i + 2])) {
twoWordsExists = true;
break;
}
}

let badVideo = !numbersExists || !twoWordsExists;
if (badVideo) {
console.log("~BadVideo: '" + text + "'"); // debug
}

return badVideo;
}

function IsBadShortVideo(videoViews)
{
//console.log("IsBadShortVideo()"); // debug

if (!videoViews) {
return false;
}

let text = videoViews.innerText;
if (text.length == 0) {
return false;
}

for (let i = 0; i < text.length; i++)
{
// nbsp symbol is found
if (text == '\xa0') {
return false;
}
}

console.log("~BadShortVideo: '" + text + "'"); // debug
return true;
}

// ---------------------------------------------------------------------------

function UpdateVideoFiltering()
{
let videosList;

if (IsChannel() || IsSubscriptions()) {
return;
}

if (IsShorts())
{
if (g_ShortsFiltering)
{
// skip bad shorts
videosList = document.getElementsByClassName("reel-video-in-sequence style-scope ytd-shorts");
for (let i = 0; i < videosList.length; i++)
{
if (!videosList.isActive) {
continue;
}

let videoViews = videosList.getElementsByClassName("yt-spec-button-shape-with-label__label")[0];

if (IsBadShortVideo(videoViews)) {
document.getElementsByClassName("navigation-button style-scope ytd-shorts")[1].getElementsByClassName("yt-spec-touch-feedback-shape__fill")[0].click(); // click to next video button (is it even stable lol?)
}
}
}
}
else
{
if (g_VideosFiltering)
{
// delete videos from the right side
videosList = document.getElementsByClassName("style-scope ytd-compact-video-renderer");
for (let i = 0; i < videosList.length; i++)
{
let videoViews = videosList.getElementsByClassName("inline-metadata-item style-scope ytd-video-meta-block")[0];

if (IsBadVideo(videoViews)) {
videosList.parentElement.remove();
}
}

// delete videos from the main page
videosList = document.getElementsByClassName("style-scope ytd-rich-item-renderer");
for (let i = 0; i < videosList.length; i++)
{
if (videosList.id != "content") {
continue;
}

let videoViews = videosList.getElementsByClassName("inline-metadata-item style-scope ytd-video-meta-block")[0];

if (IsBadVideo(videoViews)) {
videosList.parentElement.remove();
}
}
}
}
}

// if you are tired of clicking on this sign million times instead of video
function RemoveContainAdsSign()
{
if (g_RemoveContainAdsSign)
{
const styleElement = document.createElement('style');
document.head.appendChild(styleElement);
const sheet = styleElement.sheet;
sheet.insertRule(".ytInlinePlayerControlsTopLeftControls { display: none }", 0);
}
}

// ---------------------------------------------------------------------------

document.addEventListener("yt-navigate-finish", (event) => {
setTimeout(UpdateVideoFiltering, 350);
RemoveContainAdsSign();
});

window.addEventListener("message", (event) => {
if (!IsShorts()) {
setTimeout(UpdateVideoFiltering, 200);
}
});

window.addEventListener("load", (event) => {
if (!IsShorts()) {
setTimeout(UpdateVideoFiltering, 200);
}
});

window.addEventListener("scrollend", (event) => {
if (!IsShorts()) {
setTimeout(UpdateVideoFiltering, 0);
}
});

window.addEventListener("click", (event) => {
if (!IsShorts()) {
setTimeout(UpdateVideoFiltering, 200);
}
});
 

Có thể bạn quan tâm

Top