导出QQ歌单

导出完整的QQ歌单信息以作它用

当前为 2020-11-12 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         导出QQ歌单
// @namespace    https://www.柴门.wooddoor/
// @version      0.3
// @description  导出完整的QQ歌单信息以作它用
// @author       柴门
// @match        https://y.qq.com/musicmac/v6/playlist/detail.html?id=*
// @match        https://y.qq.com/n/yqq/playlist/*
// @grant        none
// @require      https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...

    setTimeout(function () {////定时5秒后运行一次
      var qqSongListUrl1 = "https://y.qq.com/n/yqq/playlist/";
      var qqSongListUrl2 = "https://y.qq.com/musicmac/v6/playlist/";
      var currUrl = decodeURIComponent(location.href.split('#')[0]);
      var currUrl_pre = currUrl.substr(0,currUrl.lastIndexOf("/")+1);//substr(start [,length]) 第一个字符的索引是0,start必选 length可选
      console.log(currUrl_pre);
      if(currUrl_pre == qqSongListUrl2) {
        $("#songlist_box").before(`<div style="display:inline;z-index:999;"><textarea style="height:100px;width:100%;" id="songlist__input" readonly="readonly" /><button  id="save">尝试保存</button></div>`);
        $("#songlist__input").val("mid\t歌曲名\t歌手名\tsingermid\tsingerid\talbummid\trid\talbum_name\tsonglist__time\n");
        //console.log($('.songlist__li').length);
        $(".songlist__li").each(function(index,domEle){
          //console.log($(this).text());
          //alert($(this).text());
          var mid = $(this).find(".songlist__item").attr("mid");//不知啥,先记录保存下来再说
          
          var title = $(this).find(".mod_songname__name").attr("title");//歌曲名
          $(this).find(".mod_songname__menu").append('<a class="mod_songname_menu__item js_download" style="color: rgba(255,0,0,.9);font-weight:bold;font-size: 16px;" target="_blank" href="https://www.at38.cn/?name=' + title + '&type=netease;" title="搜歌曲">搜歌曲</a>');//添加一个搜索歌曲的链接
          
          var singer_name = $(this).find(".singer_name").attr("title");//歌手名,或:$(".singer_name").text();
          var singermid = $(this).find(".singer_name").attr("data-singermid");//不知啥,先记录保存下来再说
          var singerid = $(this).find(".singer_name").attr("data-singerid");//不知啥,先记录保存下来再说
          
          var albummid = $(this).find(".songlist__album").attr("data-albummid");//不知啥,先记录保存下来再说
          var rid = $(this).find(".songlist__album").attr("data-rid");//不知啥,先记录保存下来再说
          var album_name = $(this).find(".songlist__album").text();//专辑名
          
          var songlist__time = $(this).find(".songlist__time").text();//歌曲时长
          
          $("#songlist__input").val($("#songlist__input").val() + mid + "\t" + title + "\t" + singer_name + "\t" + singermid + "\t" + singerid + "\t" + albummid + "\t" + rid + "\t" + album_name + "\t" + songlist__time + "\n");
          //$("#songlist__input").val( $("#songlist__input").val() + "{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\n".format(mid, title, singer_name, singermid, singerid, albummid, rid, album_name, songlist__time) );
        });
      } else if(currUrl_pre == qqSongListUrl1){
        //https://post.smzdm.com/p/alpz4vgp/
        //https://www.cnblogs.com/q1ang/p/11927228.html
            /*var script = document.createElement("SCRIPT");
            script.src = 'https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js';
            script.type = 'text/javascript';
            document.getElementsByTagName("head")[0].appendChild(script);*/
        
        		var songListID = currUrl.substring(currUrl.lastIndexOf("/")+1, currUrl.lastIndexOf("."));//substring(start [, end]) 第一个字符的索引是0,start必选 end可选
        		//$(".data_tag_box").append(`<div style="display:inline;z-index:999;"><button class="mod_btn_green" id="save">保存歌单</button></div>`);
        		$(".songlist__header").before(`<div style="display:inline;z-index:999;"><textarea style="height:100px;width:100%;" id="songlist__input" readonly="readonly" /><button class="mod_btn_green" id="save">保存歌单</button></div>`);
        		//console.log(songListID);return;

            var checkReady = function (callback) {
                if (window.jQuery) {
                    callback(jQuery);
                } else {
                    window.setTimeout(function () { checkReady(callback); }, 100);
                }
            };

            checkReady(function ($) {
                var text="歌曲ID\t歌曲名\t歌手名\t专辑\n";
                $.ajax({
                    url: "https://c.y.qq.com/v8/fcg-bin/fcg_v8_playlist_cp.fcg?id=" + songListID + "&cv=60102&ct=19&newsong=1&tpl=wk&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=GB2312&outCharset=utf-8&notice=0&platform=jqspaframe.json&needNewCode=0",
                    async:false,
                    dataType:"json",
                    success:function(data){
                        var songlist = data.data.cdlist[0].songlist;
                        for(var i=0;i < songlist.length; i++){
                            var tmp = songlist[i];
                            text += tmp.mid + "\t" + tmp.name +"\t" + tmp.singer[0].name +"\t" + tmp.album.name + "\n";
                        }
                    }
                });

                //$('body').empty();
                //$('body').append("<div>"+text+"</div>");
              	$("#songlist__input").val(text);
            });
      }
      
      //============javascript – 将HTML5 textarea内容保存到文件:https://www.jb51.cc/js/159069.html============//
          function saveTextAsFile() {
      			var textToWrite = $("#songlist__input").val();//document.getElementById('songlist__input').innerHTML;
      			var textFileAsBlob = new Blob([ textToWrite ],{ type: 'text/plain' });
      			var fileNameToSaveAs = "songlist.xls";
     
      			var downloadLink = document.createElement("a");
      			downloadLink.download = fileNameToSaveAs;
      			downloadLink.innerHTML = "Download File";
      			if (window.webkitURL != null) {
        			// Chrome allows the link to be clicked without actually adding it to the DOM.
        			downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
      			} else {
        			// Firefox requires the link to be added to the DOM before it can be clicked.
        			downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
        			downloadLink.onclick = destroyClickedElement;
        			downloadLink.style.display = "none";
        			document.body.appendChild(downloadLink);
      			}
     
      			downloadLink.click();
    			}
     
    			var button = document.getElementById('save');
    			button.addEventListener('click',saveTextAsFile);
     
    			function destroyClickedElement(event) {
      			// remove the link from the DOM
      			document.body.removeChild(event.target);
    			}
     //============javascript – 将HTML5 textarea内容保存到文件:https://www.jb51.cc/js/159069.html============//

    }, 5000)
})();