如何解析网易云音乐歌词并处理无歌词情况
如何解析网易云音乐歌词并处理无歌词情况
本文将介绍如何使用 JavaScript 解析网易云音乐 API 获取歌词数据,并处理部分歌词为空的情况,将歌词数据转换为时间戳和对应歌词的格式。
lrc(songId) {
wx.request({
url: `https://music.163.com/api/song/lyric?os=pc&id=${songId}&lv=-1&kv=-1&tv=-1`,
success: (res) => {
// console.log(res);
var str = res.data.lrc.lyric;
var lyrics = [];
// console.log(str);
// 将歌词数组分割成一行一行
var lines = str.split('\n');
for (var i = 0; i < lines.length - 1; i++) {
var line = lines[i];
console.log(line);
// 将时间与歌词分割开
var timeLyric = line.split(']');
// 判断是否有歌词
if (timeLyric.length == 2) {
// 有歌词
// 取出时间并转成毫秒数
var time = timeLyric[0].trim().replaceAll('[', '');
var minute = parseInt(time.split(':')[0]);
var second = parseFloat(time.split(':')[1]);
var seconds = minute * 60 * 1000 + second * 1000;
// 取出歌词
var lyric = timeLyric[1].trim();
console.log(time, lyric);
var gqc = {};
gqc.time = seconds;
gqc.lyric = lyric;
lyrics.push(gqc);
} else {
// 没有歌词
var time = timeLyric[0].trim().replaceAll('[', '');
var minute = parseInt(time.split(':')[0]);
var second = parseFloat(time.split(':')[1]);
var seconds = minute * 60 * 1000 + second * 1000;
var lyric = '';
var gqc = {};
gqc.time = seconds;
gqc.lyric = lyric;
lyrics.push(gqc);
}
}
this.setData({
lyrics: lyrics,
});
console.log(lyrics);
}
})
},
代码解析:
- 获取歌词数据: 使用
wx.request发送请求到网易云音乐 API 获取歌词数据。 - 分割歌词: 使用
split('\n')将获取到的歌词字符串按行分割。 - 判断是否包含歌词: 使用
timeLyric.length == 2判断分割后的数组长度是否为 2,如果为 2 表示包含歌词,否则表示没有歌词。 - 处理有歌词情况: 提取时间和歌词,并转换为时间戳和对应歌词的格式。
- 处理无歌词情况: 提取时间,并将歌词设为空字符串。
- 存储结果: 将处理后的时间和歌词数据存储到
lyrics数组中。
使用示例:
lrc(1866549223); // 获取歌曲 ID 为 1866549223 的歌词
注意事项:
- 需要在微信小程序中使用此代码,并确保已经配置了
wx.request的请求域名。 - 需要使用网易云音乐的 API 获取歌词数据,具体的 API 接口可以参考网易云音乐开发者文档。
- 如果歌词数据格式发生变化,需要调整代码进行适配。
总结:
本文介绍了如何解析网易云音乐 API 获取歌词数据,并处理部分歌词为空的情况,将歌词数据转换为时间戳和对应歌词的格式。希望本文能够帮助您更好地处理网易云音乐的歌词数据。
原文地址: https://www.cveoy.top/t/topic/oReE 著作权归作者所有。请勿转载和采集!