From 87a8f0f88bed94e9e35f45f639f1f3ae40c3da8f Mon Sep 17 00:00:00 2001 From: orangeMikeB <173977996+orangeMikeB@users.noreply.github.com> Date: Fri, 28 Jun 2024 01:34:47 +0200 Subject: [PATCH 1/2] fixed wrong audio/subs metadata due to wrong path seg. --- src/api/routes/service/service.service.ts | 51 +++++++++++++---------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/src/api/routes/service/service.service.ts b/src/api/routes/service/service.service.ts index a0f0d2f..d632c6e 100644 --- a/src/api/routes/service/service.service.ts +++ b/src/api/routes/service/service.service.ts @@ -1398,26 +1398,35 @@ async function mergeVideoFile( options.push('-c:s mov_text') } + const getFilename = function(path: string, ext: string, delimiter: string): string { + const segments = path.split(delimiter) + + if (segments.length == 0) { + return "unkown" + } + + return segments[segments.length - 1].split(ext)[0] + } + for (const [index, a] of audios.entries()) { output.addInput(a) options.push(`-map ${ffindex}:a:0`) options.push( `-metadata:s:a:${index} language=${ - locales.find((l) => l.locale === a.split('/')[1].split('.aac')[0]) - ? locales.find((l) => l.locale === a.split('/')[1].split('.aac')[0])?.iso - : a.split('/')[1].split('.aac')[0] + locales.find((l) => l.locale === getFilename(a, '.aac', '/')) + ? locales.find((l) => l.locale === getFilename(a, '.aac', '/'))?.iso + : getFilename(a, '.aac', '/') }` ) - - ffindex++ - options.push( `-metadata:s:a:${index} title=${ - locales.find((l) => l.locale === a.split('/')[1].split('.aac')[0]) - ? locales.find((l) => l.locale === a.split('/')[1].split('.aac')[0])?.title - : a.split('/')[1].split('.aac')[0] + locales.find((l) => l.locale === getFilename(a, '.aac', '/')) + ? locales.find((l) => l.locale === getFilename(a, '.aac', '/'))?.title + : getFilename(a, '.aac', '/') }` ) + + ffindex++ } options.push(`-disposition:a:0 default`) @@ -1430,17 +1439,17 @@ async function mergeVideoFile( if (s.includes('-FORCED')) { options.push( `-metadata:s:s:${index} language=${ - locales.find((l) => l.locale === s.split('/')[1].split('-FORCED.ass')[0]) - ? locales.find((l) => l.locale === s.split('/')[1].split('-FORCED.ass')[0])?.iso - : s.split('/')[1].split('-FORCED.ass')[0] + locales.find((l) => l.locale === getFilename(s, '-FORCED.ass', '/')) + ? locales.find((l) => l.locale === getFilename(s, '-FORCED.ass', '/'))?.iso + : getFilename(s, '-FORCED.ass', '/') }` ) } else { options.push( `-metadata:s:s:${index} language=${ - locales.find((l) => l.locale === s.split('/')[1].split('.ass')[0]) - ? locales.find((l) => l.locale === s.split('/')[1].split('.ass')[0])?.iso - : s.split('/')[1].split('.ass')[0] + locales.find((l) => l.locale === getFilename(s, '.ass', '/')) + ? locales.find((l) => l.locale === getFilename(s, '.ass', '/'))?.iso + : getFilename(s, '.ass', '/') }` ) } @@ -1448,17 +1457,17 @@ async function mergeVideoFile( if (s.includes('-FORCED')) { options.push( `-metadata:s:s:${index} title=${ - locales.find((l) => l.locale === s.split('/')[1].split('-FORCED.ass')[0]) - ? locales.find((l) => l.locale === s.split('/')[1].split('-FORCED.ass')[0])?.title - : s.split('/')[1].split('-FORCED.ass')[0] + locales.find((l) => l.locale === getFilename(s, '-FORCED.ass', '/')) + ? locales.find((l) => l.locale === getFilename(s, '-FORCED.ass', '/'))?.title + : getFilename(s, '-FORCED.ass', '/') }[FORCED]` ) } else { options.push( `-metadata:s:s:${index} title=${ - locales.find((l) => l.locale === s.split('/')[1].split('.ass')[0]) - ? locales.find((l) => l.locale === s.split('/')[1].split('.ass')[0])?.title - : s.split('/')[1].split('.ass')[0] + locales.find((l) => l.locale === getFilename(s, '.ass', '/')) + ? locales.find((l) => l.locale === getFilename(s, '.ass', '/'))?.title + : getFilename(s, '.ass', '/') }` ) } From 3f10dcb8a9c3b0fd91c568ccde53d4ab97b0e34f Mon Sep 17 00:00:00 2001 From: stratuma Date: Fri, 28 Jun 2024 02:31:31 +0200 Subject: [PATCH 2/2] moved getFilename function to services/folder.ts --- src/api/routes/service/service.service.ts | 12 +----------- src/api/services/folder.ts | 10 ++++++++++ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/api/routes/service/service.service.ts b/src/api/routes/service/service.service.ts index d632c6e..8ca8e82 100644 --- a/src/api/routes/service/service.service.ts +++ b/src/api/routes/service/service.service.ts @@ -1,7 +1,7 @@ import { Account, Playlist } from '../../db/database' import { downloadMPDAudio } from '../../services/audio' import { concatenateTSFiles } from '../../services/concatenate' -import { checkFileExistence, createFolder, createFolderName, deleteFolder, deleteTemporaryFolders } from '../../services/folder' +import { checkFileExistence, createFolder, createFolderName, deleteFolder, deleteTemporaryFolders, getFilename } from '../../services/folder' import { downloadADNSub, downloadCRSub } from '../../services/subs' import { CrunchyEpisode } from '../../types/crunchyroll' import { checkAccountMaxStreams, crunchyGetMetadata, crunchyGetPlaylist, crunchyGetPlaylistMPD } from '../crunchyroll/crunchyroll.service' @@ -1397,16 +1397,6 @@ async function mergeVideoFile( if (format === 'mp4') { options.push('-c:s mov_text') } - - const getFilename = function(path: string, ext: string, delimiter: string): string { - const segments = path.split(delimiter) - - if (segments.length == 0) { - return "unkown" - } - - return segments[segments.length - 1].split(ext)[0] - } for (const [index, a] of audios.entries()) { output.addInput(a) diff --git a/src/api/services/folder.ts b/src/api/services/folder.ts index 97c9767..95faab9 100644 --- a/src/api/services/folder.ts +++ b/src/api/services/folder.ts @@ -100,3 +100,13 @@ export async function deleteTemporaryFolders() { throw error } } + +export function getFilename(path: string, ext: string, delimiter: string) { + const segments = path.split(delimiter) + + if (segments.length == 0) { + return "unkown" + } + + return segments[segments.length - 1].split(ext)[0] +} \ No newline at end of file