aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Library
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-11-04 18:49:06 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-11-04 18:49:06 -0500
commit6aa3313bc05fe5a26cee8944c00489c022612069 (patch)
tree81330692c8f5f7fae10e1f9ec2f2f610aefa15f2 /MediaBrowser.Server.Implementations/Library
parent60067b4c29ccdfe19102a47eb9347715e1904b22 (diff)
make sure ._ osx files are properly ignored
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library')
-rw-r--r--MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs63
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs9
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs20
3 files changed, 55 insertions, 37 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs b/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs
index 9035d6479..043996403 100644
--- a/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs
+++ b/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs
@@ -47,11 +47,14 @@ namespace MediaBrowser.Server.Implementations.Library
/// <summary>
/// Shoulds the ignore.
/// </summary>
- /// <param name="args">The args.</param>
+ /// <param name="fileInfo">The file information.</param>
+ /// <param name="parent">The parent.</param>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
- public bool ShouldIgnore(ItemResolveArgs args)
+ public bool ShouldIgnore(FileSystemMetadata fileInfo, BaseItem parent)
{
- var filename = args.FileInfo.Name;
+ var filename = fileInfo.Name;
+ var isHidden = (fileInfo.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden;
+ var path = fileInfo.FullName;
// Handle mac .DS_Store
// https://github.com/MediaBrowser/MediaBrowser/issues/427
@@ -61,21 +64,24 @@ namespace MediaBrowser.Server.Implementations.Library
}
// Ignore hidden files and folders
- if (args.IsHidden)
+ if (isHidden)
{
- var parentFolderName = Path.GetFileName(Path.GetDirectoryName(args.Path));
-
- if (string.Equals(parentFolderName, BaseItem.ThemeSongsFolderName, StringComparison.OrdinalIgnoreCase))
- {
- return false;
- }
- if (string.Equals(parentFolderName, BaseItem.ThemeVideosFolderName, StringComparison.OrdinalIgnoreCase))
+ if (parent != null)
{
- return false;
+ var parentFolderName = Path.GetFileName(Path.GetDirectoryName(path));
+
+ if (string.Equals(parentFolderName, BaseItem.ThemeSongsFolderName, StringComparison.OrdinalIgnoreCase))
+ {
+ return false;
+ }
+ if (string.Equals(parentFolderName, BaseItem.ThemeVideosFolderName, StringComparison.OrdinalIgnoreCase))
+ {
+ return false;
+ }
}
// Sometimes these are marked hidden
- if (_fileSystem.IsRootPath(args.Path))
+ if (_fileSystem.IsRootPath(path))
{
return false;
}
@@ -83,7 +89,7 @@ namespace MediaBrowser.Server.Implementations.Library
return true;
}
- if (args.IsDirectory)
+ if (fileInfo.IsDirectory)
{
// Ignore any folders in our list
if (IgnoreFolders.Contains(filename, StringComparer.OrdinalIgnoreCase))
@@ -91,26 +97,29 @@ namespace MediaBrowser.Server.Implementations.Library
return true;
}
- // Ignore trailer folders but allow it at the collection level
- if (string.Equals(filename, BaseItem.TrailerFolderName, StringComparison.OrdinalIgnoreCase) &&
- !(args.Parent is AggregateFolder) && !(args.Parent is UserRootFolder))
+ if (parent != null)
{
- return true;
- }
+ // Ignore trailer folders but allow it at the collection level
+ if (string.Equals(filename, BaseItem.TrailerFolderName, StringComparison.OrdinalIgnoreCase) &&
+ !(parent is AggregateFolder) && !(parent is UserRootFolder))
+ {
+ return true;
+ }
- if (string.Equals(filename, BaseItem.ThemeVideosFolderName, StringComparison.OrdinalIgnoreCase))
- {
- return true;
- }
+ if (string.Equals(filename, BaseItem.ThemeVideosFolderName, StringComparison.OrdinalIgnoreCase))
+ {
+ return true;
+ }
- if (string.Equals(filename, BaseItem.ThemeSongsFolderName, StringComparison.OrdinalIgnoreCase))
- {
- return true;
+ if (string.Equals(filename, BaseItem.ThemeSongsFolderName, StringComparison.OrdinalIgnoreCase))
+ {
+ return true;
+ }
}
}
else
{
- if (args.Parent != null)
+ if (parent != null)
{
// Don't resolve these into audio files
if (string.Equals(_fileSystem.GetFileNameWithoutExtension(filename), BaseItem.ThemeSongFilename) && _libraryManager.IsAudioFile(filename))
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index 3920d6171..70d28547c 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -580,7 +580,7 @@ namespace MediaBrowser.Server.Implementations.Library
};
// Return null if ignore rules deem that we should do so
- if (EntityResolutionIgnoreRules.Any(r => r.ShouldIgnore(args)))
+ if (IgnoreFile(args.FileInfo, args.Parent))
{
return null;
}
@@ -616,6 +616,11 @@ namespace MediaBrowser.Server.Implementations.Library
return ResolveItem(args);
}
+ public bool IgnoreFile(FileSystemMetadata file, BaseItem parent)
+ {
+ return EntityResolutionIgnoreRules.Any(r => r.ShouldIgnore(file, parent));
+ }
+
public IEnumerable<string> NormalizeRootPathList(IEnumerable<string> paths)
{
var list = paths.Select(_fileSystem.NormalizePath)
@@ -646,7 +651,7 @@ namespace MediaBrowser.Server.Implementations.Library
public IEnumerable<BaseItem> ResolvePaths(IEnumerable<FileSystemMetadata> files, IDirectoryService directoryService, Folder parent, string collectionType)
{
- var fileList = files.ToList();
+ var fileList = files.Where(i => !IgnoreFile(i, parent)).ToList();
if (parent != null)
{
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
index 3252db505..e84fc242f 100644
--- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
+++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
@@ -67,7 +67,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
string collectionType,
IDirectoryService directoryService)
{
- if (IsInvalid(parent, collectionType, files))
+ if (IsInvalid(parent, collectionType))
{
return null;
}
@@ -185,7 +185,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
{
var collectionType = args.GetCollectionType();
- if (IsInvalid(args.Parent, collectionType, args.FileSystemChildren))
+ if (IsInvalid(args.Parent, collectionType))
{
return null;
}
@@ -193,14 +193,18 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
// Find movies with their own folders
if (args.IsDirectory)
{
+ var files = args.FileSystemChildren
+ .Where(i => !LibraryManager.IgnoreFile(i, args.Parent))
+ .ToList();
+
if (string.Equals(collectionType, CollectionType.MusicVideos, StringComparison.OrdinalIgnoreCase))
{
- return FindMovie<MusicVideo>(args.Path, args.Parent, args.FileSystemChildren.ToList(), args.DirectoryService, collectionType);
+ return FindMovie<MusicVideo>(args.Path, args.Parent, files, args.DirectoryService, collectionType);
}
if (string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase))
{
- return FindMovie<Video>(args.Path, args.Parent, args.FileSystemChildren.ToList(), args.DirectoryService, collectionType);
+ return FindMovie<Video>(args.Path, args.Parent, files, args.DirectoryService, collectionType);
}
if (string.IsNullOrEmpty(collectionType))
@@ -208,7 +212,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
// Owned items should just use the plain video type
if (args.Parent == null)
{
- return FindMovie<Video>(args.Path, args.Parent, args.FileSystemChildren.ToList(), args.DirectoryService, collectionType);
+ return FindMovie<Video>(args.Path, args.Parent, files, args.DirectoryService, collectionType);
}
if (args.HasParent<Series>())
@@ -216,12 +220,12 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
return null;
}
- return FindMovie<Movie>(args.Path, args.Parent, args.FileSystemChildren.ToList(), args.DirectoryService, collectionType);
+ return FindMovie<Movie>(args.Path, args.Parent, files, args.DirectoryService, collectionType);
}
if (string.Equals(collectionType, CollectionType.Movies, StringComparison.OrdinalIgnoreCase))
{
- return FindMovie<Movie>(args.Path, args.Parent, args.FileSystemChildren.ToList(), args.DirectoryService, collectionType);
+ return FindMovie<Movie>(args.Path, args.Parent, files, args.DirectoryService, collectionType);
}
return null;
@@ -494,7 +498,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
};
}
- private bool IsInvalid(Folder parent, string collectionType, IEnumerable<FileSystemMetadata> files)
+ private bool IsInvalid(Folder parent, string collectionType)
{
if (parent != null)
{