Greasy Fork is available in English.

ximalaya-download

喜马拉雅音乐下载

// ==UserScript==
// @name        ximalaya-download
// @namespace   https://greasyfork.org/zh-CN/users/135090
// @match       https://www.ximalaya.com/album/*
// @exclude     https://www.ximalaya.com/zhubo/*
// @grant       none
// @version     1.3.6
// @author      eaudouce
// @license     BSD
// @description 喜马拉雅音乐下载
// @run-at      document-end
// ==/UserScript==
(function() {
    "use strict";
    function init(){
        var array=document.querySelectorAll(".text>a:first-child");
        array.forEach(function(a){
            var n=a.href.split("/").length-1;
            var id = a.href.split("/")[n];
            var url = "https://www.ximalaya.com/revision/play/v1/audio?ptype=1&id="+id;
            /*api-101
            var url="http://www.ximalaya.com/tracks/"+id+".json";
            */
            /*api-102
            var url="https://m.ximalaya.com/m-revision/page/track/queryTrackPage/"+id
            */
            var murl="http://mobile.ximalaya.com/v1/track/baseInfo?device=iPhone&trackId="+id;
            var result;
            var src;
            var parent=a.parentNode;
            var div = document.createElement("div");
            parent.insertBefore(div,a);
            div.innerHTML="...";
            var xhr = new XMLHttpRequest();
            xhr.open("GET",url, true);
            xhr.onload = function () {
                if (xhr.readyState === xhr.DONE) {
                    if (xhr.status === 200) {
                        result=xhr.responseText;
                        src=JSON.parse(result).data.src;
                        //src=JSON.parse(result).play_path;//api-101
                        //src=JSON.parse(result).data.trackDetailInfo.trackInfo.playPath;//api-102
                        //msrc=JSON.parse(result).playUrl32;
                        if (src === undefined) {
                            div.innerHTML="<a href=\""+murl+"\" type=\"button\" target=\"_blank\">无法解析VIP内容</a>";
                        }else{
                            console.log(src);
                            div.innerHTML="<a href=\""+src+"\" type=\"button\" target=\"_blank\">下载</a>";
                        }
                    }
                }
            };
            xhr.send(null);
        });
    }
    setTimeout(init, 2000);
})();