网易云音乐信息快速获取

解析下载链接

// ==UserScript==
// @name         网易云音乐信息快速获取
// @namespace    http://tampermonkey.net/
// @version      0.1.8
// @description  解析下载链接
// @author       水煮木头
// @match        *://music.163.com/*
// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAABYxJREFUWEfFV3tQVGUU/9172YWBZXktGIEWPjKzGKRGiElHG61MTQNimMlS7KFkOk2TWc7wRy91+sNpJhMqG5seNlYYY6YpTTZWvnqIOL4VUkFUQBBYYJ+375y7e2N3724K03Rm7u73ne+c8zvfd893zrkSrpOOIyMlGupcFZgKSNlCLUs8Fp96j/hvBNR6CdjtgFQzDs3t12NayEemBmRmq1BfFVJF4jFFltZXXWJULUFaPRJN9ZF0wjpwArZ4E6LfFsqLxBNWLpJxsSYODO+74Hj5drR1G8kaGj6NEeNleGqEwmgjpUHwznihzB2D80eDdUMcaERGvhfSTuG8NVh4aHOpS4b6YBaa9w+0E+CAtnPv3sGAm8aOQvTEHHivdqKvdg9UJ4VBMEldXsgFA09Cd8D3zv8UKjd87Emvv4Skihd0NNfpRrTcXwJ3U0uwBzQ/I2Ii1x8Tsl/CF3ARwZWUJAZiMEnzPabgHh3ceeQE1L5+mMZkwfJksRE48Ub7sHg9in58V42iPSxZSufAtn4V5KQElunasAmeliuImXIvz/v3/YGLBXNgvuM2WOYXo3vj5rC2xMIigVlJV5RPwHfPQwLSbyHxlSVI++I9BvdcbkXb0goGJ/Je026XHK/lJOexU7i6YpW+HsYLyYcJhTKcAnwkBMVfKMXPfwy2dW/ygn3LDrRMK0X/zwd4bho5ArGzpiEmbwKUNBuibsmAkpIM99lzUB3OUGOBnLHlsK6XGnDzUyqkDUbSSnoahp/cA9pdz6YaXJm3VByXkDabkLxmJazPl0Ey8VsMIE97B9qXVbBOJJKgPh2l5XZjscTl5QzuPteE1meWMzhR2ufrEFc8k8f9vxxkfsykPBCwpCjiFJJYRk6woqvyE2PjgkvYIga4sISSMGSZV8j8ztXroPb28Tiu6GEGV91uXCl9DhcnFfI6k8uN81n5sH/zPU9t774Bc854bc3wV8qmIMwyWjOPGw0lNYWX7F9/p4tYFz/B42trP0DP5q087vtpH9R+B5SbUkUcZArHyuH47bCIKgXJb63QdQ0GWeSAv6QGrEfdOpzn7gsX+Wj9ZJ5wJw/t1dt1Ht19x4FDPI++O5uz4NWVa3ge+9AUfiVhyKInomABOSGeWaq9N3DJ4+G5ZAqszJ6OTubLVm0/fbv3arqyDHPuXYE2BszIAWomQsjr27WSPixgzbGfsjWQsGyhzqdXFXPfRJ67TpzR+MJR9+U2HvuTl67wz6CHHBCdTChRWiWikxgYSB0UcF4v4kpmI/PQTqRuXIvMw7VQbMlwnTyLvh9/1Y0piVpBVXvsoQAap1E4oBp2LO7mS3DWH2ex+IWlugE6gdayFznoyLH4BSWgfOH+6wIuFz+rV0Fak5MTWc95+JiuHzgQLVykREQRb6tcDVVcr+YJD8B59JSuT6BxRTOhCBDauX3rLi5EfhpW/SHiCmfAcbAOzXmzDB2gRCRRKjYDVDdD+j3Kchl1u7jAuBrOo2VyIehk/o2sSxbo6fvSI2Xo/bbWSMUlknW67Oteq40kaOeUbLxd3Zz3M37fgdgZU41EmSfFxSLlndd08O6PvwwHTuLVhM0V0FeO68gGWwqi6PxcpG//VI9muvOUB5xHjnM1pNcRMzmfM6f/ztu/2sa1w7gzgio65hwqxzrgWWRUCtzFweD+eVRmOvcDsbOnhxNhPjlESYhrgK92GChUjUJzOfFvuCWjTGd5/FFuREwiW0rRZng6rsFZdxS9235Az2db4A1/7QgzoCULOPKhNKUGuzRghTalAamYulVqncXBdBloD5GlteXB3wYhtYD6dmqd6aiGiDhQXXyYyAXB3wQkEOIAMclLap3FsEo8WhcyOG9It4psBe/cb87w2g3E+t8+ToM3/F99nv8NEHIVJRhx67UAAAAASUVORK5CYII=
// @grant        none
// @license      MIT
// @noframes
// ==/UserScript==

(function() {
    'use strict';
    function copy(text) {
        let txa = document.createElement('textarea');
        txa.value = text;
        document.body.appendChild(txa)
        txa.select()
        let res = document.execCommand('copy')
        document.body.removeChild(txa)
        console.log('复制成功!');
        //alert("复制成功!确认通知后自动暂停音乐");
    }
    function load() {
        var download_url = "";
        var img = "";
        var title = "";
        var subtitle = "";
        var artists = "";
        var album = "";
        let flag_info = 0;
        function local_copy(){
            copy(download_url + "\n" + img[0].currentSrc + "\n" + title[0].innerText + "\n" + subtitle + "\n" + artists + "\n" + album[0].innerText + "\n");
            if (JSON.stringify(subtitle) === '{}') {
                local_notice(download_url, img[0].currentSrc, artists + " - " + title[0].innerText, album[0].innerText);
            } else {
                local_notice(download_url, img[0].currentSrc, artists + " - " + title[0].innerText + "(" + subtitle + ")", album[0].innerText);
            }
        }
        // UI结果显示
        function local_notice(music_link, cover_link, filename_no_ext, album) {
            if (flag_info != 0) {
                document.getElementById("local_result").remove();
            }
            flag_info++;
            let dom = document.createElement('p');
            dom.id = "local_result";
            dom.innerHTML = "累计请求次数:" + flag_info;
            // dom.style = "max-width: 30%;";
            document.getElementById("sp-ac-container").appendChild(dom);
            dom.appendChild(document.createElement('br'));
            function copy_name() {
                copy(filename_no_ext);
            }
            let dom2 = document.createElement('a');
            dom2.id = "local_result_music";
            dom2.href = music_link;
            dom2.innerText = "音乐链接";
            if (music_link == '') {
                dom2.innerText = "音乐链接:<空>";
            }
            dom2.onclick = copy_name;
            dom.appendChild(dom2);
            dom.appendChild(document.createElement('br'));
            let dom3 = document.createElement('a');
            dom3.id = "local_result_cover";
            dom3.href = cover_link;
            dom3.innerText = "封面链接";
            dom3.onclick = copy_name;
            dom.appendChild(dom3);
            dom.appendChild(document.createElement('br'));
            let dom4 = document.createElement('p');
            dom4.innerText = "专辑:" + album;
            dom.appendChild(dom4);
            dom.appendChild(document.createElement('br'));
            let dom5 = document.createElement('a');
            dom5.id = "local_button_recopy";
            // dom5.href = cover_link;
            dom5.innerText = "点这重新复制信息";
            dom5.onclick = local_copy;
            dom.appendChild(dom5);
            dom.appendChild(document.createElement('br'));
            let dom6 = document.createElement('a');
            dom6.id = "local_button_recopy";
            // dom6.href = cover_link;
            dom6.innerText = "点这复制音乐名";
            dom6.onclick = copy_name;
            dom.appendChild(dom6);
        }
        function local_func (){
            var temp = document.getElementById("g_iframe").contentWindow;  // 进入新的窗口
            img = temp.document.getElementsByClassName("j-img");       // 封面
            title = temp.document.getElementsByClassName("f-ff2");     // 歌曲名
            subtitle = temp.document.getElementsByClassName("subtit"); // 副标题
            if (JSON.stringify(subtitle) === '{}') {
                subtitle = "";
            } else {
                subtitle = subtitle[0].innerText;
            }

            var temp2 = temp.document.getElementsByClassName("s-fc4");     // 歌手 + 专辑
            var artist = temp2[0].getElementsByClassName("s-fc7");         // 歌手
            album = temp2[1].getElementsByClassName("s-fc7");          // 专辑

            var play = temp.document.getElementsByClassName("u-btn2");
            const event = new MouseEvent('click', {
                view: window,
                bubbles: true,
                cancelable: true
            });
            play[0].dispatchEvent(event);

            setTimeout(function (){
                var tmp=performance.getEntriesByType("resource");
                download_url = "";
                if (JSON.stringify(tmp) === '{}') {
                    console.log("警告!您未有任何请求资源!");
                    download_url = "";
                }
                for (var i = tmp.length - 1; i >= 0; i--) {
                    if (tmp[i].initiatorType == "audio") {
                        console.log("下载链接:\n" + tmp[i].name);
                        download_url = tmp[i].name;
                        break;
                    }
                }
                if (download_url == "") {
                    console.log("警告!未能成功获取下载链接!请在播放您想要下载的资源后重试!");
                }

                console.log("封面链接:\n" + img[0].currentSrc);
                console.log("曲名:\n" + title[0].innerText);
                if (subtitle != "") {
                    console.log("副标题:\n" + subtitle);
                }
                artists=artist[0].innerText;
                for(var i2 = 1, len = artist.length; i2 < len; i2++) {
                    artists = artists + "," + artist[i2].innerText;
                }
                console.log("歌手:\n" + artists);
                console.log("专辑:\n" + album[0].innerText);
                local_copy();
                document.getElementsByClassName("ply")[0].click();
            }, 2000);
            /*   ^
                 |
                 |        (n000为n秒,默认为2秒)
                 `------  修改这里的数值以更改延迟
            */
        }
        let Container = document.createElement('div');
        Container.id = "sp-ac-container";
        Container.style.position="fixed";
        Container.style.left="0px";
        Container.style.top="20%";
        Container.style['z-index']="999999";
        let dom = document.createElement('button');
        dom.id = "myCustomize";
        dom.style = "position:relative;left:0px;top:0px;background-color: darkgray;padding: 5px;margin: 0px 0px 15px 0px;font-size: 13px;border: 1px;box-shadow: 0 0 5px;width: 2em;";
        dom.innerHTML = "点击查询";
        dom.onclick = local_func;
        Container.appendChild(dom);
        document.body.appendChild(Container);
    }
    window.onload = load;
})();