stremio/apps/master-api/src/metadata/filename-parser.test.ts
Jos Vooges | STH eb8ae1e85a Fix Stremio playback, folder-aware scan, and remove STH branding.
Parse Plex-style Title (Year) and Show/Season folders; restore notWebReady with direct node stream URLs; hide unavailable titles by default.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 02:16:46 +02:00

51 lines
1.8 KiB
TypeScript

import {
detectMediaType,
parseMovieFilename,
parseMovieFromPath,
parseSeriesFilename,
parseSeriesFromPath,
} from "./filename-parser";
function assert(condition: unknown, message: string): asserts condition {
if (!condition) throw new Error(message);
}
function run() {
const movie = parseMovieFilename(
"The.Matrix.1999.2160p.UHD.BluRay.REMUX.HEVC.TrueHD.Atmos.mkv"
);
assert(movie, "movie parse failed");
assert(movie.title === "The Matrix", `title=${movie.title}`);
assert(movie.year === 1999, `year=${movie.year}`);
assert(movie.resolution === "2160p", `resolution=${movie.resolution}`);
const series = parseSeriesFilename("Breaking.Bad.S03E04.1080p.BluRay.mkv");
assert(series, "series parse failed");
assert(series.title === "Breaking Bad", `title=${series.title}`);
assert(series.season === 3, `season=${series.season}`);
assert(series.episode === 4, `episode=${series.episode}`);
const alt = parseSeriesFilename("Show.Name.1x02.720p.mkv");
assert(alt?.season === 1 && alt.episode === 2, "1x02 pattern failed");
assert(detectMediaType("Movie.2020.mkv") === "movie", "detect movie");
assert(detectMediaType("Show.S01E01.mkv") === "episode", "detect episode");
assert(detectMediaType("readme.txt") === null, "detect non-video");
const folderMovie = parseMovieFromPath("/media/movies/Inception (2010)/Inception.mkv");
assert(folderMovie?.title === "Inception" && folderMovie.year === 2010, "folder movie");
const folderSeries = parseSeriesFromPath(
"/media/series/Breaking Bad/Season 01/Breaking.Bad.S01E01.mkv"
);
assert(
folderSeries?.title === "Breaking Bad" &&
folderSeries.season === 1 &&
folderSeries.episode === 1,
"folder series"
);
console.log("filename-parser tests passed");
}
run();