New showlrc type: 3, get lrc from lrc file or API

This commit is contained in:
DIYgod 2016-08-28 00:12:38 +08:00
parent 210a9bbec0
commit f91eba1aba
No known key found for this signature in database
GPG Key ID: F8797DD1088C6506
8 changed files with 308 additions and 73 deletions

View File

@ -12,8 +12,6 @@
## Introduction
UI 参考网易云音乐外链播放器
[Demo](http://aplayer.js.org)
Screenshot
@ -151,6 +149,17 @@ HTML:
</div>
```
#### LRC in lrc file or API:
```js
{
showlrc: 3,
music: {
lrc: 'path/to/music.lrc'
}
}
```
### With playlist
Show multiple music.

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,43 @@
[00:00.230]君と夏の終わり 将来の夢(与你在夏末约定 将来的梦想)
[00:04.170]大きな希望 忘れない(远大的希望 不要忘记了)
[00:07.170]10年後の8月我相信 十年後的八月
[00:09.700]また出会えるのを 信じて(我们还能再相遇)
[00:14.360]最高の思い出を…(共划美好的回忆)
[00:39.960]出会いは ふっとした 瞬間 帰り道の交差点で(相识 是那麼不经意的瞬间 我在回家途中的十字路口)
[00:47.050]声をかけてくれたね 「一緒に帰ろう」(听见你的一声〞一起回家吧〞)
[00:54.310]僕は 照れくさそうに カバンで顔を隠しながら(我当时有点尴尬 还拿书包遮著脸)
[01:01.470]本当は とても とても 嬉しかったよ(其实我 心里好高兴 真的好高兴)
[01:08.590]あぁ 花火が夜空 きれいに咲いて ちょっとセツナク(啊!烟火在夜空中 灿烂盛开 几许伤感)
[01:15.770]あぁ 風が時間とともに 流れる(啊!风随着时光流逝)
[01:22.580]嬉しくって 楽しくって 冒険も いろいろしたね(满心欢喜地 兴致冲冲地 我们四处探险)
[01:29.760]二人の 秘密の 基地の中(就在我们的 秘密基地中)
[01:36.740]君と夏の終わり 将来の夢 大きな希望 忘れない(与你在夏末约定 将来的梦想 远大的希望 不要忘记了)
[01:43.920]10年後の8月 また出会えるのを 信じて(我相信 十年後的八月 我们还能再相遇)
[01:51.010]君が最後まで 心から 「ありがとう」叫んでいたこと(我知道 一直到最後)
[01:56.930]知っていたよ(你仍在心底呼喊著〞谢谢你〞)
[01:58.200]涙をこらえて 笑顔でさようなら せつないよね(强忍著泪水 笑著说再见 无限感叹涌现)
[02:05.420]最高の思い出を…(那一段最美好的回忆…)
[02:13.070]あぁ 夏休みも あと少しで 終っちゃうから(啊!暑假就快要过完了)
[02:20.310]あぁ 太陽と月 仲良くして(啊!太阳和月亮 默契十足)
[02:27.080]悲しくって 寂しくって 喧嘩も いろいろしたね(想到令人悲伤 或许有些寂寥 我们也多有争吵)
[02:34.160]二人の 秘密の 基地の中(就在我们的 秘密基地中)
[02:41.140]君が最後まで 心から 「ありがとう」叫んでいたこと(我知道 一直到最後)
[02:47.000]知っていたよ(你仍在心底呼喊著〞谢谢你)
[02:48.340]涙をこらえて 笑顔でさようなら せつないよね(强忍著泪水 笑著说再见 无限感叹涌现)
[02:55.630]最高の思い出を…(那一段最美好的回忆)
[03:03.320]突然の 転校で どうしようもなく(你突然要转学 你我都可奈何)
[03:24.190]手紙 書くよ 電話もするよ 忘れないでね 僕のことを(我会写信给你 也会打电话给你 千万不要忘记我)
[03:31.420]いつまでも 二人の 基地の中(永远别忘记 那段在秘密基地中的日子)
[03:38.520]君と夏の終わり ずっと話して(与你在夏末 聊了这麼多)
[03:42.530]夕日を見てから星を眺め(从黄昏到繁星点点)
[03:45.670]君の頬を 流れた涙は ずっと忘れない(流过你双颊的泪水 我永远不会忘记)
[03:52.820]君が最後まで 大きく手を振ってくれたこと(直到最後 你紧紧握住我的手 这感觉也将长在我心中)
[03:58.540]きっと忘れない(於是就这样)
[03:59.930]だから こうして 夢の中で ずっと永遠に…(让我们在梦中相会吧 永远的…)
[04:07.110]君と夏の終わり 将来の夢 大きな希望 忘れない(与你在夏末约定 将来的梦想 远大的希望 不要忘记了)
[04:14.270]10年後の8月 また出会えるのを 信じて(我相信 十年後的八月 我们还能再相遇)
[04:21.400]君が最後まで 心から 「ありがとう」叫んでいたこと(我知道 一直到最後)
[04:27.260]知っていたよ(你仍在心底呼喊著〞谢谢你〞)
[04:28.640]涙をこらえて 笑顔でさようなら せつないよね(强忍著泪水 笑著说再见 无限感叹涌现)
[04:35.910]最高の思い出を…(那一段最美好的回忆…)
[04:43.160]最高の思い出を…(那一段最美好的回忆…)

View File

@ -0,0 +1,51 @@
[ti:あっちゅ~ま青春!]
[ar:七森中☆ごらく部]
[al:あっちゅ~ま青春!]
[00:00.76]青春オーライ 青春オーエス 青春謳歌 はりきって行くぞ(青春 All right 青春 Oh Hisse 青春讴歌 鼓足干劲上吧!)
[00:05.96]青春ドンマイ 青春ファイト 青春最高(青春 Don't Mind 青春 Fight 青春最棒了!)
[00:09.67]Yeah!! Yeah!! Yeah!! Yeah!!
[00:12.21]青春はじめよう 1・2・さん☆ハイ让青春起步吧 1·2·三☆OK
[00:14.78]ひとまず走るぞ 1・2・さん☆ハイ不管如何先跑起来吧 1·2·三☆OK
[00:17.32]みんなが笑顔で 1・2・さん☆ハイ大家都露出笑脸 1·2·三☆OK
[00:19.95]これが青春だ 1・2・さん☆ハイ这就是青春 1·2·三☆OK
[00:22.71]春! 桜もちを食べよう 夏! かき氷で決まり(春天! 来吃樱叶饼吧 夏天! 就决定是刨冰啦)
[00:27.89]秋! 焼きいもを頬張り 冬! 雪でまたかき氷(秋天! 把烤白薯大口塞进嘴里 冬天! 在雪里面又是刨冰)
[00:32.57]もういっちょ☆(再来☆)
[00:33.16]春! 教室を間違えて 夏! 宿題を忘れて(春天! 进错了教室 夏天! 把作业忘掉了)
[00:38.37]秋! マラソンでビリケツ 冬! こたつに長期滞在(秋天! 马拉松最后一名 冬天! 长期居住在暖炉里)
[00:43.61]1年365日 ときどき366日一年中的365天 有时候是366天
[00:48.69]色々あるけど 全力!全開! 全身全霊! 楽しもうよ よーよよよよ(虽然会发生很多事情,但是一起尽力尽兴!全心全意!享受每一天吧!吧~吧吧吧吧)
[00:55.23]「えんじょい!えんじょい!じょじょじょじょじょい!」(「享受吧!享受吧! 吧吧吧吧吧!」)
[00:57.83]あっちゅ~ま青春! まぶし~いよ青春!(转瞬即逝的青春! 灿烂无比的青春!)
[01:03.17]眠気さよなら ココロの瞳をぱっちりあけよう(向困意说拜拜 把心灵的眼睛睁得大大的吧)
[01:08.42]あっちゅ~ま青春! 猛スピード青春!(转瞬即逝的青春! 飞速前进的青春!)
[01:13.64]まばたきしてちゃ おいしいところ見逃しちゃうよ 注意!(要是乱眨眼睛的话 就会把美味的时光错过了的啦! 要注意哦!)
[01:18.87]青春オーライ 青春オーエス 青春謳歌 はりきって行くぞ(青春 All right 青春 Oh Hisse 青春讴歌 鼓足干劲上吧!)
[01:24.17]青春ドンマイ 青春ファイト 青春最高(青春 Don't Mind别在意 青春 Fight奋斗 青春最棒了!)
[01:27.85]Yeah!! Yeah!! Yeah!! Yeah!!
[01:30.44]朝! ニワトリに追いかけられ 昼! まさかのテスト0点早上被鸡到处追着跑 中午! 考试没想到竟然零分!)
[01:35.72]放課後! みんなに励まされて 夜! 今日は寝て忘れましょう(放学后! 大家给我加油 晚上!今天就睡觉把烦恼忘掉吧!)
[01:40.35]次の日~っ☆(第二天~☆)
[01:40.84]朝! ぎりぎり社長出勤 昼! 給食をおかわり(早上!差点就迟到了 中午!食堂的饭再来一份)
[01:46.10]放課後! 部室でダラダララ~ 夜! 長電話止まらない(放学后! 在部团教室懒散度过 晚上! 煲电话粥停不下来)
[01:51.32]1日いつでも24時間 巻くこと押すことどちらもできない一天永远都是24小时 既不会提前也不会延后)
[01:56.52]やりたいことなら貪欲強欲 別腹パッパラやり尽そうよ よーよよよよ(如果是想做的事情的话 就要贪婪地去追求 开启第二个胃 去把所有想干的事情都做了吧!)
[02:02.95]「わっしょい!わっしょい!しょしょしょしょしょい!」(「欧耶! 欧耶! 耶耶耶耶耶!」)
[02:05.58]あっちゅ~ま青春! 楽し~いよ青春!(转瞬即逝的青春! 快乐无比的青春!)
[02:11.06]春に始まり春に向かってく 思い出つくろう(开始在春天的青春 为了这个春天 一起创造回忆吧)
[02:16.23]あっちゅ~ま青春! 青い春だ青春!(转瞬即逝的青春! 青色的春天就是……青春!)
[02:21.40]ブルーなキモチ みんなといるとカラフルになる 不思議!(那些忧郁的心情 只要和大家在一起就会变得色彩缤纷 真是不可思议!)
[02:26.82]青春オーライ 青春オーエス 青春謳歌 はりきって行くぞ(青春 All right 青春 Oh Hisse 青春讴歌 鼓足干劲上吧!)
[02:31.99]青春ドンマイ 青春ファイト 青春最高(青春 Don't Mind 青春 Fight 青春最棒了!)
[02:35.68]Yeah!! Yeah!! Yeah!! Yeah!!
[02:47.61]あっちゅ~ま青春! まぶし~いよ青春!(转瞬即逝的青春! 灿烂无比的青春!)
[02:52.67]眠気さよなら ココロの瞳をぱっちりあけよう(向困意说拜拜 把心灵的眼睛睁得大大的吧)
[02:58.01]あっちゅ~ま青春! 猛スピード青春!(转瞬即逝的青春! 飞速前进的青春!)
[03:03.22]まばたきしてちゃ おいしいところ見逃しちゃうよ 注意!(要是乱眨眼睛的话 就会把美味的时光错过了的啦! 要注意哦!)
[03:08.56]あっちゅ~ま青春! にぎや~かな青春!(转瞬即逝的青春! 热热闹闹的青春!)
[03:13.68]今が青春 感じられた日はステキな日だよ(现在就是能感受到青春的 最棒的日子哦)
[03:18.86]あっちゅ~ま青春! 二度と来ない青春!(转瞬即逝的青春! 一去不复返的青春!)
[03:24.07]気付けばいつも私の青春 キミがいるんだ キ・セ・キ(回过神来 在我的青春中都有你在身边 真・是・奇・迹)
[03:29.41]青春オーライ 青春オーエス 青春謳歌 はりきって行くぞ(青春 All right 青春 Oh Hisse 青春讴歌 鼓足干劲上吧!)
[03:34.56]青春ドンマイ 青春ファイト 青春最高(青春 Don't Mind 青春 Fight 青春最棒了!)
[03:38.23]Yeah!! Yeah!! Yeah!! Yeah!!

View File

@ -0,0 +1,91 @@
[by:京兆万年]
[ti:回レ!雪月花 小紫ver.]
[ar:小倉唯]
[lr:ヒゲドライバー]
[co:ヒゲドライバー]
[ag:ヒゲドライバー]
[00:00.00]せ〜の いちにっさんはい!(预~备 一 二 三 嗨!)
[00:04.68]ほい! いよーーーーっ ぽん!(嘿 咿哟 嘭)
[00:07.66]ハッハッハッハッハッハッハィヤ(哈 哈 哈 哈 哈 哈 嗨呀)
[00:11.12]ハッハッハッハッハッハッ う~(哈 哈 哈 哈 哈 哈 呜~
[00:13.36]さぁさぁさぁ(来 来 来)
[00:14.08]これよりご覧いただきますは(接下来诸位将欣赏到的是)
[00:15.65]カブキ者たちの栄枯盛衰(歌舞伎演员们的荣辱盛衰)
[00:17.14]時代常に日進月歩(时代总是在日新月异)
[00:18.24]聞いてってよ老若男女(且听我一一道来 男女老少)
[00:20.14]一見は勧善懲悪(乍一看是惩恶扬善)
[00:21.49]悪者どもを一刀両断(将坏人们一刀两断)
[00:22.85]「でもホンドにそれだけで楽しいの?」(“但是你真的会因此而觉得扬眉吐气吗?”)
[00:25.63]もうなんだって蒟蒻問答(无论问什么 都是牛头马嘴)
[00:27.58]ハッハッハッハッハッハッハィヤ(哈哈哈哈哈哈 咿呀)
[00:30.57]ハッハッハッハッ(哈哈哈哈)
[00:31.97]いよーーーーっ ぽん!(咿哟 嘭)
[00:33.61]どこからともなく現れて(自何处出现委实难料)
[00:34.96]すぐどこかへ行っちゃって神出鬼沒(眼又遁隐他处总是神出鬼没)
[00:36.35]チャンスを待ったら一日千秋(若是静候机会 便是一日千秋)
[00:38.03]追いかければ東奔西走(追上前去的话又要东奔西走)
[00:39.68]時代常に千変万化(时代总是千变万化)
[00:40.95]人の心は複雑怪奇(世人之心复杂怪奇)
[00:42.31]「でも本気でそんなこ言ってんの?」(“但是说着这些话的你岂不也是难免戏谑?”)
[00:45.02]もうどうにも満身創痍(也罢 无论怎样都将满身疮痍)
[00:46.98]嗚呼、巡り巡って夜の町(呜呼 绕来绕去相会在这夜色下的街)
[00:53.27]キミは合図出し踊りだす((由)你发出信号 (让)我们一同起舞转)
[00:58.12]はぁ~(哈呜~
[00:58.88]回レ回レ回レ回レ回レ回レ回レ回レ回レ!(旋转吧旋转吧旋转吧旋转吧旋转吧旋转吧旋转吧旋转吧旋转吧!)
[01:02.12]華麗に花弁 散らすように(在散落的美丽花瓣中)
[01:04.97]回レ回レ回レ回レ回レ回レ回レ回レ回レ!(旋转吧旋转吧旋转吧旋转吧旋转吧旋转吧旋转吧旋转吧旋转吧!)
[01:08.13]髪も振り乱して(头发凌乱又怎样?)
[01:10.23]一昨日、昨日、今日と、明日と、明後日と(前日、昨日、今日、明日、后日)
[01:14.13]この宴は続く(这场宴会亦不息)
[01:16.31]踊レ、歌エ、一心不乱に回レ!(舞动吧 歌唱吧 一心不乱的旋转吧于)
[01:20.19]今宵は雪月花(今夜的雪月花)
[01:25.43]ほい! いよーーーーっ ぽん!(哈~!~哟ーーーー~嘣~!
[01:29.14]ハッハッハッハッハッハッハィヤ(哈 哈 哈 哈 哈 哈 嗨呀)
[01:32.16]ハッハッハッハッハッハッ う~(哈 哈 哈 哈 哈 哈 呜)
[01:34.39]ねぇねぇねぇ(呐~呐~呐~)
[01:35.12]この世に平安訪れるの?(平安已经访问此世了吗?
[01:36.50]のべつ幕無し丁丁発止(不会闭幕的丁当争斗)
[01:38.09]兵ども千客万来(官兵们接踵而来)
[01:39.50]ひしめき合群雄割拠(相互吵吵嚷嚷群雄割据)
[01:41.00]伸るか反るか一攫千金(成败在于敢否一举千金)
[01:42.47]気が付いたら絶体絶命(回过头来却已穷途末路)
[01:43.50]「でも本音のとこ、どうなってんの?」(「不过真心的所在、到底是什么样呢?」)
[01:46.62]もうまったく奇想天外(真是的总这么异想天开)
[01:48.51]嗚呼、辿り辿って夜の町(呜呼、追溯于夜晚小镇上)
[01:54.83]迷い一つなく踊りだす(心无杂念的就此起舞吧)
[01:59.68]はぁ~(哈阿~)
[02:00.44]回レ回レ回レ回レ回レ 回レ回レ回レ回レ!(转啊转啊转啊转啊转啊转啊转啊转啊转啊!
[02:03.64]華麗に花弁 散らすように(犹如花瓣华丽的散落一般)
[02:06.49]回レ回レ回レ回レ回レ 回レ回レ回レ回レ!(转啊转啊转啊转啊转啊转啊转啊转啊转啊!
[02:09.66]髪も振り乱して(长发也随风飘散)
[02:11.72]一昨日、昨日、今日と、明日と、明後日と(无论前天、昨天、还是今天、明天、与后天)
[02:15.63]この宴は続く(这宴会还会持续)
[02:17.67]踊レ、歌エ、一心不乱に回レ!(跳吧、唱吧、一心一意的转吧!
[02:21.60]今宵は雪月花(因为今宵乃是雪月花)
[02:36.74]ハッハッハッハッハッハッハィヤ(哈 哈 哈 哈 哈 哈 嗨呀)
[02:39.72]ハッハッハッハッハッハッ さぁさぁさぁ(哈 哈 哈 哈 哈 哈 来~来~来~)
[02:42.45]ハッハッハッハッハッハッハィヤ(哈 哈 哈 哈 哈 哈 嗨呀)
[02:45.49]ハッハッハッハッハッハッ(哈 哈 哈 哈 哈 哈)
[02:47.66]花で一つ、鳥で二つ(花就是一、鸟就是二)
[02:51.31]手打ち鳴らす(拍着手轻声唱)
[02:54.12]風で三つ、嗚呼、月出て四つ(风就是三、呜呼、月出就有四)
[02:58.76]鳴らす鳴らす……(轻声唱轻轻唱……)
[03:00.09]花で一つ、鳥で二つ(花就是一、鸟就是二)
[03:03.34]手打ち鳴らす(拍着手轻声唱)
[03:06.25]風で三つ、嗚呼、月出て四つ(风就是三、呜呼、月出就有四)
[03:10.78]鳴らす鳴らす……(轻轻唱轻声唱……)
[03:13.28]今は(在此)
[03:15.35]回レ回レ回レ回レ回レ 回レ回レ回レ回レ!(转啊转啊转啊转啊转啊转啊转啊转啊转啊!
[03:18.63]華麗に花弁 散らすように(犹如花瓣华丽的散落一般)
[03:21.35]回レ回レ回レ回レ回レ 回レ回レ回レ回レ!(转啊转啊转啊转啊转啊转啊转啊转啊转啊!
[03:24.60]髪も振り乱して(长发也随风飘散)
[03:26.72]一昨日、昨日、今日と、明日と、明後日と(无论前天、昨天、还是今天、明天、与后天)
[03:30.67]この宴は続く(这宴会不会结束)
[03:32.75]踊レ、歌エ、一心不乱に回レ!(跳吧、唱吧、一心一意的转吧!
[03:36.63]今宵は何曜日か?(今宵是星期几呢?
[03:39.02]水木金?(三四五?
[03:40.56]土日月火?(六七一二?
[03:44.11]ハッハッハッハッハッハッハィヤ(哈 哈 哈 哈 哈 哈 嗨呀)
[03:47.00]ハッハッハッハッ(哈 哈 哈 哈 哈 哈)
[03:48.57]いよーーーーっ ぽん!(~哟ーーーー~嘣~!
[03:50.43]-終わり--End-

4
dist/APlayer.min.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -74,44 +74,13 @@ class APlayer {
return add0(min) + ':' + add0(sec);
};
/**
* Parse lrc, suppose multiple time tag
*
* @param {Array} arr - Format:
* [mm:ss.xx]lyric
* [mm:ss.xxx]lyric
* [mm:ss.xx][mm:ss.xx][mm:ss.xx]lyric
*
* @return {Array} [[[time, text], [time, text], [time, text], ...], [[time, text], [time, text], [time, text], ...], ...]
*/
const parseLrc = (arr) => {
let lrcs = [];
for (let k = 0; k < arr.length; k++) {
const lyric = arr[k].split('\n');
let lrc = [];
const lyricLen = lyric.length;
for (let i = 0; i < lyricLen; i++) {
// match lrc time
const lrcTimes = lyric[i].match(/\[(\d{2}):(\d{2})\.(\d{2,3})]/g);
// match lrc text
const lrcText = lyric[i].replace(/\[(\d{2}):(\d{2})\.(\d{2,3})]/g, '').replace(/^\s+|\s+$/g, '');
if (lrcTimes != null) {
// handle multiple time tag
const timeLen = lrcTimes.length;
for (let j = 0; j < timeLen; j++) {
const oneTime = /\[(\d{2}):(\d{2})\.(\d{2,3})]/.exec(lrcTimes[j]);
const lrcTime = (oneTime[1]) * 60 + parseInt(oneTime[2]) + parseInt(oneTime[3]) / ((oneTime[3] + '').length === 2 ? 100 : 1000);
lrc.push([lrcTime, lrcText]);
}
}
}
// sort by time
lrc.sort((a, b) => a[0] - b[0]);
lrcs.push(lrc);
// save lrc
if (this.option.showlrc === 2 || this.option.showlrc === true) {
this.savelrc = [];
for (let i = 0; i < this.element.getElementsByClassName('aplayer-lrc-content').length; i++) {
this.savelrc.push(this.element.getElementsByClassName('aplayer-lrc-content')[i].innerHTML);
}
return lrcs;
};
}
/**
* Update progress bar, including loading progress bar and play progress bar
@ -161,29 +130,6 @@ class APlayer {
this.multiple = this.playIndex > -1;
this.music = this.multiple ? this.option.music[this.playIndex] : this.option.music;
let i;
// parser lrc
if (this.option.showlrc) {
let lrcs = [];
if (this.option.showlrc === 1) {
if (this.multiple) {
for (i = 0; i < this.option.music.length; i++) {
lrcs.push(this.option.music[i].lrc);
}
}
else {
lrcs.push(this.option.music.lrc);
}
}
else if (this.option.showlrc === 2 || this.option.showlrc === true) {
for (i = 0; i < this.element.getElementsByClassName('aplayer-lrc-content').length; i++) {
lrcs.push(this.element.getElementsByClassName('aplayer-lrc-content')[i].innerHTML);
}
}
this.lrcs = parseLrc(lrcs);
}
// add class aplayer-withlrc
if (this.option.showlrc) {
this.element.classList.add('aplayer-withlrc');
@ -242,7 +188,7 @@ class APlayer {
eleHTML += `
<div class="aplayer-list">
<ol>`;
for (i = 0; i < this.option.music.length; i++) {
for (let i = 0; i < this.option.music.length; i++) {
eleHTML += `
<li>
<span class="aplayer-list-cur" style="background: ${this.option.theme};"></span>
@ -572,9 +518,104 @@ class APlayer {
this.audio.currentTime = 0;
}
/**
* Parse lrc, suppose multiple time tag
*
* @param {String} lrc_s - Format:
* [mm:ss.xx]lyric
* [mm:ss.xxx]lyric
* [mm:ss.xx][mm:ss.xx][mm:ss.xx]lyric
*
* @return {String} [[time, text], [time, text], [time, text], ...]
*/
const parseLrc = (lrc_s) => {
const lyric = lrc_s.split('\n');
let lrc = [];
const lyricLen = lyric.length;
for (let i = 0; i < lyricLen; i++) {
// match lrc time
const lrcTimes = lyric[i].match(/\[(\d{2}):(\d{2})\.(\d{2,3})]/g);
// match lrc text
const lrcText = lyric[i].replace(/\[(\d{2}):(\d{2})\.(\d{2,3})]/g, '').replace(/^\s+|\s+$/g, '');
if (lrcTimes != null) {
// handle multiple time tag
const timeLen = lrcTimes.length;
for (let j = 0; j < timeLen; j++) {
const oneTime = /\[(\d{2}):(\d{2})\.(\d{2,3})]/.exec(lrcTimes[j]);
const lrcTime = (oneTime[1]) * 60 + parseInt(oneTime[2]) + parseInt(oneTime[3]) / ((oneTime[3] + '').length === 2 ? 100 : 1000);
lrc.push([lrcTime, lrcText]);
}
}
}
// sort by time
lrc.sort((a, b) => a[0] - b[0]);
return lrc;
};
// fill in lrc
if (this.option.showlrc) {
this.lrc = this.multiple ? this.lrcs[indexMusic] : this.lrcs[0];
const index = this.multiple ? indexMusic : 0;
this.lrcs = [];
if (!this.lrcs[index]) {
let lrcs = '';
if (this.option.showlrc === 1) {
if (this.multiple) {
lrcs = this.option.music[index].lrc;
}
else {
lrcs = this.option.music.lrc;
}
}
else if (this.option.showlrc === 2 || this.option.showlrc === true) {
lrcs = this.savelrc[index];
}
else if (this.option.showlrc === 3) {
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = () => {
if (xhr.readyState === 4) {
if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
lrcs = xhr.responseText;
this.lrcs[index] = parseLrc(lrcs);
this.lrc = this.lrcs[index];
let lrcHTML = '';
this.lrcContents = this.element.getElementsByClassName('aplayer-lrc-contents')[0];
for (let i = 0; i < this.lrc.length; i++) {
lrcHTML += `<p>${this.lrc[i][1]}</p>`;
}
this.lrcContents.innerHTML = lrcHTML;
if (!this.lrcIndex) {
this.lrcIndex = 0;
}
this.lrcContents.getElementsByTagName('p')[0].classList.add('aplayer-lrc-current');
this.lrcContents.style.transform = 'translateY(0px)';
this.lrcContents.style.webkitTransform = 'translateY(0px)';
}
else {
console.log('Request was unsuccessful: ' + xhr.status);
}
}
};
let apiurl;
if (this.multiple) {
apiurl = this.option.music[index].lrc;
}
else {
apiurl = this.option.music.lrc;
}
xhr.open('get', apiurl, true);
xhr.send(null);
}
if (lrcs) {
this.lrcs[index] = parseLrc(lrcs);
}
else {
this.lrcs[index] = [['00:00', 'Loading']];
}
}
this.lrc = this.lrcs[index];
let lrcHTML = '';
this.lrcContents = this.element.getElementsByClassName('aplayer-lrc-contents')[0];
for (let i = 0; i < this.lrc.length; i++) {