写一个简单的Tampermonkey油猴插件—实现音乐下载

前言;油猴插件的安装与简介请参考,本文不再赘述Tampermonkey油猴插件——安装与使用教程 - 知乎 (zhihu.com)

一个基本的油猴插件有一下组成

 打开复制qq音乐播放器的网站

 目标是将播放的音乐下载到本地(当然仅限于免费歌曲)

打开F12查看音乐标签的位置

可以看到音乐的url可以直接从audio标签的src属性获得

再这是歌曲的名字位于类song_info_name的a标签中可以获得

则代码如下

var songname=document.querySelector('.song_info__name');//先获取容器的位置
var name=songname.querySelector('a').innerText;//查找节点的a标签获取歌曲的名字

var music_url=document.querySelector('audio');
var url=music_url.src;//获取下载的url

 获取完则可以开始下载

下载可以直接使用油猴自带的api,开头添加一下内容即可

// @grant         GM_download

 封装一个下载的函数

function downloadFile(url1, fileName) {
 GM_download({
url: url1,
name:fileName, //不填则自动获取文件名
saveAs: true, //布尔值,显示"保存为"对话框
onerror: function (error) {
//如果下载最终出现错误,则要执行的回调
console.log(error)
alert("下载失败");
}
})
}

调用的话可以通过加入一个按钮来实现,效果如下

具体代码如下

var button1 = document.createElement('button');
    button1.textContent = "一键下载"; //按钮内容
    button1.style.width = "90px"; //按钮宽度
    button1.style.height = "28px"; //按钮高度
    button1.style.align = "center"; //文本居中
    button1.style.color = "white"; //按钮文字颜色
    button1.style.background = "#31c27c"; //按钮底色
    button1.style.border = "1px solid #e33e33"; //边框属性
    button1.style.borderRadius = "10px"; //按钮四个角弧度
    songname.appendChild(button1);//把按钮加入子节点

 然后给按钮绑定点击的事件

button1.addEventListener('click', function() {
var songname=document.querySelector('.song_info__name');
var name=songname.querySelector('a').innerText;
var music_url=document.querySelector('audio');
var url=music_url.src;//获取下载的url
downloadFile(url,name);
    });
}

可以调试试试,

发现脚本运行了,但是没用出现按钮, 

通过断点发现,此时dom还未加载出来,

我们可以给函数加个延时属性

    setTimeout(start, 1000);

 再调试发现可以正常显示并且下载 ,大功告成

结合附上源代码




// ==UserScript==
// @name         QQ音乐下载
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       风间花雨
// @match       https://y.qq.com/n/ryqq/player
// @icon        https://y.qq.com/mediastyle/yqq/img/logo.png?max_age=2592000
// @grant         GM_download
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';
function downloadFile(url1, fileName) {
 GM_download({
url: url1,
name:fileName, //不填则自动获取文件名
saveAs: true, //布尔值,显示"保存为"对话框
onerror: function (error) {
//如果下载最终出现错误,则要执行的回调
console.log(error)
alert("下载失败");
},


})

}

// 创建新按钮
function start(){
var button1 = document.createElement('button');
    button1.textContent = "一键下载"; //按钮内容
    button1.style.width = "90px"; //按钮宽度
    button1.style.height = "28px"; //按钮高度
    button1.style.align = "center"; //文本居中
    button1.style.color = "white"; //按钮文字颜色
    button1.style.background = "#31c27c"; //按钮底色
    button1.style.border = "1px solid #e33e33"; //边框属性
    button1.style.borderRadius = "10px"; //按钮四个角弧度
console.log(button1);
var songname=document.querySelector('.song_info__name');
console.log(songname);
// 添加新按钮到页面中
songname.appendChild(button1);
button1.addEventListener('click', function() {
      // 在这里编写点击按钮后执行的代码
 var name=songname.querySelector('a').innerText;
var music_url=document.querySelector('audio');
var url=music_url.src;//获取下载的url
downloadFile(url,name);

    });
}
    setTimeout(start, 1000);
    // Your code here...
})();

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值