您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Hover a thumbnail on youtube.com and click an icon at the right: "Not interested" and "Don't recommend channel"
当前为
// ==UserScript== // @name YT: not interested in one click // @description Hover a thumbnail on youtube.com and click an icon at the right: "Not interested" and "Don't recommend channel" // @version 1.1.8 // // @match https://www.youtube.com/* // // @noframes // @grant none // // @author wOxxOm // @namespace wOxxOm.scripts // @license MIT License // ==/UserScript== const ME = 'yt-one-click-dismiss'; const THUMB_TAG = 'ytd-thumbnail'; const PREVIEW_TAG = 'ytd-video-preview'; const PREVIEW_PARENT = '#media-container'; // parent for the added buttons; must be visible const CLOSEST = [THUMB_TAG, PREVIEW_TAG].join(','); const COMMANDS = { NOT_INTERESTED: {block: 'video', text: 'Not interested'}, REMOVE: {block: 'channel', text: "Don't recommend channel"}, DELETE: {block: 'unwatch', text: "Remove from 'Watch later'"}, }; let STYLE; let inlineState; // people hide it via uBlock addEventListener('mouseover', onHover); addEventListener('click', onClick, true); function onHover(e) { const el = e.target.closest(CLOSEST); if (!el) return; const inline = el.localName === PREVIEW_TAG; const thumb = inline ? el.querySelector(THUMB_TAG) : el; if (thumb && ( inline || (inlineState || getInlineState()) < 0 || !getProp(el.closest('ytd-rich-grid-media'), 'isInlinePreviewEligible') )) { addButtons(el, inline ? el.querySelector(PREVIEW_PARENT) : thumb); } } async function onClick(e) { const {target} = e; const {block} = target.classList.contains(ME) && target.dataset; if (!block) return; e.stopPropagation(); e.preventDefault(); let index; try { index = STYLE.sheet.insertRule('ytd-menu-popup-renderer { display: none !important }'); for (let more, el = target; el; el = el.parentElement) { if ((more = el.querySelector('.dropdown-trigger'))) { await 0; more.dispatchEvent(new Event('click')); await new Promise(setTimeout); break; } } for (const el of document.querySelector('ytd-menu-popup-renderer [role="listbox"]').children) { if (block === (COMMANDS[getProp(el, 'data.icon.iconType')] || {}).block) { el.click(); break; } } } catch (e) {} await new Promise(setTimeout); document.body.click(); await new Promise(setTimeout); STYLE.sheet.deleteRule(index); } function addButtons(thumb, parent) { let prev; for (const item of getProp(thumb, '__data.data.menu.menuRenderer.items') || []) { const type = getProp(item, 'menuServiceItemRenderer.icon.iconType'); const data = COMMANDS[type]; if (!data) continue; let {el} = data; if (!el) { el = data.el = document.createElement('div'); el.className = ME; el.dataset.block = data.block; el.title = getProp(item, 'menuServiceItemRenderer.text').runs.map(r => r.text).join('') || data.text; } if (el.parentNode !== parent) { if (prev) prev.after(el); else parent.append(el); prev = el; } } if (!STYLE) initStyle(); } function getInlineState() { return (inlineState = document.querySelector(PREVIEW_TAG)) && (inlineState = inlineState.getBoundingClientRect().width ? 1 : -1); } function getProp(obj, path) { return obj && path.split('.').reduce((res, name) => res && res[name], (obj.wrappedJSObject || {}).__data || obj); } function initStyle() { STYLE = document.createElement('style'); STYLE.textContent = /*CSS*/ ` ${PREVIEW_PARENT} .${ME} { opacity: .5; } ${PREVIEW_PARENT} .${ME}, ${THUMB_TAG}:hover .${ME} { display: block; } .${ME} { display: none; position: absolute; width: 16px; height: 16px; border-radius: 100%; border: 2px solid #fff; right: 8px; background: #0006; box-shadow: .5px .5px 7px #000; cursor: pointer; opacity: .75; z-index: 11000; } ${PREVIEW_PARENT} .${ME}:hover, .${ME}:hover { opacity: 1; } .${ME}:active { color: yellow; } .${ME}[data-block] { top: 70px; } .${ME}[data-block="channel"] { top: 100px; } ${PREVIEW_TAG} .${ME}[data-block] { top: 50px; } ${PREVIEW_TAG} .${ME}[data-block="channel"] { top: 80px; } .ytd-playlist-video-renderer .${ME}[data-block="unwatch"] { top: 15px; } ytd-compact-video-renderer .${ME}[data-block] { top: 70px; right: 7px; box-shadow: .5px .5px 4px 6px #000; background: #000; } ytd-compact-video-renderer .${ME}[data-block="channel"] { right: 37px; } .${ME}::before { position: absolute; content: ''; top: -8px; left: -6px; width: 32px; height: 30px; } .${ME}::after { content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; height: 0; margin: auto; border: none; border-bottom: 2px solid #fff; } .${ME}[data-block="video"]::after { transform: rotate(45deg); } .${ME}[data-block="channel"]::after { margin: auto 3px; } `.replace(/;/g, '!important;'); document.head.appendChild(STYLE); }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址