reduce file system info memory usage

This commit is contained in:
Luke Pulverenti 2013-06-19 22:23:07 -04:00
parent 4f0872c570
commit 6c282a76b1
2 changed files with 15 additions and 13 deletions

View file

@ -53,7 +53,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio
// If list contains at least 2 audio files or at least one and no video files consider it to contain music // If list contains at least 2 audio files or at least one and no video files consider it to contain music
var foundAudio = 0; var foundAudio = 0;
foreach (var fullName in new DirectoryInfo(path).EnumerateFiles().Select(file => file.FullName)) foreach (var fullName in Directory.EnumerateFiles(path))
{ {
if (EntityResolutionHelper.IsAudioFile(fullName)) foundAudio++; if (EntityResolutionHelper.IsAudioFile(fullName)) foundAudio++;
if (foundAudio >= 2) if (foundAudio >= 2)
@ -95,14 +95,14 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio
// If list contains at least 2 audio files or at least one and no video files consider it to contain music // If list contains at least 2 audio files or at least one and no video files consider it to contain music
var foundAudio = 0; var foundAudio = 0;
foreach (var file in list) foreach (var fullName in list.Select(file => file.FullName))
{ {
if (EntityResolutionHelper.IsAudioFile(file.FullName)) foundAudio++; if (EntityResolutionHelper.IsAudioFile(fullName)) foundAudio++;
if (foundAudio >= 2) if (foundAudio >= 2)
{ {
return true; return true;
} }
if (EntityResolutionHelper.IsVideoFile(file.FullName)) return false; if (EntityResolutionHelper.IsVideoFile(fullName)) return false;
} }
// or a single audio file and no video files // or a single audio file and no video files

View file

@ -139,9 +139,11 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
// Loop through each child file/folder and see if we find a video // Loop through each child file/folder and see if we find a video
foreach (var child in fileSystemEntries) foreach (var child in fileSystemEntries)
{ {
var filename = child.Name;
if ((child.Attributes & FileAttributes.Directory) == FileAttributes.Directory) if ((child.Attributes & FileAttributes.Directory) == FileAttributes.Directory)
{ {
if (IsDvdDirectory(child.Name)) if (IsDvdDirectory(filename))
{ {
return new T return new T
{ {
@ -149,7 +151,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
VideoType = VideoType.Dvd VideoType = VideoType.Dvd
}; };
} }
if (IsBluRayDirectory(child.Name)) if (IsBluRayDirectory(filename))
{ {
return new T return new T
{ {
@ -158,7 +160,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
}; };
} }
if (EntityResolutionHelper.IsMultiPartFile(child.Name)) if (EntityResolutionHelper.IsMultiPartFile(filename))
{ {
multiDiscFolders.Add(child); multiDiscFolders.Add(child);
} }
@ -167,7 +169,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
} }
// Don't misidentify xbmc trailers as a movie // Don't misidentify xbmc trailers as a movie
if (child.Name.IndexOf(BaseItem.XbmcTrailerFileSuffix, StringComparison.OrdinalIgnoreCase) != -1) if (filename.IndexOf(BaseItem.XbmcTrailerFileSuffix, StringComparison.OrdinalIgnoreCase) != -1)
{ {
continue; continue;
} }
@ -215,9 +217,9 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
{ {
var videoType = VideoType.BluRay; var videoType = VideoType.BluRay;
folders = folders.Where(i => var folderPaths = folders.Select(i => i.FullName).Where(i =>
{ {
var subfolders = Directory.GetDirectories(i.FullName).Select(Path.GetFileName).ToList(); var subfolders = Directory.GetDirectories(i).Select(Path.GetFileName).ToList();
if (subfolders.Any(IsDvdDirectory)) if (subfolders.Any(IsDvdDirectory))
{ {
@ -232,16 +234,16 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
return false; return false;
}).OrderBy(i => i.FullName).ToList(); }).OrderBy(i => i).ToList();
if (folders.Count == 0) if (folderPaths.Count == 0)
{ {
return null; return null;
} }
return new T return new T
{ {
Path = folders[0].FullName, Path = folderPaths[0],
IsMultiPart = true, IsMultiPart = true,