提取网易云音乐歌单页面中的歌曲列表信息,导出为 JSON 文件。
在浏览器的“开发人员工具”的 Console(控制台)中使用。
使用前需要登录,否则页面中最多显示 10 首歌曲(登录后最多显示 1000 首歌曲)。
用处不大(毕竟有接口可以用,而且获取到的信息更多),只是突然想到就记录下来了。
代码
提取
/**
* 提取网易云音乐 [歌单页面](https://music.163.com/#/playlist?id=歌单ID) 中的歌曲列表信息
* 更新:2021-05-03
*
* @returns {object[]} 对象数组,对象中包含歌曲 album、artists、duration、id、title 信息
*/
function getPlaylistSongInfo() {
// 全部歌曲数据
var songs = [];
// iframe
var frameDoc = document.querySelector("#g_iframe").contentDocument;
// 表格行 tr
var songListTRs = frameDoc.querySelectorAll("#m-playlist .m-table tbody tr");
// 遍历
songListTRs.forEach(function (row) {
// 表格列 td
var rowCols = row.querySelectorAll("td");
// 当前行歌曲信息
var info = {
album: rowCols[4].querySelector('.text > a').title,
artists: rowCols[3].querySelector('.text').title.split('/'),
duration: rowCols[2].querySelector('span').textContent,
id: rowCols[0].querySelector('.ply').dataset.resId,
title: rowCols[1].querySelector('.txt > a b').title
};
songs.push(info);
});
return songs;
}
转文件
/**
* 字符串转文件
*
* @param {string} data 字符串数据
* @param {string} filename 文件名
* @param {string} filetype 文件类型(MIME)
*/
function strToFile(data = '', filename = 'export.txt', filetype = 'text/plain') {
// 转为 Blob
var strToBlob = new Blob([data], { type: filetype });
// URL 对象兼容性处理
var urlObject = window.URL || window.webkitURL || window;
// 创建对象 URL
var blobURL = urlObject.createObjectURL(strToBlob);
// 创建 a 元素
var aElem = document.createElement('a');
// 设置属性
aElem.classList.add('hidden');
aElem.download = filename;
aElem.href = blobURL;
aElem.target = '_blank';
// 添加元素
document.body.appendChild(aElem);
// 模拟点击
aElem.click();
// 移除元素
aElem.remove();
// 释放对象
urlObject.revokeObjectURL(blobURL);
}
调用
var objData = {
data: getPlaylistSongInfo()
};
var objStr = JSON.stringify(objData);
strToFile(objStr, 'export.json', 'application/json');
隐私政策和规则
点击此处查看详情
转载说明
欢迎任何网络媒体和网站转载本站的内容,转载时请注明作者和博客文章链接。
其他说明
本站部分内容可能已过时,仅供参考,请留意内容发布日期。
好久不见,甚至想念!!!