写播放器用到的 JS 函数,有了这东西,直接从服务器获取 LRC 就可以了
解析玩的格式为,键名为 时间 秒,值就是当前 时间下的歌词
单行歌词多个时间标签 也可以完美解析
LRC 解析代码
/**
* Plugin Name: Lrc To Array
* Plugin URI: https://gouji.org/
* Description: 转换 LRC 格式的 歌词为 JavaScript Array (数组)
* Version: 1.2
* Author: 简爱
* Author URI: http://gouji.org/
* Date: 2014-02-14
*
* String.lrcToArray();
*
**/
String.prototype.lrcToArray = function() {
var br = "\n", lrc_arr = this.split(br), lrc_t = 0,
lrc_n = 0, lrcArr = {lrc:[], second:[], route:[]};
for (var i = 0, l = lrc_arr.length; i < l; i++) {
var lrc = lrc_arr[i].replace(/\[[\w\W]*\]/, "").replace(/^\s*|\s*$/g, "");
var time = lrc_arr[i].match(/\[[0-9:.]*\]/g);
if (time == null) {
lrc_n++;
continue
}
lrcArr.lrc[i - lrc_n] = lrc;
if (time != null) {
for (x in time) {
Second = parseInt(time[x].replace(/\[|\]/g, "").time2second());
lrcArr.route[Second] = i - lrc_n;
lrcArr.second[lrc_t] = Second;
lrc_t++
}
}
}
lrcArr.second = lrcArr.second.sort(function(g, f) {
return g - f
});
var d = [];
for (var i = 0, l = lrcArr.second.length; i < l; i++) {
Second = lrcArr.second[i];
Lrc = lrcArr.route[Second];
d[Second] = lrcArr.lrc[Lrc]
}
return d
};
String.prototype.time2second = function() {
try {
var b = this.split(":");
return parseInt(b[0]) * 60 + parseFloat(b[1])
} catch(a) {
return 0
}
};