diff options
Diffstat (limited to 'MediaBrowser.Controller')
10 files changed, 78 insertions, 73 deletions
diff --git a/MediaBrowser.Controller/Events/ItemResolveEventArgs.cs b/MediaBrowser.Controller/Events/ItemResolveEventArgs.cs index ecb164455d..18df73b51d 100644 --- a/MediaBrowser.Controller/Events/ItemResolveEventArgs.cs +++ b/MediaBrowser.Controller/Events/ItemResolveEventArgs.cs @@ -1,5 +1,4 @@ using System;
-using System.Collections.Generic;
using System.IO;
using MediaBrowser.Controller.IO;
using MediaBrowser.Model.Entities;
@@ -11,55 +10,55 @@ namespace MediaBrowser.Controller.Events /// </summary>
public class ItemResolveEventArgs : PreBeginResolveEventArgs
{
- public KeyValuePair<string, WIN32_FIND_DATA>[] FileSystemChildren { get; set; }
+ public LazyFileInfo[] FileSystemChildren { get; set; }
- public KeyValuePair<string, WIN32_FIND_DATA>? GetFileSystemEntry(string path, bool? isFolder)
+ public LazyFileInfo? GetFileSystemEntry(string path, bool? isFolder = null)
{
for (int i = 0; i < FileSystemChildren.Length; i++)
{
- KeyValuePair<string, WIN32_FIND_DATA> entry = FileSystemChildren[i];
+ LazyFileInfo entry = FileSystemChildren[i];
- if (isFolder.HasValue)
+ if (entry.Path.Equals(path, StringComparison.OrdinalIgnoreCase))
{
- if (isFolder.Value && !entry.Value.IsDirectory)
+ if (isFolder.HasValue)
{
- continue;
+ if (isFolder.Value && !entry.FileInfo.IsDirectory)
+ {
+ continue;
+ }
+ else if (!isFolder.Value && entry.FileInfo.IsDirectory)
+ {
+ continue;
+ }
}
- else if (!isFolder.Value && entry.Value.IsDirectory)
- {
- continue;
- }
- }
-
- if (entry.Key.Equals(path, StringComparison.OrdinalIgnoreCase))
- {
+
return entry;
}
}
return null;
}
-
- public KeyValuePair<string, WIN32_FIND_DATA>? GetFileSystemEntryByName(string name, bool? isFolder)
+
+ public LazyFileInfo? GetFileSystemEntryByName(string name, bool? isFolder = null)
{
for (int i = 0; i < FileSystemChildren.Length; i++)
{
- KeyValuePair<string, WIN32_FIND_DATA> entry = FileSystemChildren[i];
+ LazyFileInfo entry = FileSystemChildren[i];
- if (isFolder.HasValue)
+ if (System.IO.Path.GetFileName(entry.Path).Equals(name, StringComparison.OrdinalIgnoreCase))
{
- if (isFolder.Value && !entry.Value.IsDirectory)
- {
- continue;
- }
- else if (!isFolder.Value && entry.Value.IsDirectory)
+ if (isFolder.HasValue)
{
- continue;
+ if (isFolder.Value && !entry.FileInfo.IsDirectory)
+ {
+ continue;
+ }
+ else if (!isFolder.Value && entry.FileInfo.IsDirectory)
+ {
+ continue;
+ }
}
- }
- if (System.IO.Path.GetFileName(entry.Key).Equals(name, StringComparison.OrdinalIgnoreCase))
- {
return entry;
}
}
diff --git a/MediaBrowser.Controller/FFMpeg/FFProbeResult.cs b/MediaBrowser.Controller/FFMpeg/FFProbeResult.cs index 3bb7dce131..c7ad1c3ed8 100644 --- a/MediaBrowser.Controller/FFMpeg/FFProbeResult.cs +++ b/MediaBrowser.Controller/FFMpeg/FFProbeResult.cs @@ -1,5 +1,4 @@ -using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace MediaBrowser.Controller.FFMpeg
{
diff --git a/MediaBrowser.Controller/IO/FileData.cs b/MediaBrowser.Controller/IO/FileData.cs index 843a7e8fe3..92b4a69861 100644 --- a/MediaBrowser.Controller/IO/FileData.cs +++ b/MediaBrowser.Controller/IO/FileData.cs @@ -93,4 +93,28 @@ namespace MediaBrowser.Controller.IO }
}
+ public struct LazyFileInfo
+ {
+ public string Path { get; set; }
+
+ private WIN32_FIND_DATA? _FileInfo { get; set; }
+
+ public WIN32_FIND_DATA FileInfo
+ {
+ get
+ {
+ if (_FileInfo == null)
+ {
+ _FileInfo = FileData.GetFileData(Path);
+ }
+
+ return _FileInfo.Value;
+ }
+ set
+ {
+ _FileInfo = value;
+ }
+ }
+ }
+
}
diff --git a/MediaBrowser.Controller/Library/ItemController.cs b/MediaBrowser.Controller/Library/ItemController.cs index 208be8f0d5..e99fa94a0c 100644 --- a/MediaBrowser.Controller/Library/ItemController.cs +++ b/MediaBrowser.Controller/Library/ItemController.cs @@ -84,7 +84,7 @@ namespace MediaBrowser.Controller.Library return null;
}
- KeyValuePair<string, WIN32_FIND_DATA>[] fileSystemChildren;
+ LazyFileInfo[] fileSystemChildren;
// Gather child folder and files
if (fileData.IsDirectory)
@@ -96,7 +96,7 @@ namespace MediaBrowser.Controller.Library }
else
{
- fileSystemChildren = new KeyValuePair<string, WIN32_FIND_DATA>[] { };
+ fileSystemChildren = new LazyFileInfo[] { };
}
ItemResolveEventArgs args = new ItemResolveEventArgs()
@@ -135,7 +135,7 @@ namespace MediaBrowser.Controller.Library /// <summary>
/// Finds child BaseItems for a given Folder
/// </summary>
- private async Task AttachChildren(Folder folder, KeyValuePair<string, WIN32_FIND_DATA>[] fileSystemChildren)
+ private async Task AttachChildren(Folder folder, LazyFileInfo[] fileSystemChildren)
{
int count = fileSystemChildren.Length;
@@ -145,7 +145,7 @@ namespace MediaBrowser.Controller.Library {
var child = fileSystemChildren[i];
- tasks[i] = GetItem(child.Key, folder, child.Value);
+ tasks[i] = GetItem(child.Path, folder, child.FileInfo);
}
BaseItem[] baseItemChildren = await Task<BaseItem>.WhenAll(tasks).ConfigureAwait(false);
@@ -161,23 +161,19 @@ namespace MediaBrowser.Controller.Library /// <summary>
/// Transforms shortcuts into their actual paths
/// </summary>
- private KeyValuePair<string, WIN32_FIND_DATA>[] FilterChildFileSystemEntries(KeyValuePair<string, WIN32_FIND_DATA>[] fileSystemChildren, bool flattenShortcuts)
+ private LazyFileInfo[] FilterChildFileSystemEntries(LazyFileInfo[] fileSystemChildren, bool flattenShortcuts)
{
- KeyValuePair<string, WIN32_FIND_DATA>[] returnArray = new KeyValuePair<string, WIN32_FIND_DATA>[fileSystemChildren.Length];
- List<KeyValuePair<string, WIN32_FIND_DATA>> resolvedShortcuts = new List<KeyValuePair<string, WIN32_FIND_DATA>>();
+ LazyFileInfo[] returnArray = new LazyFileInfo[fileSystemChildren.Length];
+ List<LazyFileInfo> resolvedShortcuts = new List<LazyFileInfo>();
for (int i = 0; i < fileSystemChildren.Length; i++)
{
- KeyValuePair<string, WIN32_FIND_DATA> file = fileSystemChildren[i];
+ LazyFileInfo file = fileSystemChildren[i];
- if (file.Value.IsDirectory)
- {
- returnArray[i] = file;
- }
// If it's a shortcut, resolve it
- else if (Shortcut.IsShortcut(file.Key))
+ if (Shortcut.IsShortcut(file.Path))
{
- string newPath = Shortcut.ResolveShortcut(file.Key);
+ string newPath = Shortcut.ResolveShortcut(file.Path);
WIN32_FIND_DATA newPathData = FileData.GetFileData(newPath);
// Find out if the shortcut is pointing to a directory or file
@@ -188,18 +184,18 @@ namespace MediaBrowser.Controller.Library if (flattenShortcuts)
{
returnArray[i] = file;
- KeyValuePair<string, WIN32_FIND_DATA>[] newChildren = ConvertFileSystemEntries(Directory.GetFileSystemEntries(newPath, "*", SearchOption.TopDirectoryOnly));
+ LazyFileInfo[] newChildren = ConvertFileSystemEntries(Directory.GetFileSystemEntries(newPath, "*", SearchOption.TopDirectoryOnly));
resolvedShortcuts.AddRange(FilterChildFileSystemEntries(newChildren, false));
}
else
{
- returnArray[i] = new KeyValuePair<string, WIN32_FIND_DATA>(newPath, newPathData);
+ returnArray[i] = new LazyFileInfo() { Path = newPath, FileInfo = newPathData };
}
}
else
{
- returnArray[i] = new KeyValuePair<string, WIN32_FIND_DATA>(newPath, newPathData);
+ returnArray[i] = new LazyFileInfo() { Path = newPath, FileInfo = newPathData };
}
}
else
@@ -309,15 +305,15 @@ namespace MediaBrowser.Controller.Library return item;
}
- private KeyValuePair<string, WIN32_FIND_DATA>[] ConvertFileSystemEntries(string[] files)
+ private LazyFileInfo[] ConvertFileSystemEntries(string[] files)
{
- KeyValuePair<string, WIN32_FIND_DATA>[] items = new KeyValuePair<string, WIN32_FIND_DATA>[files.Length];
+ LazyFileInfo[] items = new LazyFileInfo[files.Length];
for (int i = 0; i < files.Length; i++)
{
string file = files[i];
- items[i] = new KeyValuePair<string, WIN32_FIND_DATA>(file, FileData.GetFileData(file));
+ items[i] = new LazyFileInfo() { Path = file };
}
return items;
diff --git a/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs b/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs index b23e8908d4..cba41f780a 100644 --- a/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs +++ b/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs @@ -21,11 +21,11 @@ namespace MediaBrowser.Controller.Providers public async override Task Fetch(BaseEntity item, ItemResolveEventArgs args)
{
- var metadataFile = args.GetFileSystemEntryByName("folder.xml", false);
+ var metadataFile = args.GetFileSystemEntryByName("folder.xml");
if (metadataFile.HasValue)
{
- await Task.Run(() => { new FolderXmlParser().Fetch(item as Folder, metadataFile.Value.Key); }).ConfigureAwait(false);
+ await Task.Run(() => { new FolderXmlParser().Fetch(item as Folder, metadataFile.Value.Path); }).ConfigureAwait(false);
}
}
}
diff --git a/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs b/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs index 7785a558a4..8e5364893c 100644 --- a/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs +++ b/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs @@ -50,12 +50,7 @@ namespace MediaBrowser.Controller.Providers {
var file = args.FileSystemChildren[i];
- if (file.Value.IsDirectory)
- {
- continue;
- }
-
- string filePath = file.Key;
+ string filePath = file.Path;
string ext = Path.GetExtension(filePath);
@@ -85,12 +80,7 @@ namespace MediaBrowser.Controller.Providers {
var file = args.FileSystemChildren[i];
- if (file.Value.IsDirectory)
- {
- continue;
- }
-
- string filePath = file.Key;
+ string filePath = file.Path;
string ext = Path.GetExtension(filePath);
diff --git a/MediaBrowser.Controller/Providers/LocalTrailerProvider.cs b/MediaBrowser.Controller/Providers/LocalTrailerProvider.cs index 2476df7cd9..c023edb9af 100644 --- a/MediaBrowser.Controller/Providers/LocalTrailerProvider.cs +++ b/MediaBrowser.Controller/Providers/LocalTrailerProvider.cs @@ -28,7 +28,7 @@ namespace MediaBrowser.Controller.Providers if (trailerPath.HasValue)
{
- string[] allFiles = Directory.GetFileSystemEntries(trailerPath.Value.Key, "*", SearchOption.TopDirectoryOnly);
+ string[] allFiles = Directory.GetFileSystemEntries(trailerPath.Value.Path, "*", SearchOption.TopDirectoryOnly);
List<Video> localTrailers = new List<Video>();
diff --git a/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs b/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs index de967daa94..e91f5a6e8d 100644 --- a/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs +++ b/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs @@ -1,10 +1,8 @@ using System;
using System.IO;
-using System.Threading.Tasks;
using MediaBrowser.Controller.Events;
-using MediaBrowser.Model.Entities;
using MediaBrowser.Controller.IO;
-using System.Collections.Generic;
+using MediaBrowser.Model.Entities;
namespace MediaBrowser.Controller.Resolvers
{
@@ -88,11 +86,11 @@ namespace MediaBrowser.Controller.Resolvers // See if a different path came out of the resolver than what went in
if (!args.Path.Equals(item.Path, StringComparison.OrdinalIgnoreCase))
{
- KeyValuePair<string, WIN32_FIND_DATA>? childData = args.GetFileSystemEntry(item.Path, null);
+ LazyFileInfo? childData = args.GetFileSystemEntry(item.Path);
if (childData != null)
{
- fileData = childData.Value.Value;
+ fileData = childData.Value.FileInfo;
}
else
{
diff --git a/MediaBrowser.Controller/Resolvers/VideoResolver.cs b/MediaBrowser.Controller/Resolvers/VideoResolver.cs index 1342e8c1bc..bd676cb871 100644 --- a/MediaBrowser.Controller/Resolvers/VideoResolver.cs +++ b/MediaBrowser.Controller/Resolvers/VideoResolver.cs @@ -53,12 +53,12 @@ namespace MediaBrowser.Controller.Resolvers {
var folder = args.FileSystemChildren[i];
- if (!folder.Value.IsDirectory)
+ if (!folder.FileInfo.IsDirectory)
{
continue;
}
- item = ResolveFromFolderName(folder.Key);
+ item = ResolveFromFolderName(folder.Path);
if (item != null)
{
diff --git a/MediaBrowser.Controller/Xml/XmlExtensions.cs b/MediaBrowser.Controller/Xml/XmlExtensions.cs index 77a0c2baa6..e706baa614 100644 --- a/MediaBrowser.Controller/Xml/XmlExtensions.cs +++ b/MediaBrowser.Controller/Xml/XmlExtensions.cs @@ -1,5 +1,4 @@ using System.Globalization;
-using System.Threading.Tasks;
using System.Xml;
namespace MediaBrowser.Controller.Xml
|
