Relative path support

This commit is contained in:
Izuco 2021-09-04 23:22:20 +02:00
parent 468d564d2e
commit e3e2b37f3f
No known key found for this signature in database
GPG key ID: 318460063D70949F
3 changed files with 14 additions and 12 deletions

View file

@ -1,6 +1,4 @@
releaseGroup: Funimation
videoLayer: 7 videoLayer: 7
nServer: 1 nServer: 1
mp4mux: false mp4mux: false
muxSubs: false
noCleanUp: false noCleanUp: false

20
funi.js
View file

@ -101,7 +101,7 @@ else{
let title = '', let title = '',
showTitle = '', showTitle = '',
fnEpNum = 0, fnEpNum = 0,
fnOutput = '', fnOutput = [],
season = 0, season = 0,
tsDlPath = [], tsDlPath = [],
stDlPath = []; stDlPath = [];
@ -604,8 +604,10 @@ async function downloadStreams(){
console.log('[INFO] Stream URL:',videoUrl); console.log('[INFO] Stream URL:',videoUrl);
fnOutput = parseFileName(argv.fileName, title, fnEpNum, showTitle, season, plLayersRes[argv.q].width, plLayersRes[argv.q].height); fnOutput = parseFileName(argv.fileName, title, fnEpNum, showTitle, season, plLayersRes[argv.q].width, plLayersRes[argv.q].height);
outName = fnOutput; if (fnOutput.length < 1)
console.log(`[INFO] Output filename: ${fnOutput}.ts`); throw new Error('Invalid path', fnOutput);
outName = fnOutput.slice(-1);
console.log(`[INFO] Output filename: ${fnOutput.join(path.sep)}.ts`);
} }
else if(argv.x > plServerList.length){ else if(argv.x > plServerList.length){
console.log('[ERROR] Server not selected!\n'); console.log('[ERROR] Server not selected!\n');
@ -619,6 +621,8 @@ async function downloadStreams(){
let dlFailed = false; let dlFailed = false;
let dlFailedA = false; let dlFailedA = false;
await fs.promises.mkdir(path.join(cfg.dir.content, ...fnOutput.slice(0, -1)), { recursive: true });
video: if (!argv.novids) { video: if (!argv.novids) {
if (plAud.uri && (purvideo.length > 0 || audioAndVideo.length > 0)) { if (plAud.uri && (purvideo.length > 0 || audioAndVideo.length > 0)) {
break video; break video;
@ -635,7 +639,7 @@ async function downloadStreams(){
let chunkList = m3u8(reqVideo.res.body); let chunkList = m3u8(reqVideo.res.body);
let tsFile = path.join(cfg.dir.content, `${fnOutput}.video${(plAud.uri ? '' : '.' + streamPath.lang )}`); let tsFile = path.join(cfg.dir.content, ...fnOutput.slice(0, -1), `${fnOutput.slice(-1)}.video${(plAud.uri ? '' : '.' + streamPath.lang )}`);
dlFailed = !await downloadFile(tsFile, chunkList); dlFailed = !await downloadFile(tsFile, chunkList);
if (!dlFailed) { if (!dlFailed) {
if (plAud.uri) { if (plAud.uri) {
@ -667,7 +671,7 @@ async function downloadStreams(){
let chunkListA = m3u8(reqAudio.res.body); let chunkListA = m3u8(reqAudio.res.body);
let tsFileA = path.join(cfg.dir.content, fnOutput + `.audio.${plAud.language}`); let tsFileA = path.join(cfg.dir.content, ...fnOutput.slice(0, -1), `${fnOutput.slice(-1)}.audio.${plAud.language}`);
dlFailedA = !await downloadFile(tsFileA, chunkListA); dlFailedA = !await downloadFile(tsFileA, chunkListA);
if (!dlFailedA) if (!dlFailedA)
@ -694,7 +698,7 @@ async function downloadStreams(){
}); });
if(subsSrc.ok){ if(subsSrc.ok){
let assData = vttConvert(subsSrc.res.body, (subsExt == '.srt' ? true : false), subObject.langName, argv.fontSize); let assData = vttConvert(subsSrc.res.body, (subsExt == '.srt' ? true : false), subObject.langName, argv.fontSize);
subObject.file = path.join(cfg.dir.content, `${fnOutput}.subtitle${subObject.ext}${subsExt}`); subObject.file = path.join(cfg.dir.content, ...fnOutput.slice(0, -1), `${fnOutput.slice(-1)}.subtitle${subObject.ext}${subsExt}`);
fs.writeFileSync(subObject.file, assData); fs.writeFileSync(subObject.file, assData);
} }
else{ else{
@ -880,7 +884,7 @@ function logDownloadInfo (dateStart, partsDL, partsTotal, partsDLRes, partsTotal
* @param {number} season * @param {number} season
* @param {number} width * @param {number} width
* @param {number} height * @param {number} height
* @returns {string} * @returns {Array<string>}
*/ */
function parseFileName(input, title, episode, showTitle, season, width, height) { function parseFileName(input, title, episode, showTitle, season, width, height) {
const varRegex = /\${[A-Za-z1-9]+}/g; const varRegex = /\${[A-Za-z1-9]+}/g;
@ -918,5 +922,5 @@ function parseFileName(input, title, episode, showTitle, season, width, height)
break; break;
} }
} }
return shlp.cleanupFilename(input); return input.split(path.sep).map(a => shlp.cleanupFilename(a));
} }

View file

@ -1,7 +1,7 @@
{ {
"name": "funimation-downloader-nx", "name": "funimation-downloader-nx",
"short_name": "funi", "short_name": "funi",
"version": "4.9.5", "version": "4.10.0",
"description": "Download videos from Funimation via cli.", "description": "Download videos from Funimation via cli.",
"keywords": [ "keywords": [
"download", "download",