From e75aa80c3aaefc252acc262f7ef1e4f447442f61 Mon Sep 17 00:00:00 2001 From: AnimeDL Date: Tue, 22 Aug 2023 17:50:37 -0700 Subject: [PATCH] Subtitle fixes for hidive --- .gitignore | 3 ++- @types/hidiveTypes.d.ts | 20 ++++++++++++++++++-- hidive.ts | 16 ++++++++++++++-- modules/module.merger.ts | 3 ++- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 58dd7dd..68f1799 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,5 @@ crunchyendpoints .vscode /logs /tmp/*/ -/videos/*/ \ No newline at end of file +/videos/*/ +/tmp/*.* \ No newline at end of file diff --git a/@types/hidiveTypes.d.ts b/@types/hidiveTypes.d.ts index 858c40d..17177c5 100644 --- a/@types/hidiveTypes.d.ts +++ b/@types/hidiveTypes.d.ts @@ -1,3 +1,5 @@ +import { LanguageItem } from '../modules/module.langsData'; + export interface HidiveVideoList { Code: number; Status: string; @@ -50,12 +52,26 @@ export interface HidiveSubtitleInfo { url: string; } +export type sxItem = { + language: LanguageItem, + path: string, + file: string + title: string, + fonts: Font[] +} + export type DownloadedMedia = { type: 'Video', lang: LanguageItem, path: string, - uncut: boolean + uncut?: boolean } | ({ type: 'Subtitle', - cc: boolean + cc: boolean, + belongsToFile: { + hasFile: false, + } | { + hasFile: true, + file: string + } } & sxItem ) \ No newline at end of file diff --git a/hidive.ts b/hidive.ts index 93b6c70..8e23e45 100644 --- a/hidive.ts +++ b/hidive.ts @@ -750,10 +750,21 @@ export default class Hidive implements ServiceClass { sxData.fonts = fontsData.assFonts(sBody) as Font[]; fs.writeFileSync(sxData.path, sBody); console.info(`Subtitle downloaded: ${sxData.file}`); + let tsFile; + for (const file of files) { + if (file.type == 'Video') { + if (sub.cc && file.lang.code == 'eng') { + tsFile = `${file.path}.ts`; + } else if (!sub.cc && file.lang.code == 'jpn') { + tsFile = `${file.path}.ts`; + } + } + } files.push({ type: 'Subtitle', ...sxData as sxItem, - cc: sub.cc + cc: sub.cc, + belongsToFile: typeof tsFile === 'undefined' ? { hasFile: false } : { hasFile: true, file: `${tsFile}.ts`} }); } else{ console.warn(`Failed to download subtitle: ${sxData.file}`); @@ -792,7 +803,8 @@ export default class Hidive implements ServiceClass { return { file: a.path, language: a.language, - closedCaption: a.cc + closedCaption: a.cc, + belongsToFile: a.belongsToFile }; }), simul: data.filter(a => a.type === 'Video').map((a) : boolean => { diff --git a/modules/module.merger.ts b/modules/module.merger.ts index b73ceed..7906db8 100644 --- a/modules/module.merger.ts +++ b/modules/module.merger.ts @@ -113,7 +113,8 @@ class Merger { const filesToRemove: string[] = []; itemLoop: for (const vna of vnas.slice(1)) { console.info(`Trying to find delay for ${vna.lang.code}...`); - outer: for (let i = 1; i <= (items.length-offset); i++) { + outer: for (let i = 1; i < (items.length); i++) { + console.info(`Trying to match likeness with frame ${i+offset}`); const closeness = []; exec('ffmpeg', 'ffmpeg', `-hide_banner -loglevel error -i tmp/main-frames/${items[i]} -i "${vna.path}" -t ${MAX_OFFSET_SEC} -lavfi "ssim=f=tmp/stats-${i}.log;[0:v][1:v]psnr" -f null -`, false, true); filesToRemove.push(`tmp/stats-${i}.log`);