您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Sorts the YouTube feed so that all scheduled streams come before finished streams and uploaded videos.
当前为
// ==UserScript== // @name YT Feed Sorter // @namespace YTFeedSorter // @version 0.1 // @description Sorts the YouTube feed so that all scheduled streams come before finished streams and uploaded videos. // @match *://*.youtube.com/* // @author KFP // ==/UserScript== (function() { 'use strict'; const feedSelector = '[page-subtype="subscriptions"] #contents.ytd-section-list-renderer'; const blockSelector = '#items.ytd-grid-renderer'; const liveSelector = '.badge-style-type-live-now'; const soonSelector = '.ytd-toggle-button-renderer'; const sortBlock = block => { [...block.children].sort((a, b) => { const ai = a.querySelector(liveSelector) ? 2 : a.querySelector(soonSelector) ? 1 : 0; const bi = b.querySelector(liveSelector) ? 2 : b.querySelector(soonSelector) ? 1 : 0; return (ai > bi) ? -1 : (ai < bi) ? 1 : 0; }).forEach(item => block.appendChild(item)); }; const observer = new MutationObserver(mutations => { for (const mut of mutations) { for (const added of mut.addedNodes) { const block = added.querySelector(blockSelector); if (block) sortBlock(block); } } }); const initFeed = setInterval(() => { const feed = document.querySelector(feedSelector); if (feed) { feed.querySelectorAll(blockSelector).forEach(sortBlock); observer.observe(feed, {childList: true}); clearInterval(initFeed); } }, 100); })();