@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 +15 -14
- package/package.json +4 -4
- package/pkg/amll_lyric.d.ts +14 -0
- package/pkg/amll_lyric_bg.js +57 -24
- package/pkg/amll_lyric_bg.wasm +0 -0
- package/pkg/amll_lyric_bg.wasm.d.ts +2 -0
package/README.md
CHANGED
|
@@ -11,20 +11,21 @@
|
|
|
11
11
|
|
|
12
12
|
本模块由于只着重于歌词内容,所以会丢弃一切和歌词无关的信息,如需获取一个歌词文件中的详细信息(例如歌手)请考虑使用其他框架。
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
|
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/
|
|
24
|
-
"types": "pkg/
|
|
23
|
+
"module": "pkg/amll_lyric.js",
|
|
24
|
+
"types": "pkg/amll_lyric.d.ts",
|
|
25
25
|
"sideEffects": [
|
|
26
|
-
"./pkg/
|
|
26
|
+
"./pkg/amll_lyric.js",
|
|
27
27
|
"./pkg/snippets/*"
|
|
28
28
|
]
|
|
29
29
|
}
|
package/pkg/amll_lyric.d.ts
CHANGED
|
@@ -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
|
|
package/pkg/amll_lyric_bg.js
CHANGED
|
@@ -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
|
|
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
|
|
557
|
+
export function __wbg_set_2e973e6a06d4c5c3(arg0, arg1, arg2) {
|
|
525
558
|
getObject(arg0)[takeObject(arg1)] = takeObject(arg2);
|
|
526
559
|
};
|
|
527
560
|
|
|
528
|
-
export function
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
601
|
+
export function __wbg_iterator_40027cdd598da26b() {
|
|
569
602
|
const ret = Symbol.iterator;
|
|
570
603
|
return addHeapObject(ret);
|
|
571
604
|
};
|
|
572
605
|
|
|
573
|
-
export function
|
|
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
|
|
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
|
|
616
|
+
export function __wbg_new_632630b5cec17f21() {
|
|
584
617
|
const ret = new Object();
|
|
585
618
|
return addHeapObject(ret);
|
|
586
619
|
};
|
|
587
620
|
|
|
588
|
-
export function
|
|
621
|
+
export function __wbg_set_79c308ecd9a1d091(arg0, arg1, arg2) {
|
|
589
622
|
getObject(arg0)[arg1 >>> 0] = takeObject(arg2);
|
|
590
623
|
};
|
|
591
624
|
|
|
592
|
-
export function
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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;
|
package/pkg/amll_lyric_bg.wasm
CHANGED
|
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;
|