简爱博客
JS 格式化LRC歌词
2014-2-15 简爱
写播放器用到的 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
}
};


评论:
爱花酱
2014-12-26 16:54 回复
我想看看是什么播放器[哈哈/]
骑猪看月亮
2014-10-31 22:18 回复
这个到底要怎么加入呢?求详细说明,就是你也面下面的吗?
简爱
2014-05-07 20:37 回复
@鬼少:不太会写,没有头续
支持 pjax 的主题有现成的,只不过是 wp 下的
鬼少
2014-05-07 20:25 回复
播放器真心不错,配合Pjax方能达到完美效果。。这里只是建议一下。
天津汽车维修
2014-04-03 18:46 回复
真心感觉很不错啊
天津电动葫芦
2014-03-16 15:05 回复
音乐挺美好的哈
欧美音乐吧
2014-03-14 21:22 回复
@简爱:[12]  [12] 呵呵
简爱
2014-03-13 06:20 回复
@简爱:[15]
简爱
2014-03-11 14:48 回复
@欧美音乐吧:好吧  这东西兼容性太差了
火狐下能看。。。
欧美音乐吧
2014-03-11 09:39 回复
[1] 没有播放器呀!!
1 2