您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Injects a copy link button next to the download button
当前为
// ==UserScript== // @version 1.0 // @name BuzzCopy // @namespace kyoruno // @author kyoruno // @license MIT // @description Injects a copy link button next to the download button // @icon https://buzzheavier.com/favicon.ico // @match https://buzzheavier.com/* // @exclude https://buzzheavier.com/ // @exclude https://buzzheavier.com/login* // @exclude https://buzzheavier.com/pricing* // @exclude https://buzzheavier.com/blog* // @exclude https://buzzheavier.com/speedtest* // @exclude https://buzzheavier.com/whyareyougay* // @exclude https://buzzheavier.com/developers* // @exclude https://buzzheavier.com/privacy* // @exclude https://buzzheavier.com/terms* // @exclude https://buzzheavier.com/contact* // @exclude https://buzzheavier.com/help* // @exclude https://buzzheavier.com/notfound* // @exclude https://buzzheavier.com/favicon.ico* // @grant none // @run-at document-end // ==/UserScript== (function() { 'use strict'; const log = (...args) => console.log("BuzzCopy:", ...args); const buzzUrl = new URL(window.location.href); if (!buzzUrl.pathname.endsWith('/download')) { buzzUrl.pathname = buzzUrl.pathname.replace(/\/+$/, '') + '/download'; } function createButton() { const copyButton = document.createElement('a'); copyButton.className = 'link-button'; copyButton.textContent = 'Copy'; copyButton.addEventListener('click', function(event) { event.preventDefault(); fetch(buzzUrl) .then(response => { const hxRedirect = response.headers.get("hx-redirect"); if(!hxRedirect) { log("could not retrieve redirect URL"); alert("BuzzCopy: could not retrieve the link"); return; } navigator.clipboard.writeText(hxRedirect) .then(() => log(hxRedirect)) .catch(err => { log(err); alert("BuzzCopy: failed to use clipboard, check console logs"); }); }) .catch(error => { log(error); }); }); return copyButton; } function insertButton() { const targetButton = document.querySelector('a.gay-button'); if (!targetButton) { log("button not found"); return; } const targetLi = targetButton.closest('li'); if (!targetLi) { log("button's parent <li> not found"); return; } const button = createButton(); const space = document.createElement('span'); space.textContent = ' - '; targetLi.insertBefore(button, targetButton); targetLi.insertBefore(space, targetButton); } insertButton(); })();