lkmusic專案之(三)LRC歌詞解析--正則解析
阿新 • • 發佈:2019-02-06
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;
}