mirror of https://github.com/ErsatzTV/ErsatzTV.git
Browse Source
* fix yml formatting * test build action * move ci workflow * fix unit tests from dotnet test command * add release workflow * try another matrix syntax * fix path to csproj * fix target framework * more release fixes * port fixes for running outside of docker * more search fixes * improve fallback metadata parsing, add tests * fix odd behavior when searching collections * more fallback metadata fixes * refresh "other" metadata on startuppull/4/head
13 changed files with 90 additions and 29 deletions
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
using ErsatzTV.Core.Domain; |
||||
using ErsatzTV.Core.Metadata; |
||||
using FluentAssertions; |
||||
using NUnit.Framework; |
||||
|
||||
namespace ErsatzTV.Core.Tests.Metadata |
||||
{ |
||||
[TestFixture] |
||||
public class FallbackMetadataProviderTests |
||||
{ |
||||
[Test] |
||||
[TestCase("Awesome Show - s01e02.mkv", "Awesome Show", 1, 2)] |
||||
[TestCase("Awesome Show - S01E02.mkv", "Awesome Show", 1, 2)] |
||||
[TestCase("Awesome Show - s1e2.mkv", "Awesome Show", 1, 2)] |
||||
[TestCase("Awesome Show - S1E2.mkv", "Awesome Show", 1, 2)] |
||||
[TestCase("Awesome Show - s01e02 - Episode Title.mkv", "Awesome Show", 1, 2)] |
||||
[TestCase("Awesome Show - S01E02 - Episode Title.mkv", "Awesome Show", 1, 2)] |
||||
[TestCase("Awesome Show - s1e2 - Episode Title.mkv", "Awesome Show", 1, 2)] |
||||
[TestCase("Awesome Show - S1E2 - Episode Title.mkv", "Awesome Show", 1, 2)] |
||||
[TestCase("Awesome Show (2021) - s01e02 - Episode Title.mkv", "Awesome Show (2021)", 1, 2)] |
||||
[TestCase("Awesome Show (2021) - S01E02 - Episode Title.mkv", "Awesome Show (2021)", 1, 2)] |
||||
[TestCase("Awesome Show (2021) - s1e2 - Episode Title.mkv", "Awesome Show (2021)", 1, 2)] |
||||
[TestCase("Awesome Show (2021) - S1E2 - Episode Title.mkv", "Awesome Show (2021)", 1, 2)] |
||||
[TestCase("Awesome Show - s01e02 - Episode Title-720p.mkv", "Awesome Show", 1, 2)] |
||||
[TestCase("Awesome Show - S01E02 - Episode Title-720p.mkv", "Awesome Show", 1, 2)] |
||||
[TestCase("Awesome Show - s1e2 - Episode Title-720p.mkv", "Awesome Show", 1, 2)] |
||||
[TestCase("Awesome Show - S1E2 - Episode Title-720p.mkv", "Awesome Show", 1, 2)] |
||||
[TestCase("Awesome Show (2021) - S01E02 - Description; More Description (1080p QUALITY codec GROUP).mkv", "Awesome Show (2021)", 1, 2)] |
||||
[TestCase("Awesome.Show.S01E02.Description.more.Description.QUAlity.codec.CODEC-GROUP.mkv", "Awesome.Show", 1, 2)] |
||||
public void GetFallbackMetadata_ShouldHandleVariousFormats(string path, string title, int season, int episode) |
||||
{ |
||||
var metadata = FallbackMetadataProvider.GetFallbackMetadata(path); |
||||
|
||||
metadata.MediaType.Should().Be(MediaType.TvShow); |
||||
metadata.Title.Should().Be(title); |
||||
metadata.SeasonNumber.Should().Be(season); |
||||
metadata.EpisodeNumber.Should().Be(episode); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
using System.IO; |
||||
using System.Text.RegularExpressions; |
||||
using ErsatzTV.Core.Domain; |
||||
|
||||
namespace ErsatzTV.Core.Metadata |
||||
{ |
||||
public static class FallbackMetadataProvider |
||||
{ |
||||
public static MediaMetadata GetFallbackMetadata(string path) |
||||
{ |
||||
string fileName = Path.GetFileName(path); |
||||
var metadata = new MediaMetadata { Title = fileName ?? path }; |
||||
|
||||
if (fileName != null) |
||||
{ |
||||
const string PATTERN = @"^(.*?)[.\s-]+[sS](\d+)[eE](\d+).*\.\w+$"; |
||||
Match match = Regex.Match(fileName, PATTERN); |
||||
if (match.Success) |
||||
{ |
||||
metadata.MediaType = MediaType.TvShow; |
||||
metadata.Title = match.Groups[1].Value; |
||||
metadata.SeasonNumber = int.Parse(match.Groups[2].Value); |
||||
metadata.EpisodeNumber = int.Parse(match.Groups[3].Value); |
||||
} |
||||
} |
||||
|
||||
return metadata; |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue