导出完整的QQ歌单信息以作它用
// ==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¬ice=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)
})();