您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
喜马拉雅音乐或视频下载
当前为
// ==UserScript== // @name ximalaya-download // @namespace https://gf.qytechs.cn/zh-CN/users/135090 // @grant none // @version 1.4.3 // @author zwb83925462 // @license BSD // @description 喜马拉雅音乐或视频下载 // @run-at document-end // @require https://registry.npmmirror.com/ajax-hook/3.0.3/files/dist/ajaxhook.min.js // @require https://registry.npmmirror.com/crypto-js/4.2.0/files/crypto-js.js // @require https://registry.npmmirror.com/jquery/3.7.1/files/dist/jquery.min.js // @match https://www.ximalaya.com/sound/* // @match https://www.ximalaya.com/album/* // @match https://m.ximalaya.com/album/* // ==/UserScript== setTimeout(function(){ 'use strict'; //获取单曲解析结果 if (location.pathname.includes("/sound/")){ var playurl; var title=document?.querySelector("h1.title")?.textContent || document?.querySelector("h1.title-wrapper")?.textContent; if (window?.location?.pathname?.includes("sound")){ var trackid=window?.location?.pathname?.split("/")[2]; var item={ id:trackid, ttl:title }; setTimeout(function(){ var link = document.createElement("a"); var container = document.body; link.id="mp4"; link.style="position:fixed;top:10%;left:2%"; link.style.display = "block"; link.style.color = "#230de5"; getAllMusicURL2(item).then(result=>{ playurl=result?.toString(); return playurl; }).then(data=>{ if (data == undefined){ link.textContent="未购买,无法下载"; link.style.fontSize = "20px"; link.style.color="#F00"; } else { link.download=item.ttl; link.textContent=item.ttl; console.log(link.href=data); } }); container.append(link); },2000); } async function getAllMusicURL2(item) { function decrypt(t) { return CryptoJS.AES.decrypt({ ciphertext: CryptoJS.enc.Base64url.parse(t) }, CryptoJS.enc.Hex.parse('aaad3e4fd540b0f79dca95606e72bf93'), { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }).toString(CryptoJS.enc.Utf8); } var res = null; var ares = null; const timestamp = Date.parse(new Date()); var url = `https://www.ximalaya.com/mobile-playpage/track/v3/baseInfo/${timestamp}?device=web&trackId=${item.id}&forVideo=true&needMp4=true`; var aurl =`https://www.ximalaya.com/mobile-playpage/track/v3/baseInfo/${timestamp}?device=web&trackId=${item.id}`; $.ajax({ type: 'get', url: aurl, async: false, dataType: "json", success: function(resp) { try { ares = decrypt(resp.trackInfo.playUrlList[0].url); } catch (e) { console.log("无效"); } } }); $.ajax({ type: 'get', url: url, async: false, dataType: "json", success: function(resp) { try { res = decrypt(resp.trackInfo.playUrlList[0].url); item.ttl += ".mp4"; } catch (e) { console.log("解密错误,无视频"); item.ttl += ".m4a"; res=ares; } } }); return res; } } //获取专辑列表 if (location.pathname.includes("/album/") && location.hostname == "www.ximalaya.com"){ var alt=[]; var ttls=[]; var abid=location.pathname.includes("/album/") ? location.pathname.split("/")[2] : "77545064"; var abapi=`https://www.ximalaya.com/revision/album/v1/getTracksList?albumId=${abid}&pageNum=1&pageSize=100`; setTimeout(function(){ fetch(abapi,{method:"get"}) .then(res=>{var jsondata=res?.json();return jsondata;}) .then(res=>{ var trackcount=res?.data?.trackTotalCount; if (trackcount == 0){ var adt2; for (let name of document.scripts) { if (name.innerHTML.indexOf("window.__INITIAL_STATE__") == 0){ //console.log(name.innerHTML); if (name.innerHTML.indexOf("AlbumDetailTrackListV2") > 0) { var sid=name.innerHTML.indexOf("AlbumDetailTrackListV2")+24; var eid=name.innerHTML.indexOf("SeoSearchPage")-2; var adt=name.innerHTML.substring(sid,eid); console.log(adt2=adt); } } } var ti=JSON.parse(adt2); trackcount=ti.tracksInfo.trackTotalCount; console.log(trackcount); } var pagenums=(trackcount/100 | 0) + (trackcount % 100 >0 ? 1 : 0); //var pagenums = (trackcount % 100 >0 ? trackcount+100 : trackcount) / 100 | 0; console.log(pagenums); var tracks=res?.data?.tracks; tracks.forEach(i=>{ alt.push(i.url);ttls.push(i.title); }); return pagenums; }) .then(pns => { if (pns > 1){ var abapinew=abapi.replace('pageNum=1','pageNum='+pns); var morehtm=`<a id="newab" target="_blank" href="${abapinew}">${abapinew}</a>` morehtm += `<p id=tip>专辑曲目超过100,请修改API参数后再访问.最大页码为${pns}</p>`; var alink=document.createElement("p"); alink.innerHTML=morehtm; document.querySelector(".sound-list").append(alink); } document.querySelector(".sound-list > .download-more").remove(); document.querySelector(".sound-list>ul").innerHTML=""; document.querySelector(".sound-list>ul").style.listStyle = 'decimal'; ttls.forEach((it,n)=>{ console.log(it,n+1); var ulli=document.createElement("li"); var plink=document.createElement("a"); plink.href=alt[n]; plink.target="_blank"; plink.style.color="#088"; plink.style.fontSize="20px"; plink.textContent=it; ulli.append(plink); document.querySelector(".sound-list>ul").append(ulli); }); });},500) } //list-view__body,{"id","store" //移动版视图 if (location.pathname.includes("/album/") && location.hostname == "m.ximalaya.com"){ var adt2; for (let name of document.scripts) { if (name.innerHTML.indexOf("window.__INITIAL_STATE__") == 0){ //console.log(istt = name.innerHTML.substring(27,name.innerHTML.length-1)); //console.log(JSON.parse(istt)); if (name.innerHTML.indexOf(`"store"`) > 0) { var sid=name.innerHTML.indexOf(`"store"`)+8; var eid=name.innerHTML.length-2; var adt=name.innerHTML.substring(sid,eid); //console.log(adt2=adt); adt2=adt; } } } var ti=JSON.parse(adt2); var trackcount=ti.albumPage.trackPageInfo.total; console.log("总数"+trackcount); var pagenums=(trackcount/30 | 0) + (trackcount % 30 >0 ? 1 : 0); //var pagenums = (trackcount % 100 >0 ? trackcount+100 : trackcount) / 100 | 0; console.log("页数"+pagenums); var abapi=`https://www.ximalaya.com/revision/album/v1/getTracksList?albumId=${abid}&pageNum=1&pageSize=30`; var pns=pagenums; if (pns > 1){ document.querySelector("div.list-view__footer > a").remove(); var abapinew=abapi.replace('pageNum=1','pageNum='+pns); var morehtm=`<a id="newab" target="_blank" href="${abapinew}">${abapinew}</a>` morehtm += `<p id=tip>专辑曲目超过30,请修改API参数后再访问.最大页码为${pns}</p>`; var alink=document.createElement("p"); alink.innerHTML=morehtm; document.querySelector("div.list-view__footer").append(alink); } else { document.querySelector("div.list-view__footer").remove(); } } },500);
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址