node.js 控制lrc歌词滚动

本文由清尘发表于2019-04-18 14:59最后修改于2019-11-21属于javascript分类

控制台在固定的时间输出一句歌词

lrc.txt:

[ti:红日]
[ar:李克勤]
[al:]
[by:drd369]
[00:01.00]李克勤:红日
[00:03.00]哦...
[00:20.42] 命运就算颠沛流离
[00:23.18] 命运就算曲折离奇
[00:25.23] 命运就算恐吓着你做人没趣味
[00:28.63] 别流泪 酸心 更不应舍弃
[00:32.62] 我愿能 一生永远陪伴你
[00:36.92] 命运就算颠沛流离
[00:39.02] 命运就算曲折离奇
[00:41.05] 命运就算恐吓着你做人没趣味
[00:44.55] 别流泪酸心 更不应舍弃
[00:48.59] 我愿能 一生永远陪伴你
[00:52.73] 哦~~
[01:00.84]# 一生之中兜兜转转 那会看清楚
[01:04.77]彷徨时我也试过独坐一角像是没协助
[01:08.81]在某年 那幼小的我
[01:12.47]跌倒过几多几多落泪在雨夜滂沱
[01:16.89]一生之中弯弯曲曲我也要走过
[01:20.67]从何时有你有你伴我给我热烈地拍和
[01:24.45]像红日之火 燃点真的我
[01:28.61]结伴行 千山也定能踏过
[01:32.29]让晚风 轻轻吹过
[01:36.23]伴送着清幽花香像是在祝福你我
[01:40.26]让晚星 轻轻闪过
[01:44.29]闪出你每个希冀如浪花 快要沾湿我
[01:51.99] 命运就算颠沛流离
[01:55.08] 命运就算曲折离奇
[01:56.99] 命运就算恐吓着你做人没趣味
[02:00.45] 别流泪 酸心 更不应舍弃
[02:04.57] 我愿能 一生永远陪伴你
[02:08.77] 哦~~

app.js

const fs = require('fs');
//读取歌词文件
fs.readFile('./lrc.txt',function(err,data){
  if(err){
    return console.log('读取歌词文件失败了');
  }
  data = data.toString();
  var lines = data.split('\n');
 //遍历所有行,通过正则匹配里面的时间,解析出毫秒
 //需要里面的时间和里面的内容
 var reg = /\[(\d{2})\:(\d{2})\.(\d{2})\]\s*(.+)/;
 for(var i = 0; i<lines.length; i++){
   (function(index){
     var line = lines[index];
     var matches = reg.exec(line);
     if(matches){
       //获取分
       var m = parseFloat(matches[1]);
       //获取秒
       var s = parseFloat(matches[2]);
       //获取毫秒
       var ms = parseFloat(matches[3]);
       //获取定时器中要输出的内容
       var content = matches[4];
       //将分+秒+毫秒转换为毫秒
       var time = m * 60 *1000 + s * 1000 + ms;
       //使用定时器,让每行内容在指定的时间输出
       setTimeout(function(){
        console.log(content);
       },time);
     }
   })(i)
 }
})