Update fs handeling for EBUSY errors

This commit is contained in:
Izuco 2022-01-17 16:05:57 +01:00
parent 04c8d5a5d8
commit 401b64db05
No known key found for this signature in database
GPG key ID: E9CBE9E4EF3A1BFA
7 changed files with 62 additions and 39 deletions

View file

@ -12,7 +12,8 @@ declare module 'hls-download' {
baseurl?: string,
proxy?: string,
skipInit?: boolean,
timeout?: number
timeout?: number,
fsRetryTime?: number
})
async download() : Promise<{
ok: boolean,

View file

@ -1375,7 +1375,8 @@ async function downloadMediaList(medias: CrunchyEpMeta) : Promise<{
timeout: argv.timeout,
m3u8json: chunkPlaylist,
// baseurl: chunkPlaylist.baseUrl,
threads: argv.partsize
threads: argv.partsize,
fsRetryTime: argv.fsRetryTime * 1000
}).download();
if(!dlStreamByPl.ok){
console.log(`[ERROR] DL Stats: ${JSON.stringify(dlStreamByPl.parts)}\n`);

View file

@ -783,7 +783,8 @@ async function downloadFile(filename: string, chunkList: {
m3u8json: chunkList,
output: `${filename + '.ts'}`,
timeout: argv.timeout,
threads: argv.partsize
threads: argv.partsize,
fsRetryTime: argv.fsRetryTime * 1000
}).download();
return downloadStatus.ok;

View file

@ -3,7 +3,7 @@ import { args, AvailableMuxer, groups } from './module.args';
yargs(process.argv.slice(2));
let argvC: { [x: string]: unknown; forceMuxer: AvailableMuxer|undefined; username: string|undefined, password: string|undefined, silentAuth: boolean, skipSubMux: boolean, downloadArchive: boolean, addArchive: boolean, but: boolean, auth: boolean | undefined; dlFonts: boolean | undefined; search: string | undefined; 'search-type': string; page: number | undefined; 'search-locale': string; new: boolean | undefined; 'movie-listing': string | undefined; series: string | undefined; s: string | undefined; e: string | undefined; q: number; x: number; kstream: number; partsize: number; hslang: string; dlsubs: string[]; novids: boolean | undefined; noaudio: boolean | undefined; nosubs: boolean | undefined; dubLang: string[]; all: boolean; fontSize: number; allDubs: boolean; timeout: number; simul: boolean; mp4: boolean; skipmux: boolean | undefined; fileName: string; numbers: number; nosess: string; debug: boolean | undefined; nocleanup: boolean; help: boolean | undefined; service: 'funi' | 'crunchy'; update: boolean; fontName: string | undefined; _: (string | number)[]; $0: string; };
let argvC: { [x: string]: unknown; fsRetryTime: number, forceMuxer: AvailableMuxer|undefined; username: string|undefined, password: string|undefined, silentAuth: boolean, skipSubMux: boolean, downloadArchive: boolean, addArchive: boolean, but: boolean, auth: boolean | undefined; dlFonts: boolean | undefined; search: string | undefined; 'search-type': string; page: number | undefined; 'search-locale': string; new: boolean | undefined; 'movie-listing': string | undefined; series: string | undefined; s: string | undefined; e: string | undefined; q: number; x: number; kstream: number; partsize: number; hslang: string; dlsubs: string[]; novids: boolean | undefined; noaudio: boolean | undefined; nosubs: boolean | undefined; dubLang: string[]; all: boolean; fontSize: number; allDubs: boolean; timeout: number; simul: boolean; mp4: boolean; skipmux: boolean | undefined; fileName: string; numbers: number; nosess: string; debug: boolean | undefined; nocleanup: boolean; help: boolean | undefined; service: 'funi' | 'crunchy'; update: boolean; fontName: string | undefined; _: (string | number)[]; $0: string; };
export type ArgvType = typeof argvC;

View file

@ -555,6 +555,18 @@ const args: TAppArg<boolean|number|string|unknown[]>[] = [
default: undefined
}
},
{
name: 'fsRetryTime',
describe: 'Set the time the downloader waits before retrying if an error while writing the file occurs',
docDescribe: true,
group: 'dl',
service: 'both',
type: 'number',
usage: '${time in seconds}',
default: {
default: 5
},
}
];
export {

74
package-lock.json generated
View file

@ -1,19 +1,19 @@
{
"name": "multi-downloader-nx",
"version": "2.0.17",
"version": "2.0.18",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "multi-downloader-nx",
"version": "2.0.17",
"version": "2.0.18",
"license": "MIT",
"dependencies": {
"cheerio": "^1.0.0-rc.10",
"form-data": "^4.0.0",
"fs-extra": "^10.0.0",
"got": "^11.8.3",
"hls-download": "^2.6.6",
"hls-download": "^2.6.7",
"iso-639": "^0.2.2",
"lookpath": "^1.1.0",
"m3u8-parsed": "^1.3.0",
@ -279,9 +279,9 @@
}
},
"node_modules/@sindresorhus/is": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.1.tgz",
"integrity": "sha512-BrzrgtaqEre0qfvI8sMTaEvx+bayuhPmfe2rfeUGPPHYr/PLxCOqkOe4TQTDPb+qcqgNcsAtXV/Ew74mcDIE8w==",
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.3.0.tgz",
"integrity": "sha512-wwOvh0eO3PiTEivGJWiZ+b946SlMSb4pe+y+Ur/4S87cwo09pYi+FWHHnbrM3W9W7cBYKDqQXcrFYjYUCOJUEQ==",
"engines": {
"node": ">=10"
},
@ -372,9 +372,9 @@
}
},
"node_modules/@types/node": {
"version": "16.11.19",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.19.tgz",
"integrity": "sha512-BPAcfDPoHlRQNKktbsbnpACGdypPFBuX4xQlsWDE7B8XXcfII+SpOLay3/qZmCLb39kV5S1RTYwXdkx2lwLYng=="
"version": "16.11.20",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.20.tgz",
"integrity": "sha512-lAKaZ0Lc1Umwd0AqLr6iy5U8u/1DpK7/JzNgQn9cMMUk2mFR8bbhEP8BQrI9Cm5CU0bOVCaWbkGBvgqKMOJHsw=="
},
"node_modules/@types/responselike": {
"version": "1.0.0",
@ -1607,9 +1607,9 @@
}
},
"node_modules/eslint-visitor-keys": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
"integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz",
"integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@ -2188,9 +2188,9 @@
"dev": true
},
"node_modules/hls-download": {
"version": "2.6.6",
"resolved": "https://registry.npmjs.org/hls-download/-/hls-download-2.6.6.tgz",
"integrity": "sha512-2lcQ1GGX89hiN3YLE6C2/GmcRAeUSRm+7sxLQ6ZZ6uqiGOxBGsr/+xG7gRXCUFJIfDudwlRkSUDaLo6qhcXBsw==",
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/hls-download/-/hls-download-2.6.7.tgz",
"integrity": "sha512-74etN9G6LjDgCCuv0cvNPIUXOFNHWxXA6tyu10/cZSn6wYhF7L8c4QnE/MKpWr557HIDaQJJjWsg8NBAre24LQ==",
"dependencies": {
"got": "^11.8.3",
"proxy-agent": "^5.0.0",
@ -2744,15 +2744,23 @@
}
},
"node_modules/node-fetch": {
"version": "2.6.6",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz",
"integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==",
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"dev": true,
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
}
},
"node_modules/normalize-url": {
@ -4429,9 +4437,9 @@
}
},
"@sindresorhus/is": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.1.tgz",
"integrity": "sha512-BrzrgtaqEre0qfvI8sMTaEvx+bayuhPmfe2rfeUGPPHYr/PLxCOqkOe4TQTDPb+qcqgNcsAtXV/Ew74mcDIE8w=="
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.3.0.tgz",
"integrity": "sha512-wwOvh0eO3PiTEivGJWiZ+b946SlMSb4pe+y+Ur/4S87cwo09pYi+FWHHnbrM3W9W7cBYKDqQXcrFYjYUCOJUEQ=="
},
"@szmarczak/http-timer": {
"version": "4.0.6",
@ -4510,9 +4518,9 @@
}
},
"@types/node": {
"version": "16.11.19",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.19.tgz",
"integrity": "sha512-BPAcfDPoHlRQNKktbsbnpACGdypPFBuX4xQlsWDE7B8XXcfII+SpOLay3/qZmCLb39kV5S1RTYwXdkx2lwLYng=="
"version": "16.11.20",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.20.tgz",
"integrity": "sha512-lAKaZ0Lc1Umwd0AqLr6iy5U8u/1DpK7/JzNgQn9cMMUk2mFR8bbhEP8BQrI9Cm5CU0bOVCaWbkGBvgqKMOJHsw=="
},
"@types/responselike": {
"version": "1.0.0",
@ -5410,9 +5418,9 @@
}
},
"eslint-visitor-keys": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
"integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz",
"integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==",
"dev": true
},
"espree": {
@ -5843,9 +5851,9 @@
"dev": true
},
"hls-download": {
"version": "2.6.6",
"resolved": "https://registry.npmjs.org/hls-download/-/hls-download-2.6.6.tgz",
"integrity": "sha512-2lcQ1GGX89hiN3YLE6C2/GmcRAeUSRm+7sxLQ6ZZ6uqiGOxBGsr/+xG7gRXCUFJIfDudwlRkSUDaLo6qhcXBsw==",
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/hls-download/-/hls-download-2.6.7.tgz",
"integrity": "sha512-74etN9G6LjDgCCuv0cvNPIUXOFNHWxXA6tyu10/cZSn6wYhF7L8c4QnE/MKpWr557HIDaQJJjWsg8NBAre24LQ==",
"requires": {
"got": "^11.8.3",
"proxy-agent": "^5.0.0",
@ -6276,9 +6284,9 @@
}
},
"node-fetch": {
"version": "2.6.6",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz",
"integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==",
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"dev": true,
"requires": {
"whatwg-url": "^5.0.0"

View file

@ -1,7 +1,7 @@
{
"name": "multi-downloader-nx",
"short_name": "aniDL",
"version": "2.0.17",
"version": "2.0.18",
"description": "Download videos from Funimation or Crunchyroll via cli",
"keywords": [
"download",
@ -30,7 +30,7 @@
"form-data": "^4.0.0",
"fs-extra": "^10.0.0",
"got": "^11.8.3",
"hls-download": "^2.6.6",
"hls-download": "^2.6.7",
"iso-639": "^0.2.2",
"lookpath": "^1.1.0",
"m3u8-parsed": "^1.3.0",