您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds download buttons next to tracks in Shazam My Library for audio previews.
// ==UserScript== // @name Shazam My Library Audio Downloader // @namespace http://tampermonkey.net/ // @version 1.5 // @description Adds download buttons next to tracks in Shazam My Library for audio previews. // @author Jeffrey // @match https://www.shazam.com/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; console.log('Script is running...'); // Function to add the download button function addDownloadButtons() { // Find all track items that have the audio URL let trackElements = document.querySelectorAll('article[data-shz-audio-url]'); console.log(`Found ${trackElements.length} tracks.`); trackElements.forEach(track => { // Ensure no duplicate button if (!track.querySelector('.download-button')) { // Create the download button let downloadButton = document.createElement('a'); downloadButton.textContent = '⬇️ Download Preview'; downloadButton.classList.add('download-button'); downloadButton.style.display = 'inline-block'; // Ensure the button is displayed downloadButton.style.marginLeft = '10px'; downloadButton.style.cursor = 'pointer'; downloadButton.style.fontSize = '14px'; downloadButton.style.color = '#007bff'; // Make the button blue and visible downloadButton.style.textDecoration = 'none'; // Remove underline downloadButton.style.fontWeight = 'bold'; // Make it more prominent // Get the audio preview URL from the element's data attribute let previewUrl = track.getAttribute('data-shz-audio-url'); console.log('Preview URL:', previewUrl); // Set the download link attributes if (previewUrl) { downloadButton.href = previewUrl; downloadButton.download = 'audio-preview.m4a'; // Name the file accordingly } // Insert the button into the track details area (append to the last div in details) let trackDetails = track.querySelector('.details'); if (trackDetails) { // Try appending it in a more prominent position trackDetails.appendChild(downloadButton); console.log('Download button added.'); } } }); } // Observe changes in the DOM to detect when the tracks are loaded const observer = new MutationObserver((mutationsList, observer) => { const trackElements = document.querySelectorAll('article[data-shz-audio-url]'); if (trackElements.length > 0) { console.log('Tracks detected, adding download buttons...'); addDownloadButtons(); observer.disconnect(); // Stop observing once tracks are found and buttons are added } }); // Start observing the page for changes in the child elements of the body observer.observe(document.body, { childList: true, subtree: true }); })();