您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
hides selected authors and disliked videos on COUB.COM
- // ==UserScript==
- // @name COUB.COM - hide selected authors and disliked videos
- // @namespace https://coub.com
- // @version 1.2
- // @description hides selected authors and disliked videos on COUB.COM
- // @author Rhoads
- // @license CC-BY-SA-4.0
- // @icon https://cs14.pikabu.ru/avatars/2609/m2609364-1795047659.png
- // @match https://coub.com/*
- // @run-at document-start
- // @grant GM_setValue
- // @grant GM_getValue
- // @grant GM_registerMenuCommand
- // ==/UserScript==
- (async function () {
- "use strict";
- // author href with forward '/'
- let BLACKLIST = new Set(JSON.parse(GM_getValue("CoubBannedAuthors", "[]")));
- BLACKLIST.forEach((coubAuthor) =>
- {
- GM_registerMenuCommand(`Unban ${coubAuthor}`, function() { UnbanAuthor(coubAuthor); });
- });
- let lastCleanedPageID = "-1";
- function cleanUp(targetNode) {
- const lastPage = document.querySelector(".coubs-list__inner .page:last-child");
- if (lastCleanedPageID === lastPage.dataset.pageId) {
- return;
- }
- lastCleanedPageID = lastPage.dataset.pageId;
- const coubs = lastPage.querySelectorAll("div.coub--normal-card");
- coubs.forEach((coub) =>
- {
- //let coubTitle = coub.querySelector("h5.description__title > a")?.title;
- if (!!coub.querySelector(".coub__dislike-button.-on"))
- {
- //console.log(`[COUB.COM - BLACKLIST] Removed disliked coub: ${coubTitle}`);
- coub.remove();
- return;
- }
- let coubDescription = coub.querySelector("div.coub-description__about__inner");
- let coubAuthor = coubDescription.querySelector("a.hbold.coub-description__about__user")?.getAttribute("href");
- if (BLACKLIST.has(coubAuthor))
- {
- //console.log(`[COUB.COM - BLACKLIST] Removed blacklisted coub author: ${coubAuthor}`);
- coub.remove();
- return;
- }
- // add BAN button
- var button = document.createElement('button');
- button.setAttribute('id', 'ButtonBanAuthor');
- button.innerHTML = "Ban!";
- coubDescription.appendChild(button).addEventListener("click", function() { ButtonBanAuthorClickAction(coubAuthor); }, false);
- });
- }
- function ButtonBanAuthorClickAction (coubAuthor) {
- //console.log(`[COUB.COM - BLACKLIST] Blacklist coub author: ${coubAuthor}`);
- BLACKLIST.add(coubAuthor);
- SaveBlacklist();
- }
- function UnbanAuthor(coubAuthor) {
- //console.log(`[COUB.COM - BLACKLIST] Unban: ${coubAuthor}`);
- BLACKLIST.delete(coubAuthor);
- SaveBlacklist();
- }
- function SaveBlacklist() {
- GM_setValue("CoubBannedAuthors", JSON.stringify([...BLACKLIST]));
- }
- async function waitUntilExists(selector) {
- return new Promise(function check(resolve, reject) {
- let el = document.querySelector(selector);
- if (el) {
- return resolve(el);
- }
- setTimeout(function () {
- check(resolve, reject);
- }, 100);
- });
- }
- await waitUntilExists(".coubs-list__inner > .page");
- cleanUp();
- window.addEventListener("scroll", cleanUp);
- })();