oops. again

This commit is contained in:
Robert McRackan 2021-09-24 16:44:49 -04:00
parent 30e2caaff5
commit c9c28c7826
12 changed files with 103 additions and 119 deletions

View file

@ -48,7 +48,7 @@ namespace FileManager
protected AudibleFileStorage(FileType fileType) : base((int)fileType, fileType.ToString())
{
extensions_noDots = Extensions.Select(ext => ext.Trim('.')).ToList();
extensions_noDots = Extensions.Select(ext => ext.ToLower().Trim('.')).ToList();
extAggr = extensions_noDots.Aggregate((a, b) => $"{a}|{b}");
BookDirectoryFiles ??= new BackgroundFileSystem(BooksDirectory, "*.*", SearchOption.AllDirectories);
}
@ -59,7 +59,8 @@ namespace FileManager
if (cachedFile != null)
return cachedFile;
string regexPattern = $@"{productId}.*?\.({extAggr})$";
var regex = new Regex($@"{productId}.*?\.({extAggr})$", RegexOptions.IgnoreCase);
string firstOrNull;
if (StorageDirectory == BooksDirectory)
@ -76,14 +77,14 @@ namespace FileManager
}
}
firstOrNull = BookDirectoryFiles.FindFile(regexPattern, RegexOptions.IgnoreCase);
firstOrNull = BookDirectoryFiles.FindFile(regex);
}
else
{
firstOrNull =
Directory
.EnumerateFiles(StorageDirectory, "*.*", SearchOption.AllDirectories)
.FirstOrDefault(s => Regex.IsMatch(s, regexPattern, RegexOptions.IgnoreCase));
.FirstOrDefault(s => regex.IsMatch(s));
}
if (firstOrNull is null)

View file

@ -3,8 +3,6 @@ using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace FileManager
@ -38,10 +36,10 @@ namespace FileManager
Init();
}
public string FindFile(string regexPattern, RegexOptions options)
public string FindFile(System.Text.RegularExpressions.Regex regex)
{
lock (fsCacheLocker)
return fsCache.FirstOrDefault(s => Regex.IsMatch(s, regexPattern, options));
return fsCache.FirstOrDefault(s => regex.IsMatch(s));
}
public void RefreshFiles()
@ -61,13 +59,15 @@ namespace FileManager
fsCache.AddRange(Directory.EnumerateFiles(RootDirectory, SearchPattern, SearchOption));
directoryChangesEvents = new BlockingCollection<FileSystemEventArgs>();
fileSystemWatcher = new FileSystemWatcher(RootDirectory);
fileSystemWatcher.Created += FileSystemWatcher_Changed;
fileSystemWatcher = new FileSystemWatcher(RootDirectory)
{
IncludeSubdirectories = true,
EnableRaisingEvents = true
};
fileSystemWatcher.Created += FileSystemWatcher_Changed;
fileSystemWatcher.Deleted += FileSystemWatcher_Changed;
fileSystemWatcher.Renamed += FileSystemWatcher_Changed;
fileSystemWatcher.Error += FileSystemWatcher_Error;
fileSystemWatcher.IncludeSubdirectories = true;
fileSystemWatcher.EnableRaisingEvents = true;
backgroundScanner = new Task(BackgroundScanner);
backgroundScanner.Start();

View file

@ -125,6 +125,13 @@ namespace FileManager
set => persistentDictionary.SetString(nameof(BadBook), value.ToString());
}
[Description("Download episodes? (eg: podcasts)")]
public bool DownloadEpisodes
{
get => persistentDictionary.GetNonString<bool>(nameof(DownloadEpisodes));
set => persistentDictionary.SetNonString(nameof(DownloadEpisodes), value);
}
#endregion
#region known directories

View file

@ -13,7 +13,7 @@ namespace FileManager
// file max length = 255. dir max len = 247
// sanitize
filename = GetAsciiTag(filename);
filename = getAsciiTag(filename);
// manage length
if (filename.Length > 50)
filename = filename.Substring(0, 50) + "[...]";
@ -35,7 +35,7 @@ namespace FileManager
return fullfilename;
}
public static string GetAsciiTag(string property)
private static string getAsciiTag(string property)
{
if (property == null)
return "";