Browse Source

reflect that collections are "sourced" from nfo

pull/25/head
Jason Dove 6 years ago
parent
commit
a6e1aeb848
  1. 28
      ErsatzTV.Core.Tests/Metadata/TestMediaScannerTests.cs
  2. 2
      ErsatzTV.Core/Metadata/LocalFileSystem.cs
  3. 30
      ErsatzTV.Core/Metadata/TestMediaScanner.cs

28
ErsatzTV.Core.Tests/Metadata/TestMediaScannerTests.cs

@ -83,7 +83,7 @@ namespace ErsatzTV.Core.Tests.Metadata @@ -83,7 +83,7 @@ namespace ErsatzTV.Core.Tests.Metadata
itemScanningPlans.Should().BeEquivalentTo(
new ItemScanningPlan(movieFileName, ScanningAction.Statistics),
new ItemScanningPlan(nfoFileName, ScanningAction.SidecarMetadata),
new ItemScanningPlan(movieFileName, ScanningAction.Collections));
new ItemScanningPlan(nfoFileName, ScanningAction.Collections));
}
[Test]
@ -146,7 +146,7 @@ namespace ErsatzTV.Core.Tests.Metadata @@ -146,7 +146,7 @@ namespace ErsatzTV.Core.Tests.Metadata
new ItemScanningPlan(movieFileName, ScanningAction.Statistics),
new ItemScanningPlan(nfoFileName, ScanningAction.SidecarMetadata),
new ItemScanningPlan(posterFileName, ScanningAction.Poster),
new ItemScanningPlan(movieFileName, ScanningAction.Collections));
new ItemScanningPlan(nfoFileName, ScanningAction.Collections));
}
}
@ -227,7 +227,7 @@ namespace ErsatzTV.Core.Tests.Metadata @@ -227,7 +227,7 @@ namespace ErsatzTV.Core.Tests.Metadata
source.RightToSeq().Should().BeEquivalentTo(movieMediaItem);
itemScanningPlans.Should().BeEquivalentTo(
new ItemScanningPlan(nfoFileName, ScanningAction.SidecarMetadata),
new ItemScanningPlan(movieMediaItem.Path, ScanningAction.Collections));
new ItemScanningPlan(nfoFileName, ScanningAction.Collections));
}
[Test]
@ -283,7 +283,7 @@ namespace ErsatzTV.Core.Tests.Metadata @@ -283,7 +283,7 @@ namespace ErsatzTV.Core.Tests.Metadata
source.RightToSeq().Should().BeEquivalentTo(movieMediaItem);
itemScanningPlans.Should().BeEquivalentTo(
new ItemScanningPlan(nfoFileName, ScanningAction.SidecarMetadata),
new ItemScanningPlan(movieMediaItem.Path, ScanningAction.Collections));
new ItemScanningPlan(nfoFileName, ScanningAction.Collections));
}
[Test]
@ -413,7 +413,7 @@ namespace ErsatzTV.Core.Tests.Metadata @@ -413,7 +413,7 @@ namespace ErsatzTV.Core.Tests.Metadata
itemScanningPlans.Should().BeEquivalentTo(
new ItemScanningPlan(nfoFileName, ScanningAction.SidecarMetadata),
new ItemScanningPlan(posterFileName, ScanningAction.Poster),
new ItemScanningPlan(movieMediaItem.Path, ScanningAction.Collections));
new ItemScanningPlan(nfoFileName, ScanningAction.Collections));
}
}
@ -464,7 +464,7 @@ namespace ErsatzTV.Core.Tests.Metadata @@ -464,7 +464,7 @@ namespace ErsatzTV.Core.Tests.Metadata
itemScanningPlans.Should().BeEquivalentTo(
new ItemScanningPlan(episodeFileName, ScanningAction.Statistics),
new ItemScanningPlan(nfoFileName, ScanningAction.SidecarMetadata),
new ItemScanningPlan(episodeFileName, ScanningAction.Collections));
new ItemScanningPlan(nfoFileName, ScanningAction.Collections));
}
[Test]
@ -521,7 +521,7 @@ namespace ErsatzTV.Core.Tests.Metadata @@ -521,7 +521,7 @@ namespace ErsatzTV.Core.Tests.Metadata
new ItemScanningPlan(episodeFileName, ScanningAction.Statistics),
new ItemScanningPlan(nfoFileName, ScanningAction.SidecarMetadata),
new ItemScanningPlan(posterFileName, ScanningAction.Poster),
new ItemScanningPlan(episodeFileName, ScanningAction.Collections));
new ItemScanningPlan(nfoFileName, ScanningAction.Collections));
}
}
@ -600,7 +600,7 @@ namespace ErsatzTV.Core.Tests.Metadata @@ -600,7 +600,7 @@ namespace ErsatzTV.Core.Tests.Metadata
source.RightToSeq().Should().BeEquivalentTo(episodeMediaItem);
itemScanningPlans.Should().BeEquivalentTo(
new ItemScanningPlan(nfoFileName, ScanningAction.SidecarMetadata),
new ItemScanningPlan(episodeMediaItem.Path, ScanningAction.Collections));
new ItemScanningPlan(nfoFileName, ScanningAction.Collections));
}
[Test]
@ -652,7 +652,7 @@ namespace ErsatzTV.Core.Tests.Metadata @@ -652,7 +652,7 @@ namespace ErsatzTV.Core.Tests.Metadata
source.RightToSeq().Should().BeEquivalentTo(episodeMediaItem);
itemScanningPlans.Should().BeEquivalentTo(
new ItemScanningPlan(nfoFileName, ScanningAction.SidecarMetadata),
new ItemScanningPlan(episodeMediaItem.Path, ScanningAction.Collections));
new ItemScanningPlan(nfoFileName, ScanningAction.Collections));
}
[Test]
@ -772,7 +772,7 @@ namespace ErsatzTV.Core.Tests.Metadata @@ -772,7 +772,7 @@ namespace ErsatzTV.Core.Tests.Metadata
itemScanningPlans.Should().BeEquivalentTo(
new ItemScanningPlan(nfoFileName, ScanningAction.SidecarMetadata),
new ItemScanningPlan(posterFileName, ScanningAction.Poster),
new ItemScanningPlan(episodeMediaItem.Path, ScanningAction.Collections));
new ItemScanningPlan(nfoFileName, ScanningAction.Collections));
}
}
@ -786,7 +786,9 @@ namespace ErsatzTV.Core.Tests.Metadata @@ -786,7 +786,9 @@ namespace ErsatzTV.Core.Tests.Metadata
"/movies/test (2021)/Scenes/test (2021)",
"/movies/test (2021)/Shorts/test (2021)",
"/movies/test (2021)/Trailers/test (2021)",
"/movies/test (2021)/Other/test (2021)")]
"/movies/test (2021)/Other/test (2021)",
"/movies/test (2021)/Extras/test (2021)",
"/movies/test (2021)/Specials/test (2021)")]
string baseFileName,
[ValueSource(typeof(TestMediaScannerTests), nameof(VideoFileExtensions))]
string extension)
@ -827,10 +829,6 @@ namespace ErsatzTV.Core.Tests.Metadata @@ -827,10 +829,6 @@ namespace ErsatzTV.Core.Tests.Metadata
}
[Test]
// [TestCase(
// "/tv/test (2022)/season 03/test (2022) - s03e01.mkv",
// "/tv/test (2022)/season 03/test (2022) - s03e02.mkv",
// MediaType.TvShow)]
public void Movies_Should_Remove_Missing_MediaItems(
[ValueSource(typeof(TestMediaScannerTests), nameof(VideoFileExtensions))]
string extension)

2
ErsatzTV.Core/Metadata/LocalFileSystem.cs

@ -11,7 +11,7 @@ namespace ErsatzTV.Core.Metadata @@ -11,7 +11,7 @@ namespace ErsatzTV.Core.Metadata
public class LocalFileSystem : ILocalFileSystem
{
public DateTime GetLastWriteTime(string path) =>
File.GetLastWriteTimeUtc(path);
Try(File.GetLastWriteTimeUtc(path)).IfFail(() => DateTime.MinValue);
public bool IsMediaSourceAccessible(LocalMediaSource localMediaSource) =>
Directory.Exists(localMediaSource.Folder);

30
ErsatzTV.Core/Metadata/TestMediaScanner.cs

@ -33,12 +33,19 @@ namespace ErsatzTV.Core.Metadata @@ -33,12 +33,19 @@ namespace ErsatzTV.Core.Metadata
foreach (string file in newFiles)
{
results.Add(file, new ItemScanningPlan(file, ScanningAction.Statistics));
results.Add(file, new ItemScanningPlan(file, ScanningAction.Collections));
Option<string> maybeNfoFile = LocateNfoFile(mediaType, files, file);
maybeNfoFile.BiIter(
nfoFile => results.Add(file, new ItemScanningPlan(nfoFile, ScanningAction.SidecarMetadata)),
() => results.Add(file, new ItemScanningPlan(file, ScanningAction.FallbackMetadata)));
nfoFile =>
{
results.Add(file, new ItemScanningPlan(nfoFile, ScanningAction.SidecarMetadata));
results.Add(file, new ItemScanningPlan(nfoFile, ScanningAction.Collections));
},
() =>
{
results.Add(file, new ItemScanningPlan(file, ScanningAction.FallbackMetadata));
results.Add(file, new ItemScanningPlan(file, ScanningAction.Collections));
});
Option<string> maybePoster = LocatePoster(mediaType, files, file);
maybePoster.IfSome(
@ -52,7 +59,7 @@ namespace ErsatzTV.Core.Metadata @@ -52,7 +59,7 @@ namespace ErsatzTV.Core.Metadata
{
results.Add(mediaItem, new ItemScanningPlan(mediaItem.Path, ScanningAction.Statistics));
}
Option<string> maybeNfoFile = LocateNfoFile(mediaType, files, mediaItem.Path);
maybeNfoFile.IfSome(
nfoFile =>
@ -62,7 +69,7 @@ namespace ErsatzTV.Core.Metadata @@ -62,7 +69,7 @@ namespace ErsatzTV.Core.Metadata
_localFileSystem.GetLastWriteTime(nfoFile))
{
results.Add(mediaItem, new ItemScanningPlan(nfoFile, ScanningAction.SidecarMetadata));
results.Add(mediaItem, new ItemScanningPlan(mediaItem.Path, ScanningAction.Collections));
results.Add(mediaItem, new ItemScanningPlan(nfoFile, ScanningAction.Collections));
}
});
@ -78,13 +85,13 @@ namespace ErsatzTV.Core.Metadata @@ -78,13 +85,13 @@ namespace ErsatzTV.Core.Metadata
}
});
}
// missing media items
foreach (MediaItem mediaItem in mediaItems.Where(i => !files.Contains(i.Path)))
{
results.Add(mediaItem, new ItemScanningPlan(mediaItem.Path, ScanningAction.Remove));
}
return results.Summarize();
}
@ -158,12 +165,13 @@ namespace ErsatzTV.Core.Metadata @@ -158,12 +165,13 @@ namespace ErsatzTV.Core.Metadata
".m4p", ".m4v", ".avi", ".wmv", ".mov", ".mkv", ".ts");
private static readonly Seq<string> ExtraDirectories = Seq(
"behind the scenes","deleted scenes","featurettes",
"interviews","scenes","shorts","trailers","other");
"behind the scenes", "deleted scenes", "featurettes",
"interviews", "scenes", "shorts", "trailers", "other",
"extras", "specials");
private static readonly Seq<string> ExtraFiles = Seq(
"behindthescenes","deleted","featurette",
"interview","scene","short","trailer","other");
"behindthescenes", "deleted", "featurette",
"interview", "scene", "short", "trailer", "other");
// @formatter:on
}
}

Loading…
Cancel
Save