您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a button that passes the URL to youtubetranscript.com for the transcript
当前为
// ==UserScript== // @name YouTube Script Downloader Button // @description Adds a button that passes the URL to youtubetranscript.com for the transcript // @author dhaden // @match https://www.youtube.com/watch* // @grant none // @license MIT // @run-at document-end // @version 1.0 // @namespace https://greasyfork.org/users/186630 // ==/UserScript== const buttons = ["Script"]; // The YouTube styled button in CSS // There is no consistent variable for border-radius (button roundness) yet. // Old border-radius: 2px. New border-radius: 20px or higher. const cssText = ` .download-button { border-radius: 20px; display: flex; flex-direction: row; cursor: pointer; background-color: var(--yt-spec-10-percent-layer); color: var(--yt-spec-text-secondary); padding: var(--yt-button-padding); margin: auto var(--ytd-subscribe-button-margin, 12px); white-space: nowrap; font-size: var(--ytd-tab-system-font-size, 1.4rem); font-weight: var(--ytd-tab-system-font-weight, 500); letter-spacing: var(--ytd-tab-system-letter-spacing, .007px); text-transform: var(--ytd-tab-system-text-transform, uppercase); } .download-button-text { --yt-formatted-string-deemphasize_-_display: initial; --yt-formatted-string-deemphasize-color: var(--yt-spec-text-secondary); --yt-formatted-string-deemphasize_-_margin-left: 4px; } .download-button-container { display: flex; flex-direction: row; } .download-playlist-button { margin-right: 8px; margin-left: 0px; } .download-playlist-button-text { color: #E4E4E4; } `; (function() { 'use strict'; window.onload = () => { // playlist pages will try to add the buttons repeatedly let playlistButtonsAdded = false; window.addEventListener("yt-navigate-finish", () => { setTimeout(() => { // apply CSS const style = document.createElement("style"); style.type = "text/css"; style.innerHTML = cssText; document.head.appendChild(style); // check for playlist and create appropriate query let query = "#analytics-button:not(.download-panel)"; let inPlaylist = location.href.includes("/playlist"); if (inPlaylist && !playlistButtonsAdded) { query += ", div.metadata-buttons-wrapper:not(.download-panel)"; playlistButtonsAdded = true; } document.querySelectorAll(query).forEach(panel => { // make an outer div container (to flex buttons side-by-side) const container = document.createElement("div"); container.classList.add("download-button-container"); for (let i = 0; i < buttons.length; i++) { const button = document.createElement("div"); // the button button.classList.add("download-button"); if (inPlaylist) { button.classList.add("download-playlist-button"); } button.addEventListener("click", () => { // passthrough function let link = (window.location.search); // get the search portion of the current URL let linkbase = "https://www.youtubetranscript.com/"; // get the base domain part of the current URL var string_url = linkbase + link; // combine them together without /watch (function (change) { window.location = string_url; // click the button and the Web link becomes the new combo URL })(); }); const buttonText = document.createElement("span"); // button text buttonText.classList.add("download-button-text"); if (inPlaylist) { buttonText.classList.add("download-playlist-button-text"); } buttonText.innerHTML = buttons[i]; button.appendChild(buttonText); // append text to button container.appendChild(button); } panel.classList.add("download-panel"); panel.insertBefore(container, panel.firstElementChild); }); }, 200); }); }; })();