您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
喜马拉雅音乐或视频下载
当前为
// ==UserScript== // @name ximalaya-download // @namespace http://greasyfork.icu/zh-CN/users/135090 // @grant none // @version 1.4.4 // @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/* // @match https://m.ximalaya.com/selfshare/album* // ==/UserScript== setTimeout(function(){ 'use strict'; //获取单曲解析结果 if (location?.pathname?.indexOf("sound")>0){ var playurl; if (window.location.pathname.indexOf("sound")>0){ var trackid=window.location.pathname.split("/")[2]; var stitle="xm"; var xmitem={ id:trackid, ttl:stitle }; 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(xmitem).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=xmitem.ttl; link.textContent=xmitem.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); item.ttl = resp.trackInfo.title; } 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("解密错误,无视频"); res=ares; item.ttl += ".m4a"; } } }); return res; } } //获取专辑列表 if (location.pathname.indexOf("/album/") == 0 && location.hostname == "www.ximalaya.com"){ var alt=[]; var ttls=[]; var abid=location.pathname.indexOf("/album/") == 0 ? 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 == undefined){ 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.body.append(alink); //document.querySelector(".detail.layout-main").append(alink); } document.querySelector(".side").remove(); document.querySelector("#rootFooter").remove(); document.querySelector(".sound-list").remove(); var h2p=document.createElement("ul"); h2p.id="h2u"; h2p.position="absolute"; h2p.style.display = "table"; h2p.style.color = "#230de5"; h2p.style.listStyle = 'decimal'; h2p.style.paddingTop="0"; h2p.style.paddingBottom="50px"; document.body.append(h2p); 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("#h2u").append(ulli); }); });},1500); } //移动版视图 if (location.pathname.indexOf("/album/") == 0 && location.hostname == "m.ximalaya.com"){ window.location.href="https://www.ximalaya.com"+location.pathname; } if (location.pathname.indexOf("/selfshare/album") == 0 && location.hostname == "m.ximalaya.com"){ window.location.href="https://www.ximalaya.com/album/"+location.pathname.split("/")[3]; } },500);