JS 格式化LRC歌词

简爱代码>JavaScript2014-2-15 19:22834112
写播放器用到的 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
  }
};

本文出自简爱博客,转载时请注明出处及相应链接。

评论

  1. 爱花酱2014-12-26 16:54回复

    我想看看是什么播放器[哈哈/]

  2. 骑猪看月亮2014-10-31 22:18回复

    这个到底要怎么加入呢?求详细说明,就是你也面下面的吗?

  3. 鬼少2014-05-07 20:25回复

    播放器真心不错,配合Pjax方能达到完美效果。。这里只是建议一下。

    1. 简爱2014-05-07 20:37回复

      @鬼少:不太会写,没有头续
      支持 pjax 的主题有现成的,只不过是 wp 下的

  4. 天津汽车维修2014-04-03 18:46回复

    真心感觉很不错啊

  5. 天津电动葫芦2014-03-16 15:05回复

    音乐挺美好的哈

  6. 欧美音乐吧2014-03-11 09:39回复

    [1] 没有播放器呀!!

    1. 简爱2014-03-11 14:48回复

      @欧美音乐吧:好吧  这东西兼容性太差了
      火狐下能看。。。

      1. 简爱2014-03-13 06:20回复

        @简爱:[15]

      2. 欧美音乐吧2014-03-14 21:22回复

        @简爱:[12]  [12] 呵呵

  7. 天津涂装设备2014-03-02 16:08回复

    这个测试还真心不错啊

  8. 念曲fm2014-02-15 19:45回复

    好有个性的播放器,我刚打开页面的时候只看到歌曲名称没看到播放器还以为播放器出错了,后来用兼容模式浏览还是一样,然后又点击回高速模式,这时看清文字点击歌曲播放看看,我点了,哦,可以播放,但歌词呢?