mirror of
https://github.com/anidl/multi-downloader-nx.git
synced 2026-03-11 17:45:30 +00:00
Update fs handeling for EBUSY errors
This commit is contained in:
parent
04c8d5a5d8
commit
401b64db05
7 changed files with 62 additions and 39 deletions
3
@types/hls-download.d.ts
vendored
3
@types/hls-download.d.ts
vendored
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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`);
|
||||
|
|
|
|||
3
funi.ts
3
funi.ts
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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
74
package-lock.json
generated
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Reference in a new issue