@applemusic-like-lyrics/lyric 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,20 +11,21 @@
11
11
 
12
12
  本模块由于只着重于歌词内容,所以会丢弃一切和歌词无关的信息,如需获取一个歌词文件中的详细信息(例如歌手)请考虑使用其他框架。
13
13
 
14
- 支持以下歌词格式的解析:
15
- - LyRiC 格式 `.lrc`
16
- - ESLyric 逐词歌词格式 `.lrc`
17
- - 网易云音乐逐词歌词格式 `.yrc`
18
- - QQ 音乐逐词歌词格式 `.qrc`
19
- - Lyricify Syllable 逐词歌词格式 `.lys`
20
-
21
- 支持以下歌词格式的导出:
22
- - LyRiC 格式 `.lrc`
23
- - ESLyric 逐词歌词格式 `.lrc`
24
- - 网易云音乐逐词歌词格式 `.yrc`
25
- - QQ 音乐逐词歌词格式 `.qrc`
26
- - Lyricify Syllable 逐词歌词格式 `.lys`
27
- - ASS 字幕格式 `.ass`
14
+ 歌词格式支持表:
15
+
16
+ | 源格式\目标格式 | 解析自身格式 | LyRiC 格式 `.lrc` | ESLyric 逐词歌词格式 `.lrc` | 网易云音乐逐词歌词格式 `.yrc` | QQ 音乐逐词歌词格式 `.qrc` | Lyricify Syllable 逐词歌词格式 `.lys` | TTML 歌词格式 `.ttml` | ASS 字幕格式 `.ass` |
17
+ | ------------------------------------- | ------------ | ----------------- | --------------------------- | ----------------------------- | -------------------------- | ------------------------------------- | --------------------- | ------------------- |
18
+ | LyRiC 格式 `.lrc` | ✅ | / | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
19
+ | ESLyric 逐词歌词格式 `.lrc` | ✅ | ✅ | / | ✅ | ✅ | ✅ | ✅ | ✅ |
20
+ | 网易云音乐逐词歌词格式 `.yrc` | ✅ | ✅ [^1] | ✅ [^1] | / | ✅ | ✅ | ✅ | ✅ |
21
+ | QQ 音乐逐词歌词格式 `.qrc` | ✅ | ✅ [^1] | ✅ [^1] | ✅ | / | ✅ | ✅ | ✅ |
22
+ | Lyricify Syllable 逐词歌词格式 `.lys` | ✅ | ✅ [^1] | ✅ [^1] | ✅ [^2] | ✅ [^2] | / | ✅ | ✅ |
23
+ | TTML 歌词格式 `.ttml` | ✅ | ✅ [^1] | ✅ [^1] | ✅ [^2] | ✅ [^2] | ✅ [^3] | / | ✅ |
24
+ | ASS 字幕格式 `.ass` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | / |
25
+
26
+ [^1]: 会丢失逐词时间数据、演唱属性(背景人声,对唱人声)和 AMLL 元数据
27
+ [^2]: 会丢失演唱属性(背景人声,对唱人声)和 AMLL 元数据
28
+ [^3]: 会丢失 AMLL 元数据
28
29
 
29
30
  ## 与 Core 歌词组件一起使用
30
31
 
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "SteveXMH <39523898+Steve-xmh@users.noreply.github.com>"
5
5
  ],
6
6
  "description": "一个歌词解析/生成模块,着重于歌词内容解析,支持多种格式",
7
- "version": "0.1.2",
7
+ "version": "0.2.1",
8
8
  "license": "GPL-3.0",
9
9
  "repository": {
10
10
  "type": "git",
@@ -20,10 +20,10 @@
20
20
  "pkg/*.js",
21
21
  "pkg/*.d.ts"
22
22
  ],
23
- "module": "pkg/lyric.js",
24
- "types": "pkg/lyric.d.ts",
23
+ "module": "pkg/amll_lyric.js",
24
+ "types": "pkg/amll_lyric.d.ts",
25
25
  "sideEffects": [
26
- "./pkg/lyric.js",
26
+ "./pkg/amll_lyric.js",
27
27
  "./pkg/snippets/*"
28
28
  ]
29
29
  }
@@ -135,4 +135,18 @@ export interface LyricLine {
135
135
  */
136
136
  export function decryptQrcHex(hexData: string): string;
137
137
 
138
+ /**
139
+ * 一个 TTML 歌词行对象,存储了歌词行信息和元数据信息
140
+ */
141
+ export interface TTMLLyric {
142
+ /**
143
+ * TTML 中存储的歌词行信息
144
+ */
145
+ lines: LyricLine[];
146
+ /**
147
+ * 一个元数据表,以 `[键, 值数组]` 的形式存储
148
+ */
149
+ metadata: [string, string[]][];
150
+ }
151
+
138
152
 
@@ -104,6 +104,7 @@ function passStringToWasm0(arg, malloc, realloc) {
104
104
  const ret = encodeString(arg, view);
105
105
 
106
106
  offset += ret.written;
107
+ ptr = realloc(ptr, len, offset, 1) >>> 0;
107
108
  }
108
109
 
109
110
  WASM_VECTOR_LEN = offset;
@@ -377,6 +378,38 @@ export function stringifyQrc(lrc) {
377
378
  }
378
379
  }
379
380
 
381
+ /**
382
+ * @param {string} src
383
+ * @returns {any}
384
+ */
385
+ export function parseTTML(src) {
386
+ const ptr0 = passStringToWasm0(src, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
387
+ const len0 = WASM_VECTOR_LEN;
388
+ const ret = wasm.parseTTML(ptr0, len0);
389
+ return takeObject(ret);
390
+ }
391
+
392
+ /**
393
+ * @param {any} lrc
394
+ * @returns {string}
395
+ */
396
+ export function stringifyTTML(lrc) {
397
+ let deferred1_0;
398
+ let deferred1_1;
399
+ try {
400
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
401
+ wasm.stringifyTTML(retptr, addHeapObject(lrc));
402
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
403
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
404
+ deferred1_0 = r0;
405
+ deferred1_1 = r1;
406
+ return getStringFromWasm0(r0, r1);
407
+ } finally {
408
+ wasm.__wbindgen_add_to_stack_pointer(16);
409
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
410
+ }
411
+ }
412
+
380
413
  /**
381
414
  * @param {string} src
382
415
  * @returns {any}
@@ -516,26 +549,26 @@ export function __wbindgen_string_new(arg0, arg1) {
516
549
  return addHeapObject(ret);
517
550
  };
518
551
 
519
- export function __wbg_getwithrefkey_4a92a5eca60879b9(arg0, arg1) {
552
+ export function __wbg_getwithrefkey_da95c5f2892b1e93(arg0, arg1) {
520
553
  const ret = getObject(arg0)[getObject(arg1)];
521
554
  return addHeapObject(ret);
522
555
  };
523
556
 
524
- export function __wbg_set_9182712abebf82ef(arg0, arg1, arg2) {
557
+ export function __wbg_set_2e973e6a06d4c5c3(arg0, arg1, arg2) {
525
558
  getObject(arg0)[takeObject(arg1)] = takeObject(arg2);
526
559
  };
527
560
 
528
- export function __wbg_get_44be0491f933a435(arg0, arg1) {
561
+ export function __wbg_get_0ee8ea3c7c984c45(arg0, arg1) {
529
562
  const ret = getObject(arg0)[arg1 >>> 0];
530
563
  return addHeapObject(ret);
531
564
  };
532
565
 
533
- export function __wbg_length_fff51ee6522a1a18(arg0) {
566
+ export function __wbg_length_161c0d89c6535c1d(arg0) {
534
567
  const ret = getObject(arg0).length;
535
568
  return ret;
536
569
  };
537
570
 
538
- export function __wbg_new_898a68150f225f2e() {
571
+ export function __wbg_new_75208e29bddfd88c() {
539
572
  const ret = new Array();
540
573
  return addHeapObject(ret);
541
574
  };
@@ -545,95 +578,95 @@ export function __wbindgen_is_function(arg0) {
545
578
  return ret;
546
579
  };
547
580
 
548
- export function __wbg_next_526fc47e980da008(arg0) {
581
+ export function __wbg_next_586204376d2ed373(arg0) {
549
582
  const ret = getObject(arg0).next;
550
583
  return addHeapObject(ret);
551
584
  };
552
585
 
553
- export function __wbg_next_ddb3312ca1c4e32a() { return handleError(function (arg0) {
586
+ export function __wbg_next_b2d3366343a208b3() { return handleError(function (arg0) {
554
587
  const ret = getObject(arg0).next();
555
588
  return addHeapObject(ret);
556
589
  }, arguments) };
557
590
 
558
- export function __wbg_done_5c1f01fb660d73b5(arg0) {
591
+ export function __wbg_done_90b14d6f6eacc42f(arg0) {
559
592
  const ret = getObject(arg0).done;
560
593
  return ret;
561
594
  };
562
595
 
563
- export function __wbg_value_1695675138684bd5(arg0) {
596
+ export function __wbg_value_3158be908c80a75e(arg0) {
564
597
  const ret = getObject(arg0).value;
565
598
  return addHeapObject(ret);
566
599
  };
567
600
 
568
- export function __wbg_iterator_97f0c81209c6c35a() {
601
+ export function __wbg_iterator_40027cdd598da26b() {
569
602
  const ret = Symbol.iterator;
570
603
  return addHeapObject(ret);
571
604
  };
572
605
 
573
- export function __wbg_get_97b561fb56f034b5() { return handleError(function (arg0, arg1) {
606
+ export function __wbg_get_3fddfed2c83f434c() { return handleError(function (arg0, arg1) {
574
607
  const ret = Reflect.get(getObject(arg0), getObject(arg1));
575
608
  return addHeapObject(ret);
576
609
  }, arguments) };
577
610
 
578
- export function __wbg_call_cb65541d95d71282() { return handleError(function (arg0, arg1) {
611
+ export function __wbg_call_3f093dd26d5569f8() { return handleError(function (arg0, arg1) {
579
612
  const ret = getObject(arg0).call(getObject(arg1));
580
613
  return addHeapObject(ret);
581
614
  }, arguments) };
582
615
 
583
- export function __wbg_new_b51585de1b234aff() {
616
+ export function __wbg_new_632630b5cec17f21() {
584
617
  const ret = new Object();
585
618
  return addHeapObject(ret);
586
619
  };
587
620
 
588
- export function __wbg_set_502d29070ea18557(arg0, arg1, arg2) {
621
+ export function __wbg_set_79c308ecd9a1d091(arg0, arg1, arg2) {
589
622
  getObject(arg0)[arg1 >>> 0] = takeObject(arg2);
590
623
  };
591
624
 
592
- export function __wbg_isArray_4c24b343cb13cfb1(arg0) {
625
+ export function __wbg_isArray_e783c41d0dd19b44(arg0) {
593
626
  const ret = Array.isArray(getObject(arg0));
594
627
  return ret;
595
628
  };
596
629
 
597
- export function __wbg_instanceof_ArrayBuffer_39ac22089b74fddb(arg0) {
630
+ export function __wbg_instanceof_ArrayBuffer_9221fa854ffb71b5(arg0) {
598
631
  let result;
599
632
  try {
600
633
  result = getObject(arg0) instanceof ArrayBuffer;
601
- } catch {
634
+ } catch (_) {
602
635
  result = false;
603
636
  }
604
637
  const ret = result;
605
638
  return ret;
606
639
  };
607
640
 
608
- export function __wbg_isSafeInteger_bb8e18dd21c97288(arg0) {
641
+ export function __wbg_isSafeInteger_a23a66ee7c41b273(arg0) {
609
642
  const ret = Number.isSafeInteger(getObject(arg0));
610
643
  return ret;
611
644
  };
612
645
 
613
- export function __wbg_buffer_085ec1f694018c4f(arg0) {
646
+ export function __wbg_buffer_b914fb8b50ebbc3e(arg0) {
614
647
  const ret = getObject(arg0).buffer;
615
648
  return addHeapObject(ret);
616
649
  };
617
650
 
618
- export function __wbg_new_8125e318e6245eed(arg0) {
651
+ export function __wbg_new_b1f2d6842d615181(arg0) {
619
652
  const ret = new Uint8Array(getObject(arg0));
620
653
  return addHeapObject(ret);
621
654
  };
622
655
 
623
- export function __wbg_set_5cf90238115182c3(arg0, arg1, arg2) {
656
+ export function __wbg_set_7d988c98e6ced92d(arg0, arg1, arg2) {
624
657
  getObject(arg0).set(getObject(arg1), arg2 >>> 0);
625
658
  };
626
659
 
627
- export function __wbg_length_72e2208bbc0efc61(arg0) {
660
+ export function __wbg_length_21c4b0ae73cba59d(arg0) {
628
661
  const ret = getObject(arg0).length;
629
662
  return ret;
630
663
  };
631
664
 
632
- export function __wbg_instanceof_Uint8Array_d8d9cb2b8e8ac1d4(arg0) {
665
+ export function __wbg_instanceof_Uint8Array_c299a4ee232e76ba(arg0) {
633
666
  let result;
634
667
  try {
635
668
  result = getObject(arg0) instanceof Uint8Array;
636
- } catch {
669
+ } catch (_) {
637
670
  result = false;
638
671
  }
639
672
  const ret = result;
Binary file
@@ -11,6 +11,8 @@ export function parseLys(a: number, b: number): number;
11
11
  export function stringifyLys(a: number, b: number): void;
12
12
  export function parseQrc(a: number, b: number): number;
13
13
  export function stringifyQrc(a: number, b: number): void;
14
+ export function parseTTML(a: number, b: number): number;
15
+ export function stringifyTTML(a: number, b: number): void;
14
16
  export function parseYrc(a: number, b: number): number;
15
17
  export function stringifyYrc(a: number, b: number): void;
16
18
  export function wasm_start(): void;