diff --git a/scraper/lib/torrent.js b/scraper/lib/torrent.js index 41ed1e1..f4a5e8e 100644 --- a/scraper/lib/torrent.js +++ b/scraper/lib/torrent.js @@ -126,13 +126,17 @@ function filterVideos(files) { const videos = files.filter(file => isVideo(file.path)); const maxSize = Math.max(...videos.map(video => video.size)); const minSampleRatio = videos.length <= 3 ? 5 : 10; + const minAnimeExtraRatio = 7; const minRedundantRatio = videos.length <= 3 ? 30 : Number.MAX_VALUE; const isSample = video => video.path.match(/sample/i) && maxSize / parseInt(video.size) > minSampleRatio; const isRedundant = video => maxSize / parseInt(video.size) > minRedundantRatio; const isExtra = video => video.path.match(/extras?\//i); + const isAnimeExtra = video => video.path.match(/\b(?:NC)?(?:ED|OP|PV)(?:v?\d\d?)?\b/i) + && maxSize / parseInt(video.size) > minAnimeExtraRatio; return videos .filter(video => !isSample(video)) .filter(video => !isExtra(video)) + .filter(video => !isAnimeExtra(video)) .filter(video => !isRedundant(video)); } diff --git a/scraper/lib/torrentFiles.js b/scraper/lib/torrentFiles.js index 44b2561..3c69fc4 100644 --- a/scraper/lib/torrentFiles.js +++ b/scraper/lib/torrentFiles.js @@ -366,8 +366,11 @@ function needsCinemetaMetadataForAnime(files, metadata) { } const maxSeason = Math.max(...metadata.videos.map(video => video.imdbSeason)) || Number.MAX_VALUE; + const differentSeasons = new Set(metadata.videos + .map(video => video.imdbSeason) + .filter(season => Number.isInteger(season))).size; const totalEpisodes = metadata.totalCount || Number.MAX_VALUE; - return files + return differentSeasons > 1 || files .filter(file => !file.isMovie && file.episodes) .some(file => file.season > maxSeason || file.episodes.every(ep => ep > totalEpisodes)); }