使用node在终端实现歌词自动播放的功能。
/(\[\d{2}:\d{2}\.\d{2}\])(.*)/g
readFile()
/(\d{2}):(\d{2})\.(\d{2})/
// 封装函数将时间转化为毫秒值
// 例如 [00:00.00]
function toNumber(time) {
// 使用正则匹配时间 分 秒 毫秒 提取出来
const reg = /(\d{2}):(\d{2})\.(\d{2})/
// 解构数组
const [, m, s, ms] = reg.exec(time)
return m * 60 * 1000 + s * 1000 + ms * 10
}
const fs = require('fs')
fs.readFile('./小三.lrc', 'utf-8', (err, data) => {
if (err) return console.log('读取失败', err)
// 提取歌词的时间和内容
// 提取只能提取第一个满足条件的 所以要加修饰符g 表示可以多次调用exec()提取。如果提取不到,最终提取到Null
const reg = /(\[\d{2}:\d{2}\.\d{2}\])(.*)/g
// 配合循环,一直提取,直到为null
let result
while (true) {
result = reg.exec(data)
if (result === null) {
// 提取结束 break
break;
}
let [, time, word] = result
// 使用延时器播放歌词
setTimeout(() => {
console.log(word)
}, toNumber(time))
}
})