export const guessSeasonEpisode = (name) => { const str = name.replace(/\W/g, " ").toLowerCase(); const seasonMatch = [...str.matchAll(/[s](?\d+)/g)]; const episodeMatch = str.match(/[e](?\d+)/); if (seasonMatch.length === 0 && str.includes("complete")) { return { completeSeries: true }; } else if (seasonMatch.length === 1 && !episodeMatch) { const season = Number(seasonMatch[0].groups?.season) || 0; return { seasons: [season] }; } else if (seasonMatch.length > 1) { const firstSeason = Number(seasonMatch[0].groups?.season) || 0; const lastSeason = Number(seasonMatch[seasonMatch.length - 1].groups?.season) || 0; const seasons = []; for (let i = firstSeason; i <= lastSeason; i++) seasons.push(i); return { seasons }; } else if (seasonMatch[0] || episodeMatch) { const season = Number(seasonMatch[0]?.groups?.season) || undefined; const episode = Number(episodeMatch?.groups?.episode) || undefined; return { season, episode }; } else { const seasonEpisodeMatch = str.match(/(?\d+)x(?\d+)/); const season = Number(seasonEpisodeMatch?.groups?.season) || undefined; const episode = Number(seasonEpisodeMatch?.groups?.episode) || undefined; return { season, episode }; } }; export const isTorrentNameMatch = (name, season, episode) => { const guess = guessSeasonEpisode(name); if (guess.completeSeries) return true; if (guess.seasons?.includes(season)) return true; if (guess.season === season && guess.episode === episode) return true; if (season === 0) { if (name.toLowerCase().includes("special")) return true; if (guess.season === undefined && guess.seasons === undefined) return true; } return false; }; export const isFileNameMatch = (name, season, episode) => { const guess = guessSeasonEpisode(name); if (guess.season === season && guess.episode === episode) return true; if (season === 0) return true; return false; }; //# sourceMappingURL=shows.js.map