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;
|
return pieces;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_min_filter(filter: string): number
|
function get_min_filter(filter: string): IEpisodeNumber
|
||||||
{
|
{
|
||||||
if (filter !== undefined)
|
if (filter !== undefined)
|
||||||
{
|
{
|
||||||
@ -214,13 +214,41 @@ function get_min_filter(filter: string): number
|
|||||||
|
|
||||||
if (tok[0] !== '')
|
if (tok[0] !== '')
|
||||||
{
|
{
|
||||||
return parseInt(tok[0], 10);
|
/* If first item is not empty, ie '10-20' */
|
||||||
}
|
if (tok[0].includes('e'))
|
||||||
}
|
{
|
||||||
return 0;
|
/* 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)
|
if (filter !== undefined)
|
||||||
{
|
{
|
||||||
@ -235,15 +263,15 @@ function get_max_filter(filter: string): number
|
|||||||
if ((tok.length > 1) && (tok[1] !== ''))
|
if ((tok.length > 1) && (tok[1] !== ''))
|
||||||
{
|
{
|
||||||
/* We have a max value */
|
/* 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] !== ''))
|
else if ((tok.length === 1) && (tok[0] !== ''))
|
||||||
{
|
{
|
||||||
/* A single episode has been requested */
|
/* 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)};
|
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 {
|
interface IConfigTask {
|
||||||
address: string;
|
address: string;
|
||||||
retry: number;
|
retry: number;
|
||||||
episode_min: number;
|
episode_min: IEpisodeNumber;
|
||||||
episode_max: number;
|
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)
|
done: (err: any, ign: boolean) => void)
|
||||||
{
|
{
|
||||||
const episodeNumber = parseInt(item.episode, 10);
|
const episodeNumber = parseInt(item.episode, 10);
|
||||||
|
const seasonNumber = item.volume;
|
||||||
|
|
||||||
if ( (episodeNumber < task.episode_min) ||
|
if ( (episodeNumber < task.episode_min.episode) ||
|
||||||
(episodeNumber > task.episode_max) )
|
(episodeNumber > task.episode_max.episode) )
|
||||||
{
|
{
|
||||||
return done(null, false);
|
return done(null, false);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user