diff options
| author | ebr11 Eric Reed spam <ebr11 Eric Reed spam@reedsplace.com> | 2012-09-19 10:22:53 -0400 |
|---|---|---|
| committer | ebr11 Eric Reed spam <ebr11 Eric Reed spam@reedsplace.com> | 2012-09-19 10:22:53 -0400 |
| commit | 6edc836ce591c466743a1d94a75cb3537c4835bd (patch) | |
| tree | cc09e1b8beacddf200f49ffcc4b1cb7a9657afe8 | |
| parent | 442081f4e20a2a0bb5a17023817754ef6045b5ee (diff) | |
I lied - re-worked metadata folder handling again. Should now really only hit once and is available for other item types
6 files changed, 26 insertions, 18 deletions
diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs index 98ad31220..f9c7fecb3 100644 --- a/MediaBrowser.Controller/Entities/TV/Season.cs +++ b/MediaBrowser.Controller/Entities/TV/Season.cs @@ -7,7 +7,13 @@ namespace MediaBrowser.Controller.Entities.TV /// <summary>
/// Store these to reduce disk access in Episode Resolver
/// </summary>
- public string[] MetadataFiles { get; set; }
+ public string[] MetadataFiles
+ {
+ get
+ {
+ return ResolveArgs.MetadataFiles ?? new string[] { };
+ }
+ }
/// <summary>
/// Determines if the metafolder contains a given file
diff --git a/MediaBrowser.Controller/IO/FileSystemHelper.cs b/MediaBrowser.Controller/IO/FileSystemHelper.cs index 2897150a8..732cf0803 100644 --- a/MediaBrowser.Controller/IO/FileSystemHelper.cs +++ b/MediaBrowser.Controller/IO/FileSystemHelper.cs @@ -2,6 +2,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.IO;
using System.Threading.Tasks;
using MediaBrowser.Controller.Resolvers;
using MediaBrowser.Controller.Library;
@@ -67,6 +68,12 @@ namespace MediaBrowser.Controller.IO args.IsBDFolder |= file.cFileName.Equals("bdmv", StringComparison.OrdinalIgnoreCase);
args.IsDVDFolder |= file.cFileName.Equals("video_ts", StringComparison.OrdinalIgnoreCase);
args.IsHDDVDFolder |= file.cFileName.Equals("hvdvd_ts", StringComparison.OrdinalIgnoreCase);
+
+ //and check to see if it is a metadata folder and collect contents now if so
+ if (IsMetadataFolder(file.cFileName))
+ {
+ args.MetadataFiles = Directory.GetFiles(Path.Combine(args.Path, "metadata"), "*", SearchOption.TopDirectoryOnly);
+ }
}
}
}
@@ -83,6 +90,11 @@ namespace MediaBrowser.Controller.IO return args;
}
+ public static bool IsMetadataFolder(string path)
+ {
+ return path.TrimEnd('\\').EndsWith("metadata", StringComparison.OrdinalIgnoreCase);
+ }
+
public static bool IsVideoFile(string path)
{
string extension = System.IO.Path.GetExtension(path).ToLower();
diff --git a/MediaBrowser.Controller/Library/ItemResolveEventArgs.cs b/MediaBrowser.Controller/Library/ItemResolveEventArgs.cs index 02cffcf0f..32b8783df 100644 --- a/MediaBrowser.Controller/Library/ItemResolveEventArgs.cs +++ b/MediaBrowser.Controller/Library/ItemResolveEventArgs.cs @@ -39,13 +39,10 @@ namespace MediaBrowser.Controller.Library public bool IsDVDFolder { get; set; }
public bool IsHDDVDFolder { get; set; }
- public bool IsMetadataFolder
- {
- get
- {
- return this.FileInfo.cFileName.Equals("metadata", StringComparison.OrdinalIgnoreCase);
- }
- }
+ /// <summary>
+ /// Store these to reduce disk access in Resolvers
+ /// </summary>
+ public string[] MetadataFiles { get; set; }
public WIN32_FIND_DATA? GetFileSystemEntry(string path)
{
diff --git a/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs b/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs index ebb1f4103..b821f8801 100644 --- a/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs +++ b/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs @@ -18,6 +18,7 @@ namespace MediaBrowser.Controller.Resolvers public static List<string> IgnoreFolders = new List<string>()
{
"trailers",
+ "metadata",
"bdmv",
"certificate",
"backup",
@@ -62,11 +63,6 @@ namespace MediaBrowser.Controller.Resolvers // Ignore any folders containing a file called .ignore
resolve = false;
}
- else if (args.IsMetadataFolder)
- {
- // I think this is redundant, but...
- resolve = false;
- }
return resolve;
}
diff --git a/MediaBrowser.Controller/Resolvers/FolderResolver.cs b/MediaBrowser.Controller/Resolvers/FolderResolver.cs index b34d8163b..408e513d4 100644 --- a/MediaBrowser.Controller/Resolvers/FolderResolver.cs +++ b/MediaBrowser.Controller/Resolvers/FolderResolver.cs @@ -14,7 +14,7 @@ namespace MediaBrowser.Controller.Resolvers protected override Folder Resolve(ItemResolveEventArgs args)
{
- if (args.IsDirectory && !args.IsMetadataFolder)
+ if (args.IsDirectory)
{
return new Folder() { PhysicalLocations = args.PhysicalLocations };
}
diff --git a/MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs b/MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs index d01e1ce31..0ad0782e0 100644 --- a/MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs +++ b/MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs @@ -10,15 +10,12 @@ namespace MediaBrowser.Controller.Resolvers.TV {
protected override Season Resolve(ItemResolveEventArgs args)
{
- if (args.Parent is Series && args.IsDirectory && !args.IsMetadataFolder)
+ if (args.Parent is Series && args.IsDirectory)
{
var season = new Season { };
season.IndexNumber = TVUtils.GetSeasonNumberFromPath(args.Path);
- // Gather these now so that the episode provider classes can utilize them instead of having to make their own file system calls
- season.MetadataFiles = args.ContainsFolder("metadata") ? Directory.GetFiles(Path.Combine(args.Path, "metadata"), "*", SearchOption.TopDirectoryOnly) : new string[] { };
-
return season;
}
|
