Recognize S10E01 Title.mkv under Season folders, fall back to OMDb when TMDB misses, and let Android TV choose PCM vs HDMI passthrough per device.
107 lines
2.7 KiB
Go
107 lines
2.7 KiB
Go
package scanner
|
|
|
|
import "testing"
|
|
|
|
func TestParseMovie(t *testing.T) {
|
|
p := parseMovie("The.Matrix.1999.2160p.UHD.BluRay.REMUX.HEVC.TrueHD.Atmos")
|
|
if p == nil {
|
|
t.Fatal("expected parse result")
|
|
}
|
|
if p["title"] != "The Matrix" {
|
|
t.Fatalf("title=%v", p["title"])
|
|
}
|
|
if p["year"] != 1999 {
|
|
t.Fatalf("year=%v", p["year"])
|
|
}
|
|
if p["resolution"] != "2160p" {
|
|
t.Fatalf("resolution=%v", p["resolution"])
|
|
}
|
|
}
|
|
|
|
func TestParseMovieUHDOnly(t *testing.T) {
|
|
p := parseMovie("Avatar.UHD.BluRay.mkv")
|
|
if p == nil {
|
|
t.Fatal("expected parse result")
|
|
}
|
|
if p["resolution"] != "2160p" {
|
|
t.Fatalf("resolution=%v", p["resolution"])
|
|
}
|
|
}
|
|
|
|
func TestParseMovieParenFolder(t *testing.T) {
|
|
p := parseMovieFromPath(`/media/movies/Inception (2010)/Inception.mkv`)
|
|
if p == nil {
|
|
t.Fatal("expected parse result")
|
|
}
|
|
if p["title"] != "Inception" {
|
|
t.Fatalf("title=%v", p["title"])
|
|
}
|
|
if p["year"] != 2010 {
|
|
t.Fatalf("year=%v", p["year"])
|
|
}
|
|
}
|
|
|
|
func TestParseSeries(t *testing.T) {
|
|
p := parseSeries("Breaking.Bad.S03E04.1080p.BluRay")
|
|
if p == nil {
|
|
t.Fatal("expected parse result")
|
|
}
|
|
if p["title"] != "Breaking Bad" {
|
|
t.Fatalf("title=%v", p["title"])
|
|
}
|
|
if p["season"] != 3 || p["episode"] != 4 {
|
|
t.Fatalf("season/episode=%v/%v", p["season"], p["episode"])
|
|
}
|
|
}
|
|
|
|
func TestParseSeriesAlt(t *testing.T) {
|
|
p := parseSeries("Show.Name.1x02.720p")
|
|
if p == nil || p["season"] != 1 || p["episode"] != 2 {
|
|
t.Fatalf("unexpected: %#v", p)
|
|
}
|
|
}
|
|
|
|
func TestParseSeriesSeasonFolder(t *testing.T) {
|
|
p := parseSeriesFromPath(`/media/series/Breaking Bad/Season 01/Breaking.Bad.S01E01.mkv`)
|
|
if p == nil {
|
|
t.Fatal("expected parse result")
|
|
}
|
|
if p["title"] != "Breaking Bad" {
|
|
t.Fatalf("title=%v", p["title"])
|
|
}
|
|
if p["season"] != 1 || p["episode"] != 1 {
|
|
t.Fatalf("season/episode=%v/%v", p["season"], p["episode"])
|
|
}
|
|
}
|
|
|
|
func TestParseSeriesSeasonFolderEpisodeOnly(t *testing.T) {
|
|
p := parseSeriesFromPath(`/media/series/The Office/Season 2/E05 - Episode.mkv`)
|
|
if p == nil {
|
|
t.Fatal("expected parse result")
|
|
}
|
|
if p["title"] != "The Office" {
|
|
t.Fatalf("title=%v", p["title"])
|
|
}
|
|
if p["season"] != 2 || p["episode"] != 5 {
|
|
t.Fatalf("season/episode=%v/%v", p["season"], p["episode"])
|
|
}
|
|
}
|
|
|
|
func TestParseSeriesPlexLeadingSxxExx(t *testing.T) {
|
|
p := parseSeriesFromPath(`/media/series/The Blacklist/Season 10/S10E01 The Night Owl.mkv`)
|
|
if p == nil {
|
|
t.Fatal("expected parse result")
|
|
}
|
|
if p["title"] != "The Blacklist" {
|
|
t.Fatalf("title=%v", p["title"])
|
|
}
|
|
if p["season"] != 10 || p["episode"] != 1 {
|
|
t.Fatalf("season/episode=%v/%v", p["season"], p["episode"])
|
|
}
|
|
}
|
|
|
|
func TestSkipSample(t *testing.T) {
|
|
if parseMovieFromPath(`/media/movies/Foo (2020)/Foo-sample.mkv`) != nil {
|
|
t.Fatal("sample should be skipped")
|
|
}
|
|
}
|