您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Usable for copying a video ID to a clipboard for downloading via youtube-dl. By default it also prefixes the ID with "--" if it starts with a dash (this can be disabled).
// ==UserScript== // @name YouTube - add video ID text field // @namespace monnef.tk // @description Usable for copying a video ID to a clipboard for downloading via youtube-dl. By default it also prefixes the ID with "--" if it starts with a dash (this can be disabled). // @include http://www.youtube.com/watch* // @include https://www.youtube.com/watch* // @version 4 // @grant none // @require http://code.jquery.com/jquery-2.1.3.min.js // ==/UserScript== // if you don't want prefixing, replace the word "true" with "false" on the next line var prefixEnabled = true; var textId = "textId"; function textFieldClicked() { var e = $(this); e.select(); } function updateLinkValue(value) { var e = $("#" + textId); if (e.length == 0) { console.log("Critical, can't find my text field!"); } else { e.attr("value", value); } } function getLinkMatchFromLocation() { return window.location.href.match(/^.*watch(\?v=([^&]+)|\?(.*)).*$/); } function getLinkFromLocation() { var urlMatch = getLinkMatchFromLocation(); if (urlMatch.length >= 2) { var link = urlMatch[2]; if (prefixEnabled && link[0] === '-') link = "-- " + link; return link; } return ""; } function getVideoElement() { return $("video.video-stream"); } function insertInput() { $("#watch-header").each(function() { var e = $(this); var link = getLinkFromLocation(); if (link) { e.before($("<input />").attr("type", "text").css("margin", "5px 0 5px").css("border", "0").css("box-shadow", "0px 1px 2px rgba(0, 0, 0, 0.1)").css("font-size", "200%").attr("id", textId).click(textFieldClicked)); updateLinkValue(link); } }); } function refreshTextLink() { var link = getLinkFromLocation(); console.log("refreshing text link: " + link); if (link) updateLinkValue(link); } // beacuse mutation observers are broken in GreaseMonkey :( function installDomEventListener() { var videoElem = getVideoElement(); if (videoElem.length == 0) { console.log("Can't find video element!"); } else { videoElem.each(function() { this.parentNode.addEventListener("DOMNodeInserted", function(e) { console.log("modified (insertion): src=" + getVideoElement().attr("src")); refreshTextLink(); installDomEventListener(); }, false); }); } } function installRedStripWatching() { $('body').on('transitionend', function(event) { //console.log("transitionend: " + event.target.id); if (event.target.id != 'progress') return false; console.log("Detected red strip change."); refreshTextLink(); }); } insertInput(); installDomEventListener(); installRedStripWatching(); refreshTextLink();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址