|
|
|
@ -1,10 +1,11 @@
|
|
|
|
|
using MediaBrowser.Controller.Entities;
|
|
|
|
|
using MediaBrowser.Common.Extensions;
|
|
|
|
|
using MediaBrowser.Controller.Entities;
|
|
|
|
|
using MediaBrowser.Controller.Entities.Movies;
|
|
|
|
|
using MediaBrowser.Controller.Entities.TV;
|
|
|
|
|
using MediaBrowser.Controller.Library;
|
|
|
|
|
using MediaBrowser.Controller.Providers;
|
|
|
|
|
using MediaBrowser.Controller.Resolvers;
|
|
|
|
|
using MediaBrowser.Model.Entities;
|
|
|
|
|
using MediaBrowser.Naming.Common;
|
|
|
|
|
using MediaBrowser.Naming.IO;
|
|
|
|
|
using MediaBrowser.Naming.Video;
|
|
|
|
|
using System;
|
|
|
|
@ -68,6 +69,11 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
|
|
|
|
|
return ResolveVideos<Video>(parent, files, directoryService, collectionType, false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (parent is Series || parent.Parents.OfType<Series>().Any())
|
|
|
|
|
{
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ResolveVideos<Movie>(parent, files, directoryService, collectionType, false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -92,6 +98,10 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
|
|
|
|
|
if ((child.Attributes & FileAttributes.Directory) == FileAttributes.Directory)
|
|
|
|
|
{
|
|
|
|
|
leftOver.Add(child);
|
|
|
|
|
}
|
|
|
|
|
else if (IsIgnored(child.Name))
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -99,7 +109,9 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var resolver = new VideoListResolver(new ExtendedNamingOptions(), new Naming.Logging.NullLogger());
|
|
|
|
|
var namingOptions = ((LibraryManager)LibraryManager).GetNamingOptions();
|
|
|
|
|
|
|
|
|
|
var resolver = new VideoListResolver(namingOptions, new Naming.Logging.NullLogger());
|
|
|
|
|
var resolverResult = resolver.Resolve(files.Select(i => new PortableFileInfo
|
|
|
|
|
{
|
|
|
|
|
FullName = i.FullName,
|
|
|
|
@ -173,6 +185,11 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
|
|
|
|
|
return FindMovie<Video>(args.Path, args.Parent, args.FileSystemChildren.ToList(), args.DirectoryService, collectionType);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (args.HasParent<Series>())
|
|
|
|
|
{
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return FindMovie<Movie>(args.Path, args.Parent, args.FileSystemChildren.ToList(), args.DirectoryService, collectionType);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -209,7 +226,12 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
|
|
|
|
|
}
|
|
|
|
|
else if (string.IsNullOrEmpty(collectionType))
|
|
|
|
|
{
|
|
|
|
|
item = ResolveVideo<Movie>(args, true);
|
|
|
|
|
if (args.HasParent<Series>())
|
|
|
|
|
{
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
item = ResolveVideo<Video>(args, false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (item != null)
|
|
|
|
@ -220,6 +242,22 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
|
|
|
|
|
return item;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private bool IsIgnored(string filename)
|
|
|
|
|
{
|
|
|
|
|
// Ignore samples
|
|
|
|
|
var sampleFilename = " " + filename.Replace(".", " ", StringComparison.OrdinalIgnoreCase)
|
|
|
|
|
.Replace("-", " ", StringComparison.OrdinalIgnoreCase)
|
|
|
|
|
.Replace("_", " ", StringComparison.OrdinalIgnoreCase)
|
|
|
|
|
.Replace("!", " ", StringComparison.OrdinalIgnoreCase);
|
|
|
|
|
|
|
|
|
|
if (sampleFilename.IndexOf(" sample ", StringComparison.OrdinalIgnoreCase) != -1)
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Sets the initial item values.
|
|
|
|
|
/// </summary>
|
|
|
|
@ -397,7 +435,8 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var resolver = new StackResolver(new ExtendedNamingOptions(), new Naming.Logging.NullLogger());
|
|
|
|
|
var namingOptions = ((LibraryManager)LibraryManager).GetNamingOptions();
|
|
|
|
|
var resolver = new StackResolver(namingOptions, new Naming.Logging.NullLogger());
|
|
|
|
|
|
|
|
|
|
var result = resolver.ResolveDirectories(folderPaths);
|
|
|
|
|
|
|
|
|
|