diff --git a/src/api/routes/service/service.service.ts b/src/api/routes/service/service.service.ts index a0f0d2f..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,27 +1397,26 @@ async function mergeVideoFile( if (format === 'mp4') { options.push('-c:s mov_text') } - + 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 +1429,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 +1447,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', '/') }` ) } 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