您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
舍弃了自动下载,修改为了手动下载。pc\手持端均可使用
// ==UserScript== // @name 豆瓣音乐人歌曲下载 // @namespace http://tampermonkey.net/ // @version 1.7 // @description 舍弃了自动下载,修改为了手动下载。pc\手持端均可使用 // @author zephyrus // @match *://music.douban.com/* // @match *://site.douban.com/* // @match *://artist.douban.com/m/* // @icon https://www.google.com/s2/favicons?sz=64&domain=douban.com // @grant none // @match *://*.douban.com/* // @grant none // ==/UserScript== (function() { 'use strict'; // 输出调试信息 console.log('脚本被执行了,你可以放心了!'); // 获取原始路径部分 var path = window.location.pathname; // 判断是否包含 '/m/' if (path.includes('/m/')) { // 移除路径中的 '/m' path = path.replace('/m', ''); // 重定向到指定网址 window.location.href = 'https://site.douban.com' + path; } // 在 Audio 元素加载完成时显示下载链接 function displayDownloadLink(url) { console.log('[Audio Monitor] Audio loaded:', url); // 如果 URL 是 MP3 文件,则创建下载链接 if (url.endsWith('.mp3')) { createDownloadLink(url); } } // 创建下载链接的函数 function createDownloadLink(url) { // 创建包含下载链接的容器 var linkContainer = document.createElement('button'); linkContainer.style.cssText = 'position: fixed; top: 43px; left: 10px; z-index: 9999; font-size: 13px;'; linkContainer.className = 'pure-button btn-playlist'; // 创建下载链接 var downloadLink = document.createElement('a'); // 将文件内容转成 Data URI,并设置为 href fetch(url) .then(response => response.blob()) .then(blob => { var reader = new FileReader(); reader.onload = function() { downloadLink.href = reader.result; }; reader.readAsDataURL(blob); }); // 获取 URL 的最后一段字符作为文件名 var fileName = url.split('/').pop(); downloadLink.download = fileName; // 设置下载链接的样式和文本内容 downloadLink.style.cssText = 'color: #53cbaa; text-decoration: none; font-weight: bold; cursor: pointer;'; downloadLink.textContent = '下载当前歌曲'; // 将下载链接添加到容器中 linkContainer.appendChild(downloadLink); // 将容器添加到文档的 body 中 document.body.appendChild(linkContainer); } // 重写 Audio 构造函数,添加 canplaythrough 事件监听器 var nativeAudio = Audio; Audio = function(src) { var audio = new nativeAudio(src); // 在 canplaythrough 事件触发时显示下载链接 audio.addEventListener('canplaythrough', function() { displayDownloadLink(audio.src); console.log(audio.src); }); return audio; }; })();