2020-05-12 17:33:06 -04:00
|
|
|
using System.Linq;
|
|
|
|
using DotNet.Globbing;
|
|
|
|
|
|
|
|
namespace Emby.Server.Implementations.Library
|
|
|
|
{
|
|
|
|
/// <summary>
|
|
|
|
/// Glob patterns for files to ignore
|
|
|
|
/// </summary>
|
|
|
|
public static class IgnorePatterns
|
|
|
|
{
|
|
|
|
/// <summary>
|
|
|
|
/// Files matching these glob patterns will be ignored
|
|
|
|
/// </summary>
|
|
|
|
public static readonly string[] Patterns = new string[]
|
|
|
|
{
|
|
|
|
"**/small.jpg",
|
|
|
|
"**/albumart.jpg",
|
|
|
|
"**/*sample*",
|
|
|
|
|
|
|
|
// Directories
|
|
|
|
"**/metadata/**",
|
|
|
|
"**/ps3_update/**",
|
|
|
|
"**/ps3_vprm/**",
|
|
|
|
"**/extrafanart/**",
|
|
|
|
"**/extrathumbs/**",
|
|
|
|
"**/.actors/**",
|
|
|
|
"**/.wd_tv/**",
|
2020-05-19 21:45:48 -04:00
|
|
|
"**/lost+found/**",
|
2020-05-12 17:33:06 -04:00
|
|
|
|
|
|
|
// WMC temp recording directories that will constantly be written to
|
|
|
|
"**/TempRec/**",
|
|
|
|
"**/TempSBE/**",
|
|
|
|
|
|
|
|
// Synology
|
|
|
|
"**/eaDir/**",
|
|
|
|
"**/@eaDir/**",
|
|
|
|
"**/#recycle/**",
|
|
|
|
|
|
|
|
// Qnap
|
|
|
|
"**/@Recycle/**",
|
|
|
|
"**/.@__thumb/**",
|
|
|
|
"**/$RECYCLE.BIN/**",
|
|
|
|
"**/System Volume Information/**",
|
|
|
|
"**/.grab/**",
|
|
|
|
|
|
|
|
// Unix hidden files and directories
|
|
|
|
"**/.*/**",
|
|
|
|
|
|
|
|
// thumbs.db
|
|
|
|
"**/thumbs.db",
|
|
|
|
|
|
|
|
// bts sync files
|
|
|
|
"**/*.bts",
|
|
|
|
"**/*.sync",
|
|
|
|
};
|
|
|
|
|
|
|
|
private static readonly GlobOptions _globOptions = new GlobOptions
|
|
|
|
{
|
|
|
|
Evaluation = {
|
|
|
|
CaseInsensitive = true
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
private static readonly Glob[] _globs = Patterns.Select(p => Glob.Parse(p, _globOptions)).ToArray();
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Returns true if the supplied path should be ignored
|
|
|
|
/// </summary>
|
|
|
|
public static bool ShouldIgnore(string path)
|
|
|
|
{
|
|
|
|
return _globs.Any(g => g.IsMatch(path));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|