aboutsummaryrefslogtreecommitdiff
path: root/Emby.Naming/Video
diff options
context:
space:
mode:
authorBond-009 <bond.009@outlook.com>2019-01-30 16:57:15 +0100
committerGitHub <noreply@github.com>2019-01-30 16:57:15 +0100
commit1ea219bf3f5c0708c3afa5fa2d897ca5212b5e04 (patch)
treeb3478e7210659ef7fa1e305e814c188ffd152fea /Emby.Naming/Video
parenta709cbdc64de36a1ce989636a19344af61d9026d (diff)
parentffcf6bdd3aaad5068decf84b0400e433fdb8323c (diff)
Merge branch 'master' into culture
Diffstat (limited to 'Emby.Naming/Video')
-rw-r--r--Emby.Naming/Video/VideoListResolver.cs66
1 files changed, 9 insertions, 57 deletions
diff --git a/Emby.Naming/Video/VideoListResolver.cs b/Emby.Naming/Video/VideoListResolver.cs
index 0506d0734c..ef97b87396 100644
--- a/Emby.Naming/Video/VideoListResolver.cs
+++ b/Emby.Naming/Video/VideoListResolver.cs
@@ -175,71 +175,23 @@ namespace Emby.Naming.Video
return videos;
}
- var list = new List<VideoInfo>();
-
var folderName = Path.GetFileName(Path.GetDirectoryName(videos[0].Files[0].Path));
if (!string.IsNullOrEmpty(folderName) && folderName.Length > 1)
{
- if (videos.All(i => i.Files.Count == 1 && IsEligibleForMultiVersion(folderName, i.Files[0].Path)))
- {
- // Enforce the multi-version limit
- if (videos.Count <= 8 && HaveSameYear(videos))
- {
- var ordered = videos.OrderBy(i => i.Name).ToList();
-
- list.Add(ordered[0]);
-
- list[0].AlternateVersions = ordered.Skip(1).Select(i => i.Files[0]).ToList();
- list[0].Name = folderName;
- list[0].Extras.AddRange(ordered.Skip(1).SelectMany(i => i.Extras));
+ var ordered = videos.OrderBy(i => i.Name);
- return list;
- }
- }
+ return ordered.GroupBy(v => new {v.Name, v.Year}).Select(group => new VideoInfo
+ {
+ Name = folderName,
+ Year = group.First().Year,
+ Files = group.First().Files,
+ AlternateVersions = group.Skip(1).Select(i => i.Files[0]).ToList(),
+ Extras = group.First().Extras.Concat(group.Skip(1).SelectMany(i => i.Extras)).ToList()
+ });
}
return videos;
- //foreach (var video in videos.OrderBy(i => i.Name))
- //{
- // var match = list
- // .FirstOrDefault(i => string.Equals(i.Name, video.Name, StringComparison.OrdinalIgnoreCase));
-
- // if (match != null && video.Files.Count == 1 && match.Files.Count == 1)
- // {
- // match.AlternateVersions.Add(video.Files[0]);
- // match.Extras.AddRange(video.Extras);
- // }
- // else
- // {
- // list.Add(video);
- // }
- //}
-
- //return list;
- }
-
- private bool HaveSameYear(List<VideoInfo> videos)
- {
- return videos.Select(i => i.Year ?? -1).Distinct().Count() < 2;
- }
-
- private bool IsEligibleForMultiVersion(string folderName, string testFilename)
- {
- testFilename = Path.GetFileNameWithoutExtension(testFilename);
-
- if (string.Equals(folderName, testFilename, StringComparison.OrdinalIgnoreCase))
- {
- return true;
- }
-
- if (testFilename.StartsWith(folderName, StringComparison.OrdinalIgnoreCase))
- {
- testFilename = testFilename.Substring(folderName.Length).Trim();
- return testFilename.StartsWith("-", StringComparison.OrdinalIgnoreCase) || Regex.Replace(testFilename, @"\[([^]]*)\]", "").Trim() == string.Empty;
- }
-
- return false;
}
private List<VideoFileInfo> GetExtras(IEnumerable<VideoFileInfo> remainingFiles, List<string> baseNames)