33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import type { LrcJsonData } from '../type';
|
|
import { parseTTML as ttmlParser } from './parser';
|
|
import type { LyricLine } from './ttml-types';
|
|
|
|
export type * from './ttml-types';
|
|
|
|
export function parseTTML(text: string) {
|
|
let lyrics: LrcJsonData;
|
|
const lyricLines = ttmlParser(text).lyricLines;
|
|
lyrics = {
|
|
scripts: lyricLines.map((value: LyricLine, _index: number, _array: LyricLine[]) => {
|
|
let words = value.words.length == 0 ? undefined : value.words;
|
|
if (words) {
|
|
words = words.map((word) => {
|
|
let r = word;
|
|
r.startTime /= 1000;
|
|
r.endTime /= 1000;
|
|
return r;
|
|
});
|
|
}
|
|
return {
|
|
text: value.words.map((word) => word.word).join(''),
|
|
start: value.startTime / 1000,
|
|
end: value.endTime / 1000,
|
|
translation: value.translatedLyric || undefined,
|
|
singer: value.singer || undefined,
|
|
words: words
|
|
};
|
|
})
|
|
};
|
|
return lyrics;
|
|
}
|