您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a Download Audio button to Soundgasm.net audio posts.
// ==UserScript== // @name Soundgasm Downloader // @namespace https://github.com/diggtrap // @author diggtrap // @description Adds a Download Audio button to Soundgasm.net audio posts. // @include https://soundgasm.net/* // @icon https://i.imgur.com/BwX91V0.png // @version 0.401 // @license GNU // ==/UserScript== // Main function to add download button function addDownloadButton() { // Fetch the page content asynchronously fetch(window.location.href) .then(response => response.text()) .then(html => { // Parse the HTML content to extract the M4A link const m4aLinkRegex = /m4a:\s*"(.*?)"/; const m4aMatch = html.match(m4aLinkRegex); const m4aUrl = m4aMatch ? m4aMatch[1] : null; if (m4aUrl) { // Find the title of the audio post const audioTitleElement = document.querySelector('div.jp-title'); const audioTitleText = audioTitleElement ? audioTitleElement.textContent.trim() : ""; // Extract the text before the second set of square brackets const match = audioTitleText.match(/\[.*?\](.*?)(?=\[|$)/); const audioTitle = match ? match[0] : audioTitleText; // Find the creator's username from the URL const audioCreatorMatch = window.location.href.match(/\/u\/([^\/]+)/); const audioCreator = audioCreatorMatch ? audioCreatorMatch[1] : ""; // Create download link with post title, creator, and default text style const downloadButton = document.createElement('a'); downloadButton.href = m4aUrl; downloadButton.target = "_blank"; downloadButton.title = "Click to open in a New Tab; Right-click and 'Save link as' to Download"; downloadButton.textContent = `Download ${audioTitle} by ${audioCreator}`; downloadButton.style.position = "fixed"; downloadButton.style.bottom = "20px"; downloadButton.style.right = "20px"; downloadButton.style.padding = "10px"; downloadButton.style.backgroundColor = "#444"; downloadButton.style.color = "white"; downloadButton.style.border = "none"; downloadButton.style.borderRadius = "5px"; downloadButton.style.cursor = "pointer"; downloadButton.style.textDecoration = "none"; downloadButton.style.fontWeight = "normal"; downloadButton.style.fontSize = "14px"; document.body.appendChild(downloadButton); } }); } // Call the main function addDownloadButton();