mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-07-27 04:49:49 -07:00
fix(launcher): find previous season when current dir is missing
- findLastEpisodeInPreviousSeason now falls back to matching by season number when the current season dir isn't in the listed seasons (e.g. deleted file's season folder) - test: delete season-2 dir contents so the fallback path is exercised
This commit is contained in:
@@ -136,9 +136,19 @@ function findLastEpisodeInPreviousSeason(resolvedCurrent: string, dir: string):
|
|||||||
if (seriesRoot === dir) return null;
|
if (seriesRoot === dir) return null;
|
||||||
const seasons = listSeasonDirs(seriesRoot);
|
const seasons = listSeasonDirs(seriesRoot);
|
||||||
const currentIdx = seasons.findIndex((season) => path.resolve(season.path) === dir);
|
const currentIdx = seasons.findIndex((season) => path.resolve(season.path) === dir);
|
||||||
if (currentIdx <= 0) return null;
|
const currentSeason = seasonNumberFromDirName(path.basename(dir));
|
||||||
const previousSeason = sortVideosByEpisode(collectVideos(seasons[currentIdx - 1]!.path, false));
|
const previousSeasonEntry =
|
||||||
return previousSeason[previousSeason.length - 1] ?? null;
|
currentIdx >= 0
|
||||||
|
? seasons[currentIdx - 1]
|
||||||
|
: seasons
|
||||||
|
.filter(
|
||||||
|
(season) =>
|
||||||
|
currentSeason !== null && season.season !== null && season.season < currentSeason,
|
||||||
|
)
|
||||||
|
.at(-1);
|
||||||
|
if (!previousSeasonEntry) return null;
|
||||||
|
const previousSeason = sortVideosByEpisode(collectVideos(previousSeasonEntry.path, false));
|
||||||
|
return previousSeason.at(-1) ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function findPreviousEpisode(currentPath: string): string | null {
|
export function findPreviousEpisode(currentPath: string): string | null {
|
||||||
|
|||||||
@@ -240,6 +240,7 @@ test('findPreviousEpisode falls back to prior season when a deleted file was the
|
|||||||
try {
|
try {
|
||||||
const season1 = path.join(seriesRoot, 'Season-1');
|
const season1 = path.join(seriesRoot, 'Season-1');
|
||||||
const season2 = path.join(seriesRoot, 'Season-2');
|
const season2 = path.join(seriesRoot, 'Season-2');
|
||||||
|
fs.rmSync(path.join(season2, 'Show - S02E01.mkv'));
|
||||||
const missing = path.join(season2, 'Show - S02E01 - Deleted Cut.mkv');
|
const missing = path.join(season2, 'Show - S02E01 - Deleted Cut.mkv');
|
||||||
assert.equal(findPreviousEpisode(missing), path.join(season1, 'Show - S01E03.mkv'));
|
assert.equal(findPreviousEpisode(missing), path.join(season1, 'Show - S01E03.mkv'));
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
Reference in New Issue
Block a user