PlayList

下载你的歌单列表

  1. // ==UserScript==
  2. // @name PlayList
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0
  5. // @description 下载你的歌单列表
  6. // @author 2222234
  7. // @match https://music.163.com/
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=163.com
  9. // @grant none
  10. // @require https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js
  11. // @license GPL-3.0-only
  12. // ==/UserScript==
  13.  
  14. (function() {
  15. var btn = document.createElement("input");
  16. btn.id = "btn";
  17. btn.type = "button";
  18. btn.value = "读取歌单";
  19. btn.style.position="absolute";
  20. btn.style.top="100px";
  21. document.body.appendChild(btn);
  22.  
  23. btn.onclick=function(){
  24. var iframe = document.getElementsByTagName("iframe")[0];
  25. var iframeDocument = iframe.contentWindow.document;
  26. var url = iframe.contentWindow.location.href;
  27. const trs = iframeDocument.getElementsByTagName("tr");
  28. const name = iframeDocument.getElementsByClassName("f-ff2 f-thide")[0];
  29. if(trs.length == 0){
  30. alert("未在"+name.textContent+"中读取到歌曲");
  31. return;
  32. }
  33. var cf = confirm("在"+name.textContent+"中读取到"+(trs.length-1)+"首歌曲 是否下载歌曲列表");
  34. if(!cf){
  35. return;
  36. }
  37. const author = iframeDocument.getElementsByClassName("s-fc7");
  38. const real = author[author.length-1];
  39. const time = iframeDocument.getElementsByClassName("time s-fc4")[0];
  40.  
  41. const titleElements = iframeDocument.getElementsByTagName("b");
  42. const timeElements = iframeDocument.getElementsByClassName("u-dur candel");
  43. const textElements = iframeDocument.getElementsByClassName("text");
  44. const txtElements = iframeDocument.getElementsByClassName("txt");
  45.  
  46. var text = new Array();
  47. text.push(name.textContent+"\n"+
  48. "由"+real.textContent+"于"+time.textContent+"\n\n");
  49. for(var i = 0;i<trs.length-1;i++){
  50. text.push((i+1)+"."+titleElements[i].getAttribute("title")+"\n"+
  51. " "+timeElements[i].textContent+"\n"+
  52. " "+textElements[i*2].getAttribute("title")+"\n"+
  53. " "+textElements[i*2+1].children[0].getAttribute("title")+"\n"+
  54. " "+txtElements[i].children[0].href+"\n\n");
  55. }
  56. text.push("链接:"+url);
  57. const data = new Blob(text, { type: 'text/plain' });
  58. saveAs(data, name.textContent+".txt");
  59. }
  60. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址