diff --git a/packages/bgmd/src/transform.ts b/packages/bgmd/src/transform.ts index 25675060..db9c9da8 100644 --- a/packages/bgmd/src/transform.ts +++ b/packages/bgmd/src/transform.ts @@ -22,12 +22,14 @@ export function transform = FullBangumi>( extra: { data?: Item; tmdb?: FullBangumi['tmdb'] } = {}, options: TransformOptions = {} ): T { - const name = bgm.name; + const name = decodeName(bgm.name); + + const alias = new Set( + [...getSubjectAlias(bgm), ...Object.values(extra?.data?.titleTranslate ?? {}).flat()].map( + decodeName + ) + ); - const alias = new Set([ - ...getSubjectAlias(bgm), - ...Object.values(extra?.data?.titleTranslate ?? {}).flat() - ]); if (extra.tmdb) { alias.add(extra.tmdb.name); alias.add(extra.tmdb.original_name); @@ -80,6 +82,15 @@ export function transform = FullBangumi>( return full as T; } +// Fix `"Oshi no Ko" 2` -> `"Oshi no Ko" 2` +function decodeName(name: string) { + return name + .replace(/"/g, '"') + .replace(/&/g, '&') + .replace(/</g, '<') + .replace(/>/g, '>'); +} + function normalizeTags(tags: string[] | Array<{ name: string; count: number }>) { return tags?.map((t) => (typeof t === 'string' ? t : t.name)) ?? []; }