aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
authorebr11 Eric Reed spam <ebr11 Eric Reed spam@reedsplace.com>2012-09-19 10:22:53 -0400
committerebr11 Eric Reed spam <ebr11 Eric Reed spam@reedsplace.com>2012-09-19 10:22:53 -0400
commit6edc836ce591c466743a1d94a75cb3537c4835bd (patch)
treecc09e1b8beacddf200f49ffcc4b1cb7a9657afe8 /MediaBrowser.Controller
parent442081f4e20a2a0bb5a17023817754ef6045b5ee (diff)
I lied - re-worked metadata folder handling again. Should now really only hit once and is available for other item types
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Entities/TV/Season.cs8
-rw-r--r--MediaBrowser.Controller/IO/FileSystemHelper.cs12
-rw-r--r--MediaBrowser.Controller/Library/ItemResolveEventArgs.cs11
-rw-r--r--MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs6
-rw-r--r--MediaBrowser.Controller/Resolvers/FolderResolver.cs2
-rw-r--r--MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs5
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;
}