fix(synced-lyrics): fix text extract logic

This commit is contained in:
JellyBrick
2024-10-13 18:03:37 +09:00
parent 8153955ccf
commit 8acb93225b

View File

@ -8,20 +8,16 @@ import { setDebugInfo, setLineLyrics } from '../components/LyricsContainer';
import type { SongInfo } from '@/providers/song-info'; import type { SongInfo } from '@/providers/song-info';
import type { LineLyrics, LRCLIBSearchResponse } from '../../types'; import type { LineLyrics, LRCLIBSearchResponse } from '../../types';
// prettier-ignore
export const [isInstrumental, setIsInstrumental] = createSignal(false); export const [isInstrumental, setIsInstrumental] = createSignal(false);
// prettier-ignore
export const [isFetching, setIsFetching] = createSignal(false); export const [isFetching, setIsFetching] = createSignal(false);
// prettier-ignore
export const [hadSecondAttempt, setHadSecondAttempt] = createSignal(false); export const [hadSecondAttempt, setHadSecondAttempt] = createSignal(false);
// prettier-ignore
export const [differentDuration, setDifferentDuration] = createSignal(false); export const [differentDuration, setDifferentDuration] = createSignal(false);
export const extractTimeAndText = ( export const extractTimeAndText = (
line: string, line: string,
index: number, index: number,
): LineLyrics | null => { ): LineLyrics | null => {
const groups = /\[(\d+):(\d+)\.(\d+)\](.+)/.exec(line); const groups = /\[(\d+):(\d+)\.(\d+)](.+)/.exec(line);
if (!groups) return null; if (!groups) return null;
const [, rMinutes, rSeconds, rMillis, text] = groups; const [, rMinutes, rSeconds, rMillis, text] = groups;
@ -31,14 +27,13 @@ export const extractTimeAndText = (
parseInt(rMillis), parseInt(rMillis),
]; ];
// prettier-ignore
const timeInMs = (minutes * 60 * 1000) + (seconds * 1000) + millis; const timeInMs = (minutes * 60 * 1000) + (seconds * 1000) + millis;
return { return {
index, index,
timeInMs, timeInMs,
time: `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}:${millis}`, time: `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}:${millis}`,
text: text?.trim().length ? text?.trim() : config()!.defaultTextString, text: text?.trim() || config()!.defaultTextString,
status: 'upcoming', status: 'upcoming',
duration: 0, duration: 0,
}; };
@ -123,7 +118,7 @@ export const getLyricsList = async (
setHadSecondAttempt(true); setHadSecondAttempt(true);
} }
const filteredResults = []; const filteredResults: LRCLIBSearchResponse = [];
for (const item of data) { for (const item of data) {
const { artist } = songData; const { artist } = songData;
const { artistName } = item; const { artistName } = item;