From 4519a80a4bb2080b60add7877e52a98df93d5ba4 Mon Sep 17 00:00:00 2001 From: stratumadev Date: Wed, 29 Jan 2025 15:53:29 +0100 Subject: [PATCH] file write on different disk bug solved --- adn.ts | 16 +++++++++------- ao.ts | 16 +++++++++++++--- crunchy.ts | 22 +++++++++++++--------- hidive.ts | 16 +++++++++++++--- 4 files changed, 48 insertions(+), 22 deletions(-) diff --git a/adn.ts b/adn.ts index d9202db..2764b70 100644 --- a/adn.ts +++ b/adn.ts @@ -833,13 +833,15 @@ export default class AnimationDigitalNetwork implements ServiceClass { const sxData: Partial = {}; sxData.file = langsData.subsFile(fileName as string, subIndex+'', subLang, false, options.ccTag); - sxData.path = path.join(this.cfg.dir.content, sxData.file); - const split = sxData.path.split(path.sep).slice(0, -1); - split.forEach((val, ind, arr) => { - const isAbsolut = path.isAbsolute(sxData.path as string); - if (!fs.existsSync(path.join(isAbsolut ? '' : this.cfg.dir.content, ...arr.slice(0, ind), val))) - fs.mkdirSync(path.join(isAbsolut ? '' : this.cfg.dir.content, ...arr.slice(0, ind), val)); - }); + if (path.isAbsolute(sxData.file)) { + sxData.path = sxData.file; + } else { + sxData.path = path.join(this.cfg.dir.content, sxData.file); + } + const dirName = path.dirname(sxData.path); + if (!fs.existsSync(dirName)) { + fs.mkdirSync(dirName, { recursive: true }); + } sxData.language = subLang; if(options.dlsubs.includes('all') || options.dlsubs.includes(subLang.locale)) { let subBody = '[Script Info]' diff --git a/ao.ts b/ao.ts index ff2851c..fde366d 100644 --- a/ao.ts +++ b/ao.ts @@ -727,7 +727,8 @@ export default class AnimeOnegai implements ServiceClass { if (!options.nocleanup) { fs.removeSync(`${tempTsFile}.video.enc.mp4`); } - fs.renameSync(`${tempTsFile}.video.mp4`, `${tsFile}.video.mp4`); + fs.copyFileSync(`${tempTsFile}.video.m4s`, `${tsFile}.video.m4s`); + fs.unlinkSync(`${tempTsFile}.video.m4s`); files.push({ type: 'Video', path: `${tsFile}.video.mp4`, @@ -748,7 +749,8 @@ export default class AnimeOnegai implements ServiceClass { if (!options.nocleanup) { fs.removeSync(`${tempTsFile}.audio.enc.mp4`); } - fs.renameSync(`${tempTsFile}.audio.mp4`, `${tsFile}.audio.mp4`); + fs.copyFileSync(`${tempTsFile}.audio.m4s`, `${tsFile}.audio.m4s`); + fs.unlinkSync(`${tempTsFile}.audio.m4s`); files.push({ type: 'Audio', path: `${tsFile}.audio.mp4`, @@ -800,7 +802,15 @@ export default class AnimeOnegai implements ServiceClass { } const sxData: Partial = {}; sxData.file = langsData.subsFile(fileName as string, subIndex+'', subLang, false, options.ccTag); - sxData.path = path.join(this.cfg.dir.content, sxData.file); + if (path.isAbsolute(sxData.file)) { + sxData.path = sxData.file; + } else { + sxData.path = path.join(this.cfg.dir.content, sxData.file); + } + const dirName = path.dirname(sxData.path); + if (!fs.existsSync(dirName)) { + fs.mkdirSync(dirName, { recursive: true }); + } sxData.language = subLang; if((options.dlsubs.includes('all') || options.dlsubs.includes(subLang.locale)) && sub.url.includes('.ass')) { const getSubtitle = await this.req.getData(sub.url, AuthHeaders); diff --git a/crunchy.ts b/crunchy.ts index 025f9e4..fbb443d 100644 --- a/crunchy.ts +++ b/crunchy.ts @@ -1831,7 +1831,8 @@ export default class Crunchy implements ServiceClass { if (!options.nocleanup) { fs.removeSync(`${tempTsFile}.video.enc.m4s`); } - fs.renameSync(`${tempTsFile}.video.m4s`, `${tsFile}.video.m4s`); + fs.copyFileSync(`${tempTsFile}.video.m4s`, `${tsFile}.video.m4s`) + fs.unlinkSync(`${tempTsFile}.video.m4s`) files.push({ type: 'Video', path: `${tsFile}.video.m4s`, @@ -1853,7 +1854,8 @@ export default class Crunchy implements ServiceClass { if (!options.nocleanup) { fs.removeSync(`${tempTsFile}.audio.enc.m4s`); } - fs.renameSync(`${tempTsFile}.audio.m4s`, `${tsFile}.audio.m4s`); + fs.copyFileSync(`${tempTsFile}.audio.m4s`, `${tsFile}.audio.m4s`); + fs.unlinkSync(`${tempTsFile}.audio.m4s`); files.push({ type: 'Audio', path: `${tsFile}.audio.m4s`, @@ -2131,13 +2133,15 @@ export default class Crunchy implements ServiceClass { const isSigns = langItem.code === audDub && !subsItem.isCC; const isCC = subsItem.isCC; sxData.file = langsData.subsFile(fileName as string, subsIndex, langItem, isCC, options.ccTag, isSigns, subsItem.format); - sxData.path = path.join(this.cfg.dir.content, sxData.file); - const split = sxData.path.split(path.sep).slice(0, -1); - split.forEach((val, ind, arr) => { - const isAbsolut = path.isAbsolute(sxData.path as string); - if (!fs.existsSync(path.join(isAbsolut ? '' : this.cfg.dir.content, ...arr.slice(0, ind), val))) - fs.mkdirSync(path.join(isAbsolut ? '' : this.cfg.dir.content, ...arr.slice(0, ind), val)); - }); + if (path.isAbsolute(sxData.file)) { + sxData.path = sxData.file; + } else { + sxData.path = path.join(this.cfg.dir.content, sxData.file); + } + const dirName = path.dirname(sxData.path); + if (!fs.existsSync(dirName)) { + fs.mkdirSync(dirName, { recursive: true }); + } if (files.some(a => a.type === 'Subtitle' && (a.language.cr_locale == langItem.cr_locale || a.language.locale == langItem.locale) && a.cc === isCC && a.signs === isSigns)) continue; if(options.dlsubs.includes('all') || options.dlsubs.includes(langItem.locale)){ diff --git a/hidive.ts b/hidive.ts index b883a3a..9ccd2f7 100644 --- a/hidive.ts +++ b/hidive.ts @@ -852,7 +852,8 @@ export default class Hidive implements ServiceClass { if (!options.nocleanup) { fs.removeSync(`${tempTsFile}.video.enc.m4s`); } - fs.renameSync(`${tempTsFile}.video.m4s`, `${tsFile}.video.m4s`); + fs.copyFileSync(`${tempTsFile}.video.m4s`, `${tsFile}.video.m4s`); + fs.unlinkSync(`${tempTsFile}.video.m4s`); files.push({ type: 'Video', path: `${tsFile}.video.m4s`, @@ -938,7 +939,8 @@ export default class Hidive implements ServiceClass { if (!options.nocleanup) { fs.removeSync(`${tempTsFile}.audio.enc.m4s`); } - fs.renameSync(`${tempTsFile}.audio.m4s`, `${tsFile}.audio.m4s`); + fs.copyFileSync(`${tempTsFile}.audio.m4s`, `${tsFile}.audio.m4s`); + fs.unlinkSync(`${tempTsFile}.audio.m4s`); files.push({ type: 'Audio', path: `${tsFile}.audio.m4s`, @@ -976,7 +978,15 @@ export default class Hidive implements ServiceClass { } const sxData: Partial = {}; sxData.file = langsData.subsFile(fileName as string, subIndex+'', subLang, false, options.ccTag); - sxData.path = path.join(this.cfg.dir.content, sxData.file); + if (path.isAbsolute(sxData.file)) { + sxData.path = sxData.file; + } else { + sxData.path = path.join(this.cfg.dir.content, sxData.file); + } + const dirName = path.dirname(sxData.path); + if (!fs.existsSync(dirName)) { + fs.mkdirSync(dirName, { recursive: true }); + } sxData.language = subLang; if(options.dlsubs.includes('all') || options.dlsubs.includes(subLang.locale)) { const getVttContent = await this.req.getData(sub.url);