您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds sort and remove button for the Youtube Watch Later page
- // ==UserScript==
- // @id SortRemoveYouTubeWatchLaterlist
- // @namespace https://gf.qytechs.cn/users/42190
- // @name Sort/Remove YouTube Watch Later List
- // @Author Jus7ForFun
- // @version 0.2.2
- // @description Adds sort and remove button for the Youtube Watch Later page
- // @match https://www.youtube.com/*
- // @match http://www.youtube.com/*
- // @license GNU GPL v3
- // @require https://code.jquery.com/jquery-latest.min.js
- // ==/UserScript==
- function waitForKeyElements (
- selectorTxt, /* Required: The jQuery selector string that
- specifies the desired element(s).
- */
- actionFunction, /* Required: The code to run when elements are
- found. It is passed a jNode to the matched
- element.
- */
- bWaitOnce, /* Optional: If false, will continue to scan for
- new elements even after the first match is
- found.
- */
- iframeSelector /* Optional: If set, identifies the iframe to
- search.
- */
- ) {
- var targetNodes, btargetsFound;
- if (typeof iframeSelector == "undefined")
- targetNodes = $(selectorTxt);
- else
- targetNodes = $(iframeSelector).contents ()
- .find (selectorTxt);
- if (targetNodes && targetNodes.length > 0) {
- btargetsFound = true;
- /*--- Found target node(s). Go through each and act if they
- are new.
- */
- targetNodes.each ( function () {
- var jThis = $(this);
- var alreadyFound = jThis.data ('alreadyFound') || false;
- if (!alreadyFound) {
- //--- Call the payload function.
- var cancelFound = actionFunction (jThis);
- if (cancelFound)
- btargetsFound = false;
- else
- jThis.data ('alreadyFound', true);
- }
- } );
- }
- else {
- btargetsFound = false;
- }
- //--- Get the timer-control variable for this selector.
- var controlObj = waitForKeyElements.controlObj || {};
- var controlKey = selectorTxt.replace (/[^\w]/g, "_");
- var timeControl = controlObj [controlKey];
- //--- Now set or clear the timer as appropriate.
- if (btargetsFound && bWaitOnce && timeControl) {
- //--- The only condition where we need to clear the timer.
- clearInterval (timeControl);
- delete controlObj [controlKey];
- }
- else {
- //--- Set a timer, if needed.
- if ( ! timeControl) {
- timeControl = setInterval ( function () {
- waitForKeyElements ( selectorTxt,
- actionFunction,
- bWaitOnce,
- iframeSelector
- );
- },
- 300
- );
- controlObj [controlKey] = timeControl;
- }
- }
- waitForKeyElements.controlObj = controlObj;
- }
- waitForKeyElements ("#pl-video-table", SortButton);
- waitForKeyElements(".playlist-actions", RemoveButton);
- function qselector(query, context) {
- return (context || document).querySelector(query);
- }
- function MakeButton(text, action) {
- var btn = document.createElement('button');
- btn.className = 'yt-uix-button yt-uix-button-size-default yt-uix-button-default';
- btn.innerHTML = '<span class="yt-uix-button-content">' + text + '</span>';
- btn.addEventListener('click', action, false);
- qselector('.playlist-actions').appendChild(btn);
- }
- function RemoveButton () {
- MakeButton ('Clear The List', function(evt) {
- Removelist ();
- });
- }
- function SortButton () {
- MakeButton ('Sort Alphabetically', function(evt) {
- SortList ();
- });
- }
- function Removelist(){
- var el = document.getElementsByClassName('pl-video-edit-remove');
- if (el.length > 0) {
- el[el.length-1].click();
- setTimeout(Removelist,200);
- }
- }
- function SortList () {
- $('html, body').css('display', 'none');
- var WatchLaterListRows = [],
- SortedList = '';
- $('#pl-video-table > tbody > tr').each(function() {
- var video = $(this);
- WatchLaterListRows.push(video[0]);
- video.remove();
- });
- var Sorted = $.makeArray(WatchLaterListRows).sort(function(a,b){
- return ( $(a).attr('data-title') < $(b).attr('data-title') ) ? -1 : 1;
- });
- $.each(Sorted, function(index, video) {
- SortedList += video.outerHTML;
- });
- $('#pl-load-more-destination').append(SortedList);
- $('html, body').css('display', 'block');
- }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址