Skip to content

Commit d9fb54f

Browse files
committed
Minify! 优化歌词解析逻辑,更轻更小更易读
1 parent b521fa7 commit d9fb54f

7 files changed

Lines changed: 187 additions & 102 deletions

File tree

demo/cplayer.js

Lines changed: 76 additions & 48 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo/cplayer.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo/cplayer.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/cplayer.js

Lines changed: 76 additions & 48 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/cplayer.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/cplayer.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/js/cplayer.js

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
55
I am the super Corps!
66
*/
7+
78
const cPlayer = class cPlayer {
89
constructor(options) {
910
this.transLock = false;
@@ -431,8 +432,9 @@ const cPlayer = class cPlayer {
431432
this.__LIST__.lyricBody.innerHTML = ``;
432433
if (!this.hasLyric(this.now)) return;
433434
let lr = isTrans!==false?this.options.list[this.now].transLyric:this.options.list[this.now].lyric;
435+
let lyric = cLyric(lr);
434436
//START LRC BASEING...
435-
lr = lr.split("\n").length>1?lr.split("\n"):lr.replace("]","]\n").split("]");
437+
/*lr = lr.split("\n").length>1?lr.split("\n"):lr.replace("]","]\n").split("]");
436438
let lrcs = [];
437439
for (let i = 0,content=lr[i];i<lr.length;i++,content=lr[i]) {
438440
if (typeof content !== "string") break;
@@ -478,7 +480,7 @@ const cPlayer = class cPlayer {
478480
479481
lyric.sort((a, b)=> {
480482
return a.time - b.time;
481-
});
483+
});*/
482484
lyric["now"] = 0;
483485
this.__LYRIC__ = lyric;
484486
for (let i = 0; i <= lyric.length - 1; i++) {
@@ -695,4 +697,31 @@ const cContext = class cContext{
695697
return this.options.items;
696698
}
697699
}
700+
701+
function cLyric(lrc){
702+
let offset = 0,
703+
lyricArray = [];
704+
lrc.replace(/\n+/gi,"\n").split("\n").forEach(function(content){
705+
//content is like:
706+
// [00:12.34]JUUUUUUUUUUUUUUMP!!!!!!
707+
//get OFFSET
708+
if(content.indexOf("offset")!==-1) offset = parseInt((/offset\:(\d+)/gi).exec(content)[1]);
709+
//get Lyric and translate it.
710+
//ar[] -> [1.24,2.21,36.15,"HEY!"]
711+
if(/\d:\d/gi.test(content)){
712+
let ar = [];
713+
[].forEach.call(content.match(/\[\d+\:[\.\d]+\]/gi),function(e){
714+
let number = /\[(\d+)\:([\.\d]+)\]/gi.exec(e);
715+
ar.push(parseInt(number[1])*60+parseFloat(number[2]-offset*0.001));
716+
});
717+
ar.push(/(?:\[\d+\:[\.\d]+\])*(.*)/gi.exec(content)[1]);
718+
do{
719+
lyricArray.push({time:ar.shift(),content:ar[ar.length-1]});
720+
}while(ar.length>=2)
721+
}
722+
});
723+
return lyricArray.sort((a, b)=> {
724+
return a.time - b.time;
725+
});
726+
} ;
698727
if(window)window.cPlayer = cPlayer;

0 commit comments

Comments
 (0)