force episode match for series files

This commit is contained in:
TheBeastLT
2020-03-02 21:11:41 +01:00
parent 1170159f59
commit 30d1a60d00

View File

@@ -4,7 +4,7 @@ const { torrentFiles } = require('../lib/torrent');
const { escapeTitle, getMetadata, getImdbId } = require('../lib/metadata');
const { Type } = require('./types');
const MIN_SIZE = 20 * 1024 * 1024; // 20 MB
const MIN_SIZE = 10 * 1024 * 1024; // 20 MB
async function parseTorrentFiles(torrent) {
const parsedTorrentName = parse(torrent.title);
@@ -119,6 +119,12 @@ function parseSeriesFile(file, parsedTorrentName) {
const pathInfo = parse(folders[folders.length - 2]);
fileInfo.season = pathInfo.season;
}
// force episode to any found number if it was not parsed
if (!fileInfo.episodes) {
const epMatcher = fileInfo.title.match(/(?<!movie\W*|film\W*)(?:^|\W)(\d{1,4})(?:a|b|v\d)?(?:\W|$)(?!movie|film)/i);
fileInfo.episodes = epMatcher && [parseInt(epMatcher[1], 10)];
fileInfo.episode = fileInfo.episodes && fileInfo.episodes[0];
}
fileInfo.isMovie = (parsedTorrentName.hasMovies && !fileInfo.season && (!fileInfo.episodes || !!fileInfo.year))
|| (!fileInfo.season && !!file.name.match(/\b(?:\d+[ .]movie|movie[ .]\d+)\b/i));
@@ -147,10 +153,9 @@ async function decomposeEpisodes(torrent, files, metadata = { episodeCount: [] }
&& sortedEpisodes.every(ep => metadata.episodeCount[div100(ep) - 1] >= mod100(ep))
&& files.every(file => !file.season || file.episodes.every(ep => div100(ep) === file.season))) {
decomposeConcatSeasonAndEpisodeFiles(torrent, files, metadata);
} else if ((files.filter(file => !file.isMovie && file.episodes).every(file => !file.season && file.episodes) ||
} else if (files.filter(file => !file.isMovie && file.episodes).every(file => !file.season && file.episodes) ||
files.some(file => file.season && file.episodes && file.episodes
.every(ep => metadata.episodeCount[file.season - 1] < ep)))
&& (sortedEpisodes.length <= 1 || sortedEpisodes.slice(1).every((ep, i) => ep - sortedEpisodes[i] <= 2))) {
.every(ep => metadata.episodeCount[file.season - 1] < ep))) {
decomposeAbsoluteEpisodeFiles(torrent, files, metadata);
} else if (files.every(file => (!file.season || !metadata.episodeCount[file.season - 1]) && file.date)) {
decomposeDateEpisodeFiles(torrent, files, metadata);