油猴脚本编写入门——网易云下载工具

前言

  现在的各种音乐站点实在有点烦人,一言不合就要求下载客户端啥的,我觉得,既然我能够在网页上在线听到音乐,我就一定能把它弄下来,所以我开始了一些尝试。

成果

  目前已经做出的下载工具已经发不到Greasy Fork,大家可以自行取用传送门

先观察一下

  打开网易云某一首歌的页面,首先可以看到URL中又一个id,如图:
  然后查看网页主体,发现除了顶栏其它都由iframe加载:
  然后结合大佬的研究(传送门),可以得到音乐文件的地址。
  所以我决定插入一个按钮到页面中,方便用户直接访问音乐文件。

代码如下

// ==UserScript==
// @name 网易云音乐下载助手
// @description 用于在网页端直接下载网易云音乐
// @version 0.0.1
// @match https://music.163.com/
// @require https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js
// @compatible Chrome
// @updateURL https://greasyfork.org/zh-CN/scripts/377234-%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90%E4%B8%8B%E8%BD%BD%E5%8A%A9%E6%89%8B
// @installURL https://greasyfork.org/zh-CN/scripts/377234-%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90%E4%B8%8B%E8%BD%BD%E5%8A%A9%E6%89%8B
// @downloadURL https://greasyfork.org/zh-CN/scripts/377234-%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90%E4%B8%8B%E8%BD%BD%E5%8A%A9%E6%89%8B
// @supportURL https://www.sunyq.xin/
// ==/UserScript==

(function () {
    'use strict';

    // Your code here...

    var iframe = $("#g_iframe");
    iframe.on('load', function () {
        var url = geturl(getid());
        insertElem(url,iframe);
        console.log(url);;
        console.log(iframe[0].contentWindow.document.body);
    });
})();

function getid() {
    var id = window.location.href.split('=')[1];
    return id;
}

function geturl(id) {
    var str1 = "http://music.163.com/song/media/outer/url?id=";
    var str2 = ".mp3"
    return str1 + id + str2;
}

function insertElem(url,iframe) {
    var element = '<a class="u-btn2 u-btn2-2 u-btni-addply f-fl" hidefocus="true" title="直接下载" target="_blank" href="' + url + '"><i><em class="ply"></em>直接下载</i></a>';
    $("#content-operation",iframe[0].contentWindow.document.body).append(element);
}
sunyq

sunyq

一个苦逼的程序员,一不小心入了安全的坑,从此再也无法从坑里走出来。每天被大佬按在地上摩擦,希望大佬放过这个简陋的小站,别日了。

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>