您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Shows a list of the playlist video names in plaintext to be easily copied
当前为
// ==UserScript== // @name Export Youtube Playlist in plaintext // @namespace 1N07 // @version 0.6 // @description Shows a list of the playlist video names in plaintext to be easily copied // @author 1N07 // @require https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js // @include https://www.youtube.com/* // @grant none // ==/UserScript== (function() { 'use strict'; var listCreationAllowed = true; var urlAtLastCheck = ""; //add some CSS if(true) { addGlobalStyle(` tp-yt-paper-listbox#items { overflow-x: hidden; } #exportPlainTextList { cursor: pointer; height: 36px; width: 100%; display: flex; align-items: center; } #exportPlainTextList > img { height: 24px; width: 24px; color: rgb(144, 144, 144); padding: 0 13px 0 16px; filter: contrast(0%); } #exportPlainTextList > span { color: var(--yt-spec-text-primary); white-space: nowrap; font-size: var(--ytd-user-comment_-_font-size); font-weight: var(--ytd-user-comment_-_font-weight); line-height: var(--ytd-user-comment_-_line-height); letter-spacing: var(--ytd-user-comment_-_letter-spacing); } #exportPlainTextList:hover { background-color: rgba(255,255,255,0.1); } ytd-menu-popup-renderer.ytd-popup-container { overflow-x: hidden !important; max-height: none !important; } #listDisplayContainer { position: fixed; z-index: 9999; margin: 0 auto; background-color: #464646; padding: 10px; border-radius: 5px; left: 0; right: 0; max-width: 100vw; width: 750px; height: 750px; max-height: 90vh; top: 5vh; } #listDisplayContainer > textarea { box-sizing: border-box; width: 100%; margin: 10px 0; height: calc(100% - 40px); background-color: #262626; border: none; color: #EEE; border-radius: 5px; } #closeTheListThing { float: right; font-weight: bold; background-color: RGBA(255,255,255,0.25); border: none; font-size: 17px; border-radius: 10px; height: 25px; width: 25px; cursor: pointer; } #closeTheListThing:hover { background-color: rgba(255,255,255,0.5); } `); } setInterval(function(){ if(urlAtLastCheck != window.location.href) { urlAtLastCheck = window.location.href; if(urlAtLastCheck.includes("/playlist?list=")) InsertButtonASAP(); } }, 100); function InsertButtonASAP() { let buttonInsertInterval = setInterval(function(){ //wait for possible previous buttons to stop existing (due to how youtube loads pages) and for the space for the new button to be available if($("#exportPlainTextList").length == 0 && $("tp-yt-paper-listbox#items").length > 0) { $("tp-yt-paper-listbox#items").append(` <div id="exportPlainTextList"> <img src="https://i.imgur.com/emlur3a.png"> <span>Export Playlist</span> </div> `); $("#exportPlainTextList").click(ScrollUntillAllVisible); clearInterval(buttonInsertInterval); } }, 100); } function ScrollUntillAllVisible() { if(!listCreationAllowed) return; $("ytd-browse[page-subtype='playlist']").click(); listCreationAllowed = false; $("#exportPlainTextList").after(`<p id="listBuildMessage" style="color: red; font-size: 1.33em;">Getting list...<br>please click out of the popup to continue autoscrolling...</p>`); let scrollInterval = setInterval(function(){ if($("ytd-continuation-item-renderer.ytd-playlist-video-list-renderer").length) $(document).scrollTop($(document).height()); else { $("#listBuildMessage").remove(); BuildAndDisplayList(); clearInterval(scrollInterval); } }, 100); } function BuildAndDisplayList() { let list = ""; $("ytd-playlist-video-renderer #content #video-title").each(function(){ list += $(this).attr("title") + "\n"; }); $("body").append(` <div id="listDisplayContainer"> <p style="text-align: center;"> <span style="font-size: 21px; font-weight: bold; color: #d9d9d9;">Playlist in plain text</span> <button id="closeTheListThing">X</button> </p> <textarea>`+list+`</textarea> </div> `); $("#listBuildMessage").remove(); $("#closeTheListThing").click(function(){ $("#listDisplayContainer").remove(); listCreationAllowed = true; }); } function addGlobalStyle(css) { var head, style; head = document.getElementsByTagName('head')[0]; if (!head) { return; } style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = css; head.appendChild(style); } })();