mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-13 03:11:46 +00:00
feat(synced-lyrics): romanization (#2790)
* feat(synced-lyrics): init romanization! * remove debug logs and add TODO * feat(synced-lyrics/romanization): Mandarin! * feat(synced-lyrics/romanization): improve japanese detection * feat(synced-lyrics/romanization): Korean! * qol(synced-lyrics/romanization): canonicalize punctuation and symbols * feat(synced-lyrics/romanization): handle japanese+korean and korean+chinese lyrics * revert formatting on electron.vite.config.mts * feat(synced-lyrics/romanization): romanize plain lyrics * apply fix by @kimjammer * fix lockfile due to rebase * feat(synced-lyrics): improve lyric processing and formatting; * feat(synced-lyrics/romanization): add option to enable/disable romanization * chore: move default value for --lyrics-duration to the declaration * update lockfile * fix: improvement 1. improved language detection logic 2. changed code to work in the renderer process * fix: fix regression (canonicalize) --------- Co-authored-by: JellyBrick <shlee1503@naver.com>
This commit is contained in:
12
src/ts-declarations/kuroshiro-analyzer-kuromoji.d.ts
vendored
Normal file
12
src/ts-declarations/kuroshiro-analyzer-kuromoji.d.ts
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
// Stolen from https://github.com/hexenq/kuroshiro-analyzer-kuromoji/pull/7
|
||||
// Credit goes to https://github.com/ALOHACREPES345
|
||||
|
||||
declare class KuromojiAnalyzer {
|
||||
constructor(dictPath?: { dictPath: string });
|
||||
init(): Promise<void>;
|
||||
parse(str: string): Promise<unknown>;
|
||||
}
|
||||
|
||||
declare module 'kuroshiro-analyzer-kuromoji' {
|
||||
export = KuromojiAnalyzer;
|
||||
}
|
||||
40
src/ts-declarations/kuroshiro.d.ts
vendored
Normal file
40
src/ts-declarations/kuroshiro.d.ts
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
// Stolen from https://github.com/hexenq/kuroshiro/pull/93
|
||||
// Credit goes to https://github.com/ALOHACREPES345 and https://github.com/lcsvcn
|
||||
declare class Kuroshiro {
|
||||
constructor();
|
||||
_analyzer: import('kuroshiro-analyzer-kuromoji') | null;
|
||||
init(analyzer: import('kuroshiro-analyzer-kuromoji')): Promise<void>;
|
||||
convert(
|
||||
str: string,
|
||||
options?: {
|
||||
to?: 'hiragana' | 'katakana' | 'romaji';
|
||||
mode?: 'normal' | 'spaced' | 'okurigana' | 'furigana';
|
||||
romajiSystem?: 'nippon' | 'passport' | 'hepburn';
|
||||
delimiter_start?: string;
|
||||
delimiter_end?: string;
|
||||
},
|
||||
): Promise<string>;
|
||||
|
||||
static Util: {
|
||||
isHiragana: (ch: string) => boolean;
|
||||
isKatakana: (ch: string) => boolean;
|
||||
isKana: (ch: string) => boolean;
|
||||
isKanji: (ch: string) => boolean;
|
||||
isJapanese: (ch: string) => boolean;
|
||||
hasHiragana: (str: string) => boolean;
|
||||
hasKatakana: (str: string) => boolean;
|
||||
hasKana: (str: string) => boolean;
|
||||
hasKanji: (str: string) => boolean;
|
||||
hasJapanese: (str: string) => boolean;
|
||||
kanaToHiragana: (str: string) => string;
|
||||
kanaToKatakana: (str: string) => string;
|
||||
kanaToRomaji: (
|
||||
str: string,
|
||||
system: 'nippon' | 'passport' | 'hepburn',
|
||||
) => string;
|
||||
};
|
||||
}
|
||||
|
||||
declare module 'kuroshiro' {
|
||||
export = Kuroshiro;
|
||||
}
|
||||
Reference in New Issue
Block a user