51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

「JavaScript」提取(导出)网易云音乐歌单歌曲列表信息为文件

提取网易云音乐歌单页面中的歌曲列表信息,导出为 JSON 文件。
在浏览器的"开发人员工具"的 Console(控制台)中使用。
使用前需要登录,否则页面中最多显示 10 首歌曲(登录后最多显示 1000 首歌曲)。
用处不大(毕竟有接口可以用,而且获取到的信息更多),只是突然想到就记录下来了。


代码 {#menu_index_1}

提取 {#menu_index_2}

/**
 * 提取网易云音乐 [歌单页面](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;

}


转文件 {#menu_index_3}

/**
 * 字符串转文件
 *
 * @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);

}


调用 {#menu_index_4}

var objData = {
    data: getPlaylistSongInfo()
};
var objStr = JSON.stringify(objData);
`strToFile(objStr, 'export.json', 'application/json');`

赞(2)
未经允许不得转载:工具盒子 » 「JavaScript」提取(导出)网易云音乐歌单歌曲列表信息为文件