- // ==UserScript==
- // @name YouTube: Search results in Grid view
- // @namespace https://greasyfork.org/users/1166888-pedro
- // @match https://www.youtube.com/*
- // @version 2023.12.20
- // @author Pedro
- // @description See more results in one go, without irrelevant results, such as 'People also watched' and 'For you', in the way.
- // @grant GM_registerMenuCommand
- // @grant GM_setValue
- // @grant GM_getValue
- // @compatible Chrome
- // @compatible Safari
- // @compatible Firefox
- // @license MIT
- // ==/UserScript==
- GM_registerMenuCommand('Settings', settingsMenu);
-
- function settingsMenu() {
- const menu = document.createElement('settings-menu');
- document.documentElement.appendChild(menu);
- menu.insertAdjacentHTML('afterbegin', `
- <div>
- <header>
- <span>Settings</span>
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
- <path d="M0 0h24v24H0V0z" fill="none" opacity=".87"></path>
- <path d="M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm4.3 14.3c-.39.39-1.02.39-1.41 0L12 13.41 9.11 16.3c-.39.39-1.02.39-1.41 0-.39-.39-.39-1.02 0-1.41L10.59 12 7.7 9.11c-.39-.39-.39-1.02 0-1.41.39-.39 1.02-.39 1.41 0L12 10.59l2.89-2.89c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41L13.41 12l2.89 2.89c.38.38.38 1.02 0 1.41z"></path>
- </svg>
- </header>
- <label>
- <span>Videos per row</span>
- <input type="number" id="videosPerRow">
- </label>
- <label>
- <span>Hide right sidebar</span>
- <input type="checkbox" id="hideRightSidebar">
- </label>
- <style>
- settings-menu svg {
- color: var(--background-3);
- width: 24px;
- height: 24px;
- transition: 0.4s;
- }
-
- settings-menu svg:hover {
- color: inherit;
- transform: rotate(-90deg);
- }
-
- settings-menu svg:active {
- transform: scale(1.5);
- }
-
- settings-menu div {
- margin: 10px;
- }
-
- settings-menu {
- width: 225px;
- position: fixed;
- background: var(--background);
- top: 20px;
- right: 20px;
- z-index: 9999;
- color: var(--text);
- font-size: 1.4rem;
- border-radius: 12px;
- box-shadow: 0 4px 32px 0 rgba(0, 0, 0, 0.1);
- font-weight: 400;
- border: 1px solid var(--border);
- }
-
- settings-menu header {
- font-size: 1.7rem;
- font-weight: 500
- }
-
- settings-menu header,
- settings-menu label {
- padding: 6px;
- display: flex;
- align-items: center;
- }
-
- settings-menu svg,
- settings-menu label {
- cursor: pointer;
- }
-
- settings-menu span {
- flex-grow: 1;
- }
-
- settings-menu [type="number"] {
- font-family: "Roboto";
- font-size: inherit;
- box-sizing: border-box;
- border: none;
- width: 60px;
- height: 30px;
- background: var(--background-2);
- color: inherit;
- outline: none;
- border-radius: 5px;
- padding: 0 3px;
- }
-
- settings-menu [type="number"]::-webkit-inner-spin-button {
- height: 30px;
- }
-
- settings-menu [type="checkbox"] {
- appearance: none;
- -webkit-tap-highlight-color: transparent;
- position: relative;
- border: 0;
- outline: 0;
- width: 37.5px;
- height: 24px;
- cursor: pointer;
- }
-
- settings-menu [type="checkbox"]:after {
- content: "";
- width: 100%;
- height: 100%;
- display: inline-block;
- border-radius: 100px;
- clear: both;
- background: var(--toggle-button-track);
- transition: background-color linear 0.08s;
- }
-
- settings-menu [type="checkbox"]:checked:after {
- background: #1db954;
- }
-
- settings-menu [type="checkbox"]:before {
- content: "";
- height: 19.5px;
- width: 19.5px;
- display: block;
- position: absolute;
- left: 0;
- top: 2px;
- border-radius: 50%;
- background: #fff;
- box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 3px 0 rgba(0, 0, 0, 0.2);
- transform: translateX(2px);
- transition: transform linear 0.1s, background-color linear 0.08s;
- }
-
- settings-menu [type="checkbox"]:checked:before {
- transform: translateX(80%);
- transition: transform linear 0.1s, background-color linear 0.08s;
- }
-
- @media (prefers-color-scheme: dark) {
- :root {
- color-scheme: dark;
- --text: #f1f1f1;
- --background: #121212;
- --background-2: #272727;
- --background-3: #999;
- --toggle-button-track: rgba(113, 113, 113, 0.4);
- --border: rgba(255, 255, 255, 0.2)
- }
- }
-
- @media (prefers-color-scheme: light) {
- :root {
- --text: #030303;
- --background: #fff;
- --background-2: #e5e5e5;
- --background-3: #666;
- --toggle-button-track: rgba(144, 144, 144, 0.4);
- }
- }
- </style>
- </div>`);
-
- menu.addEventListener('change', function(event) {
- if (event.target.type === 'number') {
- GM_setValue('videosPerRow', event.target.value);
- document.documentElement.style.setProperty('--videos-per-row', event.target.value);
- } else {
- GM_setValue('hideRightSidebar', event.target.checked);
- document.documentElement.classList.toggle('hideRightSidebar');
- }
- });
-
- menu.querySelector('#videosPerRow').value = GM_getValue('videosPerRow') || 5;
- menu.querySelector('#hideRightSidebar').checked = GM_getValue('hideRightSidebar');
- menu.querySelector('svg').addEventListener('click', function() {
- menu.remove();
- });
- }
-
- document.documentElement.style.setProperty('--videos-per-row', GM_getValue('videosPerRow') || 5);
- if (GM_getValue('hideRightSidebar')) document.documentElement.classList.add('hideRightSidebar');
-
- document.documentElement.insertAdjacentHTML('beforeend', `
- <style>
- ytd-search ytd-search-pyv-renderer,
- ytd-search ytd-ad-slot-renderer,
- ytd-search .metadata-snippet-container-one-line.ytd-video-renderer,
- ytd-search .metadata-snippet-container.ytd-video-renderer,
- ytd-search #description-text.ytd-video-renderer,
- ytd-search #description.ytd-channel-renderer,
- ytd-search #list,
- ytd-search #expandable-metadata.ytd-video-renderer:not(:empty),
- ytd-search ytd-exploratory-results-renderer.ytd-item-section-renderer,
- ytd-search ytd-horizontal-card-list-renderer.ytd-item-section-renderer:not(:first-child),
- ytd-search ytd-reel-shelf-renderer.ytd-item-section-renderer,
- ytd-search ytd-shelf-renderer.ytd-item-section-renderer,
- .hideRightSidebar ytd-search #secondary.ytd-two-column-search-results-renderer {
- display: none !important;
- }
-
- ytd-search #view-more.ytd-playlist-renderer {
- display: block;
- }
-
- ytd-search #container.ytd-search {
- width: 100%;
- max-width: calc(var(--videos-per-row) * (var(--ytd-rich-grid-item-max-width) + var(--ytd-rich-grid-item-margin)));
- }
-
- ytd-search #header.ytd-search,
- ytd-search ytd-two-column-search-results-renderer,
- ytd-search #primary.ytd-two-column-search-results-renderer {
- max-width: 100% !important;
- }
-
- ytd-search #contents>ytd-item-section-renderer,
- ytd-search #contents>ytd-item-section-renderer>#contents {
- display: contents;
- }
-
- ytd-search #contents.ytd-section-list-renderer {
- display: flex;
- flex-wrap: wrap;
- }
-
- ytd-search ytd-video-renderer,
- ytd-search ytd-radio-renderer,
- ytd-search ytd-playlist-renderer,
- ytd-search ytd-show-renderer,
- ytd-search ytd-channel-renderer {
- margin-left: calc(var(--ytd-rich-grid-item-margin) / 2);
- margin-right: calc(var(--ytd-rich-grid-item-margin) / 2);
- width: calc(100% / var(--videos-per-row) - var(--ytd-rich-grid-item-margin) - 0.01px);
- margin-bottom: 24px;
- }
-
- ytd-search ytd-movie-renderer {
- margin-left: calc(var(--ytd-rich-grid-item-margin) / 2);
- margin-right: calc(var(--ytd-rich-grid-item-margin) / 2);
- width: calc(200% / var(--videos-per-row) - var(--ytd-rich-grid-item-margin) - 0.01px);
- margin-bottom: 24px;
- }
-
- ytd-search yt-did-you-mean-renderer,
- ytd-search yt-showing-results-for-renderer,
- ytd-search ytd-thumbnail.ytd-video-renderer,
- ytd-search ytd-playlist-thumbnail.ytd-radio-renderer,
- ytd-search ytd-playlist-thumbnail.ytd-playlist-renderer,
- ytd-search ytd-playlist-thumbnail.ytd-show-renderer {
- min-width: 100% !important;
- }
-
- ytd-search .thumbnail-container.ytd-movie-renderer {
- min-width: 0 !important;
- }
-
- ytd-search ytd-item-section-renderer[top-spacing-zero]:first-child #contents.ytd-item-section-renderer .ytd-item-section-renderer:first-child:not(yt-did-you-mean-renderer):not(yt-showing-results-for-renderer) {
- margin-top: 16px;
- }
-
- ytd-search #dismissible.ytd-video-renderer,
- ytd-search ytd-radio-renderer,
- ytd-search ytd-playlist-renderer,
- ytd-search #content-section.ytd-channel-renderer,
- ytd-search #info-section.ytd-channel-renderer,
- ytd-search ytd-show-renderer {
- flex-direction: column;
- }
-
- ytd-search .ytd-channel-renderer {
- align-self: center;
- text-align: center;
- }
-
- ytd-search #video-title:is(.ytd-video-renderer, .ytd-radio-renderer, .ytd-playlist-renderer, .ytd-show-renderer, .ytd-movie-renderer),
- ytd-search #channel-title.ytd-channel-renderer {
- font-size: 1.6rem;
- line-height: 2.2rem;
- font-weight: 500;
- }
-
- ytd-search #channel-name.ytd-video-renderer,
- ytd-search ytd-video-meta-block:not([rich-meta]) .ytd-video-meta-block:is(#metadata-line, #byline-container),
- ytd-search #metadata.ytd-channel-renderer,
- ytd-search #view-more.ytd-playlist-renderer {
- font-size: 1.4rem;
- line-height: 2rem;
- max-height: 2rem;
- }
-
- ytd-search h3:is(.ytd-video-renderer, .ytd-radio-renderer, .ytd-playlist-renderer, .ytd-show-renderer),
- ytd-search #channel-title.ytd-channel-renderer {
- margin: 12px 0 4px 0 !important;
- }
-
- ytd-search #content.ytd-playlist-renderer,
- ytd-search #content.ytd-radio-renderer,
- ytd-search #info-section.ytd-channel-renderer {
- flex-basis: 100%;
- }
-
- ytd-search ytd-playlist-thumbnail.ytd-show-renderer {
- flex: 0 !important;
- }
-
- ytd-search #info.ytd-channel-renderer {
- padding: 0 0px 16px 0;
- }
-
- ytd-search #avatar-section.ytd-channel-renderer,
- ytd-search ytd-playlist-thumbnail.ytd-playlist-renderer {
- margin: 0 !important;
- }
-
- ytd-search .ytd-channel-renderer:is(#buttons, #purchase-button, #subscribe-button) {
- padding: 0 !important;
- }
-
- ytd-search .text-wrapper.ytd-video-renderer {
- position: relative;
- width: 100%;
- }
-
- ytd-search #channel-thumbnail.ytd-video-renderer {
- position: absolute;
- top: 12px;
- }
-
- ytd-search yt-img-shadow.ytd-video-renderer img.yt-img-shadow {
- width: 36px;
- height: 36px;
- }
-
- ytd-search #meta.ytd-video-renderer {
- display: contents;
- }
-
- ytd-search ytd-video-meta-block.ytd-video-renderer,
- ytd-search #buttons.ytd-video-renderer,
- ytd-search #badges.ytd-video-renderer {
- order: 2;
- }
-
- ytd-search ytd-video-renderer[use-search-ui] #channel-info.ytd-video-renderer {
- padding: 0;
- }
-
- ytd-search #badges.ytd-video-renderer {
- margin: 4px 0 0 0;
- }
-
- body[dir=ltr] ytd-search ytd-menu-renderer.ytd-video-renderer {
- position: absolute;
- right: -12px;
- margin: 4px 0 0 0;
- }
-
- body[dir=ltr] ytd-search #title-wrapper.ytd-video-renderer {
- padding-right: 24px;
- }
-
- body[dir=ltr] ytd-search .ytd-video-renderer:is(#title-wrapper, #channel-name, #badges, #buttons),
- body[dir=ltr] ytd-search ytd-video-meta-block.ytd-video-renderer {
- padding-left: 48px;
- }
-
- body[dir=rtl] ytd-search ytd-menu-renderer.ytd-video-renderer {
- position: absolute;
- left: -12px;
- margin: 4px 0 0 0;
- }
-
- body[dir=rtl] ytd-search #title-wrapper.ytd-video-renderer {
- padding-left: 24px;
- }
-
- body[dir=rtl] ytd-search .ytd-video-renderer:is(#title-wrapper, #channel-name, #badges, #buttons),
- body[dir=rtl] ytd-search ytd-video-meta-block.ytd-video-renderer {
- padding-right: 48px;
- }
-
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) #description-text.ytd-video-renderer,
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) #list.ytd-playlist-renderer {
- display: none;
- }
-
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) #metadata.ytd-video-meta-block,
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) #view-more.ytd-playlist-renderer {
- display: block;
- }
-
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) ytd-two-column-browse-results-renderer {
- width: calc(100% - 32px) !important;
- max-width: calc(var(--videos-per-row) * (var(--ytd-rich-grid-item-max-width) + var(--ytd-rich-grid-item-margin)));
- }
-
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) #contents.ytd-item-section-renderer,
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) ytd-item-section-renderer.ytd-section-list-renderer {
- display: contents;
- }
-
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) #contents.ytd-section-list-renderer {
- display: flex;
- flex-wrap: wrap;
- }
-
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) ytd-video-renderer,
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) ytd-playlist-renderer,
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) ytd-show-renderer {
- width: calc(100% / var(--videos-per-row) - var(--ytd-rich-grid-item-margin) - 0.01px);
- margin-left: calc(var(--ytd-rich-grid-item-margin) / 2);
- margin-right: calc(var(--ytd-rich-grid-item-margin) / 2);
- margin-bottom: 24px;
- }
-
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) ytd-thumbnail.ytd-video-renderer,
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) ytd-playlist-thumbnail.ytd-playlist-renderer,
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) ytd-playlist-thumbnail.ytd-show-renderer {
- width: 100%;
- height: 100%;
- flex: 0;
- }
-
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) ytd-thumbnail.ytd-video-renderer:before,
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) ytd-playlist-thumbnail.ytd-playlist-renderer:before,
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) ytd-playlist-thumbnail.ytd-show-renderer:before {
- display: block;
- content: "";
- padding-top: 56.11%;
- }
-
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) #dismissible.ytd-video-renderer,
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) ytd-playlist-renderer,
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) ytd-show-renderer {
- flex-direction: column;
- }
-
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) #video-title:is(.ytd-video-renderer, .ytd-playlist-renderer, .ytd-show-renderer) {
- font-size: 1.6rem;
- line-height: 2.2rem;
- font-weight: 500;
- }
-
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) ytd-video-meta-block:not([rich-meta]) .ytd-video-meta-block:is(#byline-container, #metadata-line),
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) #view-more.ytd-playlist-renderer {
- font-size: 1.4rem;
- line-height: 2rem;
- max-height: 2rem;
- }
-
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) .title-and-badge.ytd-video-renderer,
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) h3:is(.ytd-playlist-renderer, .ytd-show-renderer) {
- margin: 12px 0 4px 0;
- }
-
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) #badges.ytd-video-renderer {
- margin: 4px 0 0 0;
- }
-
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) #content.ytd-playlist-renderer {
- flex-basis: 100%;
- }
-
- ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) .text-wrapper.ytd-video-renderer {
- max-width: 100%;
- }
-
- body[dir=ltr] ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) ytd-menu-renderer.ytd-video-renderer {
- position: absolute;
- right: -12px;
- margin-top: 4px;
- }
-
- body[dir=ltr] ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) #meta.ytd-video-renderer {
- padding-right: 24px;
- }
-
- body[dir=rtl] ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) ytd-menu-renderer.ytd-video-renderer {
- position: absolute;
- left: -12px;
- margin-top: 4px;
- }
-
- body[dir=rtl] ytd-browse[page-subtype=channels][has-c4-tabbed-header-renderer]:has(.yt-tab-group-shape-wiz__slider[style*="width: 0px;"]) #meta.ytd-video-renderer {
- padding-left: 24px;
- }
- </style>`);