New way to specify episode range. Work in progress, may not work well.
This commit is contained in:
parent
b2ecd05586
commit
a7bc34df0d
48
src/batch.ts
48
src/batch.ts
@ -200,7 +200,7 @@ function split(value: string): string[]
|
||||
return pieces;
|
||||
}
|
||||
|
||||
function get_min_filter(filter: string): number
|
||||
function get_min_filter(filter: string): IEpisodeNumber
|
||||
{
|
||||
if (filter !== undefined)
|
||||
{
|
||||
@ -214,13 +214,41 @@ function get_min_filter(filter: string): number
|
||||
|
||||
if (tok[0] !== '')
|
||||
{
|
||||
return parseInt(tok[0], 10);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
/* If first item is not empty, ie '10-20' */
|
||||
if (tok[0].includes('e'))
|
||||
{
|
||||
/* include a e so we probably have something like 5e10
|
||||
aka season 5 episode 10
|
||||
*/
|
||||
const tok2 = tok[0].split('else');
|
||||
if (tok2.length > 2)
|
||||
{
|
||||
log.error('Invalid episode filter \'' + filter + '\'');
|
||||
process.exit(-1);
|
||||
}
|
||||
|
||||
function get_max_filter(filter: string): number
|
||||
if (tok[0] !== '')
|
||||
{
|
||||
/* So season is properly filled */
|
||||
return {season: parseInt(tok2[0], 10), episode: parseInt(tok2[1], 10)};
|
||||
}
|
||||
else
|
||||
{
|
||||
/* we have 'e10' */
|
||||
return {season: 0, episode: parseInt(tok2[1], 10)};
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return {season: 0, episode: parseInt(tok[0], 10)};
|
||||
}
|
||||
}
|
||||
}
|
||||
/* First item is empty, ie '-20' */
|
||||
return {season: 0, episode: 0};
|
||||
}
|
||||
|
||||
function get_max_filter(filter: string): IEpisodeNumber
|
||||
{
|
||||
if (filter !== undefined)
|
||||
{
|
||||
@ -235,15 +263,15 @@ function get_max_filter(filter: string): number
|
||||
if ((tok.length > 1) && (tok[1] !== ''))
|
||||
{
|
||||
/* We have a max value */
|
||||
return parseInt(tok[1], 10);
|
||||
return {season: +Infinity, episode: parseInt(tok[1], 10)};
|
||||
}
|
||||
else if ((tok.length === 1) && (tok[0] !== ''))
|
||||
{
|
||||
/* A single episode has been requested */
|
||||
return parseInt(tok[0], 10);
|
||||
return {season: +Infinity, episode: parseInt(tok[0], 10) + 1};
|
||||
}
|
||||
}
|
||||
return +Infinity;
|
||||
return {season: +Infinity, episode: +Infinity};
|
||||
}
|
||||
|
||||
/**
|
||||
@ -290,7 +318,7 @@ function tasks(config: IConfigLine, batchPath: string, done: (err: Error, tasks?
|
||||
episode_min: get_min_filter(config.episodes), episode_max: get_max_filter(config.episodes)};
|
||||
}
|
||||
|
||||
return {address: '', retry: 0, episode_min: 0, episode_max: 0};
|
||||
return {address: '', retry: 0, episode_min: {season: 0, episode: 0}, episode_max: {season: 0, episode: 0}};
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
4
src/interface/IConfigTask.d.ts
vendored
4
src/interface/IConfigTask.d.ts
vendored
@ -1,6 +1,6 @@
|
||||
interface IConfigTask {
|
||||
address: string;
|
||||
retry: number;
|
||||
episode_min: number;
|
||||
episode_max: number;
|
||||
episode_min: IEpisodeNumber;
|
||||
episode_max: IEpisodeNumber;
|
||||
}
|
||||
|
||||
4
src/interface/IEpisodeNumber.d.ts
vendored
Normal file
4
src/interface/IEpisodeNumber.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
interface IEpisodeNumber {
|
||||
season: number,
|
||||
episode: number
|
||||
}
|
||||
@ -144,9 +144,10 @@ function download(cache: {[address: string]: number}, config: IConfig,
|
||||
done: (err: any, ign: boolean) => void)
|
||||
{
|
||||
const episodeNumber = parseInt(item.episode, 10);
|
||||
const seasonNumber = item.volume;
|
||||
|
||||
if ( (episodeNumber < task.episode_min) ||
|
||||
(episodeNumber > task.episode_max) )
|
||||
if ( (episodeNumber < task.episode_min.episode) ||
|
||||
(episodeNumber > task.episode_max.episode) )
|
||||
{
|
||||
return done(null, false);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user