您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
一键从短视频饲养返回传统观看页面,在频道视频列表中以传统观看页面打开短视频。
// ==UserScript== // @name ACT.YouTube.DM.Shorts2watch // @name:zh-CN ACT.YouTube.DM.短视频返回观看页 // @description Back to watch page from shorts feeds by one-click button, open shorts on the watch page in channel videos. // @description:zh-CN 一键从短视频饲养返回传统观看页面,在频道视频列表中以传统观看页面打开短视频。 // @author ACTCD // @version 20220722.1 // @license GPL-3.0-or-later // @namespace ACTCD/Userscripts // @supportURL https://github.com/ACTCD/Userscripts#contact // @homepageURL https://github.com/ACTCD/Userscripts // @match *://*.youtube.com/* // @grant none // @inject-into content // @run-at document-start // ==/UserScript== (function () { "use strict"; const button = document.createElement("button"); button.id = "ACT_Shorts2watch"; button.innerText = "Back to watch"; const style = document.createElement("style"); style.textContent = ` #ACT_Shorts2watch { border: 2px solid; border-radius: 10px; padding: 1px 5px; font-size: 1.8em; font-weight: 500; font-family: Roboto,Arial,sans-serif; color: black; background-color: transparent; } @media (prefers-color-scheme: dark) { #ACT_Shorts2watch { color: white; } } `; if (location.hostname == "m.youtube.com") { button.style.setProperty("position", "fixed"); button.style.setProperty("z-index", "100"); button.style.setProperty("top", "8px"); button.style.setProperty("right", "8px"); button.style.setProperty("color", "white"); button.style.setProperty("text-shadow", "black 1px 1px 2px"); } button.addEventListener("click", (event) => { if (location.pathname.slice(0, 8) == "/shorts/") { location.href = "/watch?v=" + location.pathname.slice(8); } event.preventDefault(); event.stopImmediatePropagation(); }); new MutationObserver((mutationList) => { // Hide shorts icon document .querySelectorAll('ytd-grid-video-renderer [overlay-style="SHORTS"]') .forEach((e) => e.style.setProperty("display", "none")); document .querySelectorAll('ytm-compact-video-renderer [data-style="SHORTS"]') .forEach((e) => e.style.setProperty("display", "none")); // Dynamic button if (location.pathname.slice(0, 8) == "/shorts/") { if (location.hostname == "m.youtube.com") { let t = document.body; t && t != button.parentNode && t.appendChild(button); } if (location.hostname == "www.youtube.com") { let t = document.querySelector("#masthead #logo"); t && t.nextElementSibling != button && t.after(button); } } else { button.remove(); } }).observe(document, { subtree: true, childList: true, attributes: true }); const event_handle = (event) => { // Shorts in channel video list open on the watch page, not shorts feeds. const selectors_hotzone = [ "ytd-grid-video-renderer ytd-thumbnail a yt-img-shadow img", "ytd-grid-video-renderer ytd-thumbnail a ytd-moving-thumbnail-renderer *", "ytd-grid-video-renderer ytd-thumbnail a #label-container", "ytd-grid-video-renderer #details #meta", "ytd-grid-video-renderer #details #meta *", "ytd-grid-video-renderer #details ytd-badge-supported-renderer", "ytd-reel-item-renderer ytd-thumbnail a yt-img-shadow img", "ytd-reel-item-renderer #details a", "ytd-reel-item-renderer #details a *", "ytm-compact-video-renderer a", "ytm-compact-video-renderer a *", "ytm-reel-item-renderer a", "ytm-reel-item-renderer a *", ]; const selectors_renderer = [ ...new Set(selectors_hotzone.map((v) => v.split(" ")[0])), ]; if (event.target.matches(selectors_hotzone.join())) { let anchor = event.target.closest('a[href^="/shorts/"]') ?? event.target .closest(selectors_renderer.join()) .querySelector('a[href^="/shorts/"]'); if (anchor) { const href = anchor.getAttribute("href"); if (href.slice(0, 8) == "/shorts/") { anchor.href = "/watch?v=" + href.slice(8); event.stopImmediatePropagation(); } } } }; window.addEventListener("click", event_handle, true); window.addEventListener("mousedown", event_handle, true); if (document.head) { document.head.append(style); } else { new MutationObserver((mutationList, observer) => { document.head && (observer.disconnect(), document.head.append(style)); }).observe(document, { subtree: true, childList: true }); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址