diff --git a/src/batch.ts b/src/batch.ts index 26cf1e0..f222856 100644 --- a/src/batch.ts +++ b/src/batch.ts @@ -64,9 +64,25 @@ export default function(args: string[], done: (err?: Error) => void) { if (errin) { - return done(errin); + if (tasksArr[i].retry <= 0) + { + console.error(err.stack || err); + console.error('Cannot get episodes from "' + tasksArr[i].address + '", please rerun later'); + } + else + { + if (config.verbose) + { + console.error(err.stack || err); + } + console.warn('Retrying to fetch episodes ' + tasksArr[i].retry + ' / ' + config.retry); + tasksArr[i].retry -= 1; + } + } + else + { + i += 1; } - i += 1; next(); }); })(); @@ -118,7 +134,7 @@ function tasks(config: IConfigLine, batchPath: string, done: (err: Error, tasks? return done(null, config.args.map((addressIn) => { - return {address: addressIn, config: configIn}; + return {address: addressIn, config: configIn, retry: config.retry}; })); } @@ -154,7 +170,7 @@ function tasks(config: IConfigLine, batchPath: string, done: (err: Error, tasks? return; } - map.push({address: addressIn, config: lineConfig}); + map.push({address: addressIn, config: lineConfig, retry: config.retry}); }); }); done(null, map); @@ -188,5 +204,6 @@ function parse(args: string[]): IConfigLine .option('-g, --rebuildcrp', 'Rebuild the crpersistant file.') .option('-b, --batch ', 'Batch file', 'CrunchyRoll.txt') .option('--verbose', 'Make tool verbose') + .option('--retry ', 'Number or time to retry fetching an episode. Default: 5', 5) .parse(args); } diff --git a/src/interface/IConfig.d.ts b/src/interface/IConfig.d.ts index acda699..c191bac 100644 --- a/src/interface/IConfig.d.ts +++ b/src/interface/IConfig.d.ts @@ -20,4 +20,5 @@ interface IConfig { rebuildcrp?: boolean; batch?: string; verbose?: boolean; + retry?: number; } diff --git a/src/interface/IConfigTask.d.ts b/src/interface/IConfigTask.d.ts index cb15d74..adbde3b 100644 --- a/src/interface/IConfigTask.d.ts +++ b/src/interface/IConfigTask.d.ts @@ -1,4 +1,5 @@ interface IConfigTask { address: string; config: IConfigLine; + retry: number; }