1. 程式人生 > >lkmusic專案之(三)LRC歌詞解析--正則解析

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; }