您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
유튜브 홈/구독에서 보여지는 영상 갯수 제한을 원래대로 돌립니다
当前为
- // ==UserScript==
- // @name YouTube: Return Grid Layout
- // @namespace Return YouTube Grid Layout
- // @version 1.3.3
- // @description 유튜브 홈/구독에서 보여지는 영상 갯수 제한을 원래대로 돌립니다
- // @description:en Force YouTube grid layout to show 1~6 videos per row responsively, and scale up thumbnails on wide screens
- // @author DOGJIP
- // @match https://www.youtube.com/*
- // @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com
- // @grant none
- // @run-at document-start
- // ==/UserScript==
- (function () {
- 'use strict';
- const STYLE_ID = 'custom-grid-style';
- function getItemsPerRow(width) {
- if (width >= 2300) return 6;
- if (width >= 1900) return 5;
- if (width >= 1500) return 4;
- if (width >= 1050) return 3;
- if (width >= 650) return 2;
- return 1;
- }
- function getItemWidth(width, itemsPerRow) {
- const containerWidth = width - 96;
- const totalMargin = 16 * (itemsPerRow - 1);
- const itemWidth = Math.floor((containerWidth - totalMargin) / itemsPerRow);
- const maxDefault = 300;
- const minDefault = 220;
- const maxW = Math.min(Math.max(itemWidth, maxDefault), 400);
- const minW = Math.min(Math.max(itemWidth - 20, minDefault), maxW - 10);
- return { maxW, minW };
- }
- function generateStyle(width) {
- const n = getItemsPerRow(width);
- const { maxW, minW } = getItemWidth(width, n);
- return `
- ytd-rich-grid-renderer {
- --ytd-rich-grid-item-max-width: ${maxW}px !important;
- --ytd-rich-grid-item-min-width: ${minW}px !important;
- --ytd-rich-grid-row-margin: 32px !important;
- --ytd-rich-grid-items-per-row: ${n} !important;
- --ytd-rich-grid-item-margin: 16px !important;
- --ytd-rich-grid-posts-per-row: ${n} !important;
- --ytd-rich-grid-slim-items-per-row: ${n} !important;
- --ytd-rich-grid-game-cards-per-row: ${n} !important;
- --ytd-rich-grid-mini-game-cards-per-row: ${n} !important;
- --ytd-rich-grid-content-offset-top: 56px !important;
- }
- ytd-rich-item-renderer[hidden],
- ytd-rich-item-renderer[hidden][is-responsive-grid],
- ytd-rich-shelf-renderer[hidden] {
- display: block !important;
- }
- `;
- }
- function isExcludedPage(path) {
- return /^\/@[^\/]+\/(?:videos|streams)\/?$/.test(path);
- }
- function applyStyle() {
- if (isExcludedPage(location.pathname)) {
- const old = document.getElementById(STYLE_ID);
- if (old) old.remove();
- return;
- }
- const old = document.getElementById(STYLE_ID);
- if (old) old.remove();
- const styleEl = document.createElement('style');
- styleEl.id = STYLE_ID;
- styleEl.textContent = generateStyle(window.innerWidth);
- document.head.appendChild(styleEl);
- }
- document.addEventListener('DOMContentLoaded', applyStyle);
- window.addEventListener('resize', applyStyle);
- const observer = new MutationObserver(applyStyle);
- observer.observe(document.body, { childList: true, subtree: true });
- })();