lkmusic项目之(三)LRC歌词解析--正则解析

lrc格式:

[ver:v1.0]
[ti:彭佳慧-喜欢两个人]
[00:00.93]喜欢两个人 - 彭佳慧
[00:31.05]没必要回想刚刚下大雨的黄昏
[00:39.45]此刻夜空只有美丽的星辰
[00:47.09]走过了甜酸各一半的旅程
[00:54.74]我单薄的心才能变得丰盛
[01:01.56]心会累爱会冷
[01:05.37]这是感情必经的过程
[01:09.18]只是有人就放弃
[01:11.89]也有人愿意再等 等一个发现
[01:20.54]等一个感动让爱再沸腾
[01:24.44]就算很在乎自尊
[01:26.80]我们依赖彼此 不得不承认
[01:32.96]放弃自由喜欢两个人
[01:38.39]绑住的两个人
[01:42.50]互不相让还是相爱分享一生
[01:48.20]不爱热闹喜欢两个人
[01:53.73]就我们两个人
[01:57.44]在浮动不安世界里 找到安稳
[02:32.95]有时候关心就是交换一个眼神
[02:41.37]抚慰就是暖暖紧紧的拥吻
[02:48.95]疼爱是不讲理也让我几分
[02:56.58]体贴是偶而准你不像情人
[03:03.40]心会累爱会冷
[03:07.22]这是感情必经的过程
[03:11.05]只是有人就放弃
[03:13.81]也有人愿意再等 等一个发现
[03:22.51]等一个感动让爱再沸腾
[03:26.27]就算很在乎自尊
[03:28.74]我们依赖彼此 不得不承认
[03:34.98]放弃自由喜欢两个人
[03:40.41]绑住的两个人
[03:44.16]互不相让还是相爱分享一生
[03:50.09]不爱热闹喜欢两个人
[03:55.66]就我们两个人
[03:59.29]在浮动不安世界里 找到安稳
[04:24.48]放弃自由喜欢两个人
[04:29.83]绑住的两个人
[04:33.96]互不相让还是相爱分享一生
[04:39.67]不爱热闹喜欢两个人
[04:46.97]就我们两个人
[04:50.72]在不安世界里 找到安稳
[05:02.49]hu...

涉及相关三个函数:
getLyric()
renderLyric()
parseLyric()

/** * 获取歌词 * @AuthorHTL * @DateTime 2016-04-14T16:48:12+0800 * @param {[type]} index [description] * @return {[type]} [description] */
    getLyric:function(index){
          var _this = this;
          if(this.lyricCache[index]){
                this.renderLyric(this.lyricCache[index]);
            }else{
                var url = this.musicList[index]["lyric"];
                if(url){
                    ajax(url,'GET',true,function(lrc){

                        var lyric = _this.parseLyric(lrc);

                        _this.lyricCache[index] = lyric ? lyric : null;
                        _this.renderLyric(lyric);
                    })
                }else{

                    this.lyricCache[index] = null;
                    this.renderLyric(null);
                }
            }
    }
    /** * 渲染歌词 * @AuthorHTL * @DateTime 2016-04-14T16:48:23+0800 * @param {[type]} lyric [description] * @return {[type]} [description] */
    renderLyric:function(lyric){


             var dom = this.musicDom["lyricWrap"], tpl = "";
              if(lyric){
                  for(var k in lyric){
                      var txt = lyric[k] ? lyric[k] :'--- lkmusic ---';
                      tpl += '<li class="u-lyric f-toe" data-time="'+k+'">'+txt+'</li>';
                  }
                  tpl && (tpl += '<li class="u-lyric">www.laijiadayuan.com</li>');
              }else{
                tpl = '<li class="eof">暂无歌词...</li>';
              }
              dom.style.marginTop = 0 + "px";
              dom.screenTop = 0;
              dom.innerHTML = tpl;

    }
    /** * 解析歌词 * @AuthorHTL * @DateTime 2016-04-14T15:29:02+0800 * @param {[type]} lrc [description] * @return {[type]} [description] */
     /* [00:00.91]小苹果 [00:01.75]作词:王太利 作曲:王太利 [00:02.47]演唱:筷子兄弟 */
    parseLyric:function (lrc){
        var lyrics = lrc.split("[");

        var lrcObj = {};
        for(var i=0;i<lyrics.length;i++){
            var lyric = decodeURIComponent(lyrics[i]);
            var timeReg = /\d*:\d*((\.|\:)\d*)*\]/g;
            var timeRegExpArr = lyric.match(timeReg);


            if(!timeRegExpArr)continue;

            var clause = lyric.replace(timeReg,'');


            for(var k = 0,h = timeRegExpArr.length;k < h;k++) {
                var t = timeRegExpArr[k];
                var min = Number(String(t.match(/\d*/i)).slice(1)),
                    sec = Number(String(t.match(/\:\d*/i)).slice(1));
                var time = (min * 60 + sec)*1e3;//必须转换成毫秒才行
                lrcObj[time] = clause;
            }
    }
    return lrcObj;
    }

你可能感兴趣的:(lkmusic项目之(三)LRC歌词解析--正则解析)