diff --git a/Date-Group/DateGroup.cs b/Date-Group/DateGroup.cs index 39af8cb..e0fbcea 100644 --- a/Date-Group/DateGroup.cs +++ b/Date-Group/DateGroup.cs @@ -422,7 +422,7 @@ public class DateGroup { try { - windowsShortcut = new() { Path = item.FilePath.DirectoryName, Description = item.FilePath.Name }; + windowsShortcut = new() { Path = item.FilePath.DirectoryFullPath, Description = item.FilePath.Name }; windowsShortcut.Save(string.Concat(fullFileName, ".lnk")); windowsShortcut.Dispose(); } diff --git a/Distance/Models/_E_Distance.cs b/Distance/Models/_E_Distance.cs index ce78a21..4028883 100644 --- a/Distance/Models/_E_Distance.cs +++ b/Distance/Models/_E_Distance.cs @@ -400,7 +400,7 @@ public partial class E_Distance : IDistance } if (!string.IsNullOrEmpty(focusDirectory)) { - if (!locationContainer.FilePath.DirectoryName.Contains(focusDirectory)) + if (!locationContainer.FilePath.DirectoryFullPath.Contains(focusDirectory)) continue; } json = Metadata.Models.Stateless.Methods.IMetadata.GetFaceEncoding(locationContainer.ExifDirectory); diff --git a/Drag-Drop-Search/DragDropSearch.cs b/Drag-Drop-Search/DragDropSearch.cs index 8bfd8d4..4afe950 100644 --- a/Drag-Drop-Search/DragDropSearch.cs +++ b/Drag-Drop-Search/DragDropSearch.cs @@ -162,8 +162,8 @@ public partial class DragDropSearch : Form { Text = item.FilePath.Name; _TextBox.Text = item.FilePath.FullName; - if (!string.IsNullOrEmpty(item.FilePath.DirectoryName)) - _ = Process.Start("explorer.exe", string.Concat("\"", item.FilePath.DirectoryName, "\"")); + if (!string.IsNullOrEmpty(item.FilePath.DirectoryFullPath)) + _ = Process.Start("explorer.exe", string.Concat("\"", item.FilePath.DirectoryFullPath, "\"")); } } } diff --git a/Duplicate-Search/DuplicateSearch.cs b/Duplicate-Search/DuplicateSearch.cs index 6272518..5fa649d 100644 --- a/Duplicate-Search/DuplicateSearch.cs +++ b/Duplicate-Search/DuplicateSearch.cs @@ -208,11 +208,11 @@ public class DuplicateSearch { foreach (MappingFromItem? mappingFromItem in keyValuePair.Value) { - if (mappingFromItem?.ResizedFileHolder.DirectoryName is null) + if (mappingFromItem?.ResizedFileHolder.DirectoryFullPath is null) continue; if (mappingFromItem.ResizedFileHolder.Exists) continue; - collection.Add(mappingFromItem.ResizedFileHolder.DirectoryName); + collection.Add(mappingFromItem.ResizedFileHolder.DirectoryFullPath); results.Add(new(mappingFromItem.FilePath, mappingFromItem.ResizedFileHolder.FullName)); } } diff --git a/FaceParts/Models/_D2_FaceParts.cs b/FaceParts/Models/_D2_FaceParts.cs index ce1d652..8784d07 100644 --- a/FaceParts/Models/_D2_FaceParts.cs +++ b/FaceParts/Models/_D2_FaceParts.cs @@ -173,12 +173,12 @@ public class D2_FaceParts } } - private string GetSeasonABDirectory(string d2ResultsFullGroupDirectory, MappingFromItem mappingFromItem, bool any) + private string GetSeasonDirectory(string d2ResultsFullGroupDirectory, MappingFromItem mappingFromItem, bool any) { string result; string minimumDateYear = mappingFromItem.MinimumDateTime.ToString("yyyy"); DateTime dateTime = mappingFromItem.DateTimeOriginal is null ? mappingFromItem.MinimumDateTime : mappingFromItem.DateTimeOriginal.Value; - (int season, string seasonName) = Shared.Models.Stateless.Methods.IProperty.GetSeasonAB(dateTime.DayOfYear); + (int season, string seasonName) = Shared.Models.Stateless.Methods.IProperty.GetSeason(dateTime.DayOfYear); string year = mappingFromItem.DateTimeOriginal is null ? $"{minimumDateYear[1..]}{minimumDateYear[0]}" : mappingFromItem.DateTimeOriginal.Value.ToString("yyyy"); string directory = Path.Combine(d2ResultsFullGroupDirectory, $"[{_PropertyConfiguration.ResultContent}]", $"{year}.{season} {seasonName}"); result = any ? Path.Combine(directory, "---") : Path.Combine(directory, "Complete"); @@ -273,7 +273,7 @@ public class D2_FaceParts } } _ = graphics.Save(); - string directory = GetSeasonABDirectory(d2ResultsFullGroupDirectory, mappingFromItem, any); + string directory = GetSeasonDirectory(d2ResultsFullGroupDirectory, mappingFromItem, any); SaveImage(mappingFromItem, directory, image, faceFiles); } diff --git a/Instance/DlibDotNet.cs b/Instance/DlibDotNet.cs index 7dd490b..9fc0e7a 100644 --- a/Instance/DlibDotNet.cs +++ b/Instance/DlibDotNet.cs @@ -536,7 +536,7 @@ public partial class DlibDotNet : IDlibDotNet, IDisposable string result; if (filePaths.Count == 0) throw new NotSupportedException(); - string? sourceDirectory = filePaths[0].DirectoryName; + string? sourceDirectory = filePaths[0].DirectoryFullPath; if (string.IsNullOrEmpty(sourceDirectory)) throw new NotSupportedException(); Uri uri; @@ -707,7 +707,7 @@ public partial class DlibDotNet : IDlibDotNet, IDisposable filePath = keyValuePair.Value[0]; if (filePath.Id is null) continue; - directoryNames = keyValuePair.Value.Select(l => l.DirectoryName.Replace('\\', '/')).ToArray(); + directoryNames = keyValuePair.Value.Select(l => l.DirectoryFullPath.Replace('\\', '/')).ToArray(); paddedId = IId.GetPaddedId(propertyConfiguration, filePath.Id.Value, filePath.HasIgnoreKeyword, filePath.HasDateTimeOriginal, index: null); identifier = new(directoryNames, filePath.HasDateTimeOriginal, filePath.Id.Value, filePath.Length, paddedId, filePath.LastWriteTicks); identifiers.Add(identifier); @@ -1190,7 +1190,7 @@ public partial class DlibDotNet : IDlibDotNet, IDisposable } if (resizedFileHolder.Exists && item.FilePath.HasIgnoreKeyword is not null && item.FilePath.HasIgnoreKeyword.Value != shouldIgnore.Value) { - if (!item.FilePath.DirectoryName.Contains("Results") || !item.FilePath.DirectoryName.Contains("Resize")) + if (!item.FilePath.DirectoryFullPath.Contains("Results") || !item.FilePath.DirectoryFullPath.Contains("Resize")) throw new NotSupportedException($"Rename File! <{item.FilePath.FileNameFirstSegment}>"); else { diff --git a/Instance/Models/_F_Random.cs b/Instance/Models/_F_Random.cs index 3e49789..b4bf61e 100644 --- a/Instance/Models/_F_Random.cs +++ b/Instance/Models/_F_Random.cs @@ -36,7 +36,7 @@ internal class F_Random bool immichAssetsCountIsZero = immichAssets.Count == 0; foreach (Mapping mapping in distinctValidImageMappingCollection) { - if (mapping.MappingFromItem.FilePath.DirectoryName is null || mapping.MappingFromPerson is null) + if (mapping.MappingFromItem.FilePath.DirectoryFullPath is null || mapping.MappingFromPerson is null) continue; if (!idToPersonKeys.TryGetValue(mapping.MappingFromItem.Id, out personKeys)) continue; @@ -104,7 +104,7 @@ internal class F_Random { if (distinctCollection.Contains(mapping.MappingFromItem.Id)) continue; - if (mapping.MappingFromItem.FilePath.DirectoryName is null) + if (mapping.MappingFromItem.FilePath.DirectoryFullPath is null) continue; if (notNineCollection is not null && notNineCollection.Contains(mapping.MappingFromItem.Id)) continue; diff --git a/Map/Models/MapLogic.cs b/Map/Models/MapLogic.cs index 79c1676..56524a6 100644 --- a/Map/Models/MapLogic.cs +++ b/Map/Models/MapLogic.cs @@ -170,9 +170,9 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic directory = Path.Combine($"{eDistanceContentDirectory}---", "Date Shortcuts", $"{dateTime.Year}.{season}-MM{dateTime.Month:00}-WW{weekOfYear}"); fileName = Path.Combine(directory, $"{mapping.MappingFromItem.FilePath.Name}.lnk"); results.Add(new(mapping.MappingFromItem.FilePath.FullName, directory, dateTime, fileName, description, MakeAllHidden: false)); - if (mapping.MappingFromItem.FilePath.DirectoryName is null) + if (mapping.MappingFromItem.FilePath.DirectoryFullPath is null) continue; - directoryName = Path.GetFileName(mapping.MappingFromItem.FilePath.DirectoryName); + directoryName = Path.GetFileName(mapping.MappingFromItem.FilePath.DirectoryFullPath); if (!string.IsNullOrEmpty(mapping.MappingFromItem.Model) && !string.IsNullOrEmpty(mapping.MappingFromItem.Model.Trim())) { // Remove-Item -LiteralPath "\\?\D:\Tmp\a\EX-Z70 " @@ -900,7 +900,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic continue; } results.Add(new(record.PersonDirectory)); - facesDirectory = locationContainer.LengthSource.DirectoryName; + facesDirectory = locationContainer.LengthSource.DirectoryFullPath; faceFileHolder = IFileHolder.Get(locationContainer.LengthSource.FullName); checkFile = Path.Combine(directory, $"{locationContainer.LengthSource.Name}"); shortcutFile = Path.Combine(record.PersonDirectory, $"{locationContainer.LengthSource.Name}.lnk"); @@ -1348,16 +1348,16 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic directoryName = Path.GetDirectoryName(face.Mapping.MappingFromItem.RelativePath); if (directoryName is null) throw new NotSupportedException(); - if (item.ResizedFileHolder?.DirectoryName is null || !item.ResizedFileHolder.Exists) + if (item.ResizedFileHolder?.DirectoryFullPath is null || !item.ResizedFileHolder.Exists) continue; - directory = Path.Combine(item.ResizedFileHolder.DirectoryName, $"{_PropertyConfiguration.ResultAllInOne}Shortcuts", _PropertyConfiguration.ResultAllInOne); + directory = Path.Combine(item.ResizedFileHolder.DirectoryFullPath, $"{_PropertyConfiguration.ResultAllInOne}Shortcuts", _PropertyConfiguration.ResultAllInOne); personDirectory = Path.Combine(directory, "No Faces"); fileName = Path.Combine(personDirectory, $"{item.ResizedFileHolder.Name}.lnk"); collection.Add(new(item.ResizedFileHolder.FullName, personDirectory, new(item.FilePath.LastWriteTicks), fileName, face.Mapping.MappingFromItem.Id.ToString(), MakeAllHidden: false)); - if (face.Mapping.MappingFromItem.ContainerDateTimes.Length > 0 && !distinct.Contains(item.ResizedFileHolder.DirectoryName)) + if (face.Mapping.MappingFromItem.ContainerDateTimes.Length > 0 && !distinct.Contains(item.ResizedFileHolder.DirectoryFullPath)) { - distinct.Add(item.ResizedFileHolder.DirectoryName); - directoriesAndDateTimes.Add(new(item.ResizedFileHolder.DirectoryName, face.Mapping.MappingFromItem.ContainerDateTimes)); + distinct.Add(item.ResizedFileHolder.DirectoryFullPath); + directoriesAndDateTimes.Add(new(item.ResizedFileHolder.DirectoryFullPath, face.Mapping.MappingFromItem.ContainerDateTimes)); } } } @@ -1366,17 +1366,17 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic directoryName = Path.GetDirectoryName(mapping.MappingFromItem.RelativePath); if (directoryName is null) throw new NotSupportedException(); - if (mapping.MappingFromItem.ResizedFileHolder.DirectoryName is null || !mapping.MappingFromItem.ResizedFileHolder.Exists) + if (mapping.MappingFromItem.ResizedFileHolder.DirectoryFullPath is null || !mapping.MappingFromItem.ResizedFileHolder.Exists) continue; dateTime = mapping.MappingFromItem.GetDateTimeOriginalThenMinimumDateTime(); if (mapping.By is null or Shared.Models.Stateless.IMapLogic.Sorting || mapping.MappingFromPerson?.ApproximateYears is null) { - if (mapping.MappingFromItem.ContainerDateTimes.Length > 0 && !distinct.Contains(mapping.MappingFromItem.ResizedFileHolder.DirectoryName)) + if (mapping.MappingFromItem.ContainerDateTimes.Length > 0 && !distinct.Contains(mapping.MappingFromItem.ResizedFileHolder.DirectoryFullPath)) { - distinct.Add(mapping.MappingFromItem.ResizedFileHolder.DirectoryName); - directoriesAndDateTimes.Add(new(mapping.MappingFromItem.ResizedFileHolder.DirectoryName, mapping.MappingFromItem.ContainerDateTimes)); + distinct.Add(mapping.MappingFromItem.ResizedFileHolder.DirectoryFullPath); + directoriesAndDateTimes.Add(new(mapping.MappingFromItem.ResizedFileHolder.DirectoryFullPath, mapping.MappingFromItem.ContainerDateTimes)); } - directory = Path.Combine(mapping.MappingFromItem.ResizedFileHolder.DirectoryName, $"{_PropertyConfiguration.ResultAllInOne}Shortcuts", _PropertyConfiguration.ResultAllInOne); + directory = Path.Combine(mapping.MappingFromItem.ResizedFileHolder.DirectoryFullPath, $"{_PropertyConfiguration.ResultAllInOne}Shortcuts", _PropertyConfiguration.ResultAllInOne); personDirectory = Path.Combine(directory, "Unknown"); fileName = Path.Combine(personDirectory, $"{mapping.MappingFromItem.ResizedFileHolder.Name}.lnk"); collection.Add(new(mapping.MappingFromItem.ResizedFileHolder.FullName, personDirectory, dateTime, fileName, mapping.MappingFromLocation?.DeterministicHashCodeKey, MakeAllHidden: false)); @@ -1394,12 +1394,12 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic if (string.IsNullOrEmpty(mapping.MappingFromPerson.DisplayDirectoryName)) throw new NotSupportedException(); personKeyFormatted = IPersonBirthday.GetFormatted(_Configuration.PersonBirthdayFormat, mapping.MappingFromPerson.PersonKey); - if (mapping.MappingFromItem.ContainerDateTimes.Length > 0 && !distinct.Contains(mapping.MappingFromItem.ResizedFileHolder.DirectoryName)) + if (mapping.MappingFromItem.ContainerDateTimes.Length > 0 && !distinct.Contains(mapping.MappingFromItem.ResizedFileHolder.DirectoryFullPath)) { - distinct.Add(mapping.MappingFromItem.ResizedFileHolder.DirectoryName); - directoriesAndDateTimes.Add(new(mapping.MappingFromItem.ResizedFileHolder.DirectoryName, mapping.MappingFromItem.ContainerDateTimes)); + distinct.Add(mapping.MappingFromItem.ResizedFileHolder.DirectoryFullPath); + directoriesAndDateTimes.Add(new(mapping.MappingFromItem.ResizedFileHolder.DirectoryFullPath, mapping.MappingFromItem.ContainerDateTimes)); } - directory = Path.Combine(mapping.MappingFromItem.ResizedFileHolder.DirectoryName, $"{_PropertyConfiguration.ResultAllInOne}Shortcuts", personKeyFormatted); + directory = Path.Combine(mapping.MappingFromItem.ResizedFileHolder.DirectoryFullPath, $"{_PropertyConfiguration.ResultAllInOne}Shortcuts", personKeyFormatted); if (!personKeyToIds.TryGetValue(mapping.MappingFromPerson.PersonKey, out ids)) personDirectory = Path.Combine(directory, mapping.MappingFromPerson.DisplayDirectoryName); else diff --git a/Map/Models/Stateless/DecadeLogic.cs b/Map/Models/Stateless/DecadeLogic.cs index 5b7f99c..c9bc74f 100644 --- a/Map/Models/Stateless/DecadeLogic.cs +++ b/Map/Models/Stateless/DecadeLogic.cs @@ -58,10 +58,10 @@ internal abstract class DecadeLogic string? personKeyFormattedDirectoryName; foreach (LocationContainer locationContainer in locationContainers) { - if (string.IsNullOrEmpty(locationContainer.FilePath.DirectoryName)) + if (string.IsNullOrEmpty(locationContainer.FilePath.DirectoryFullPath)) continue; - personNameDirectoryName = Path.GetFileName(locationContainer.FilePath.DirectoryName); - yearDirectory = Path.GetDirectoryName(locationContainer.FilePath.DirectoryName); + personNameDirectoryName = Path.GetFileName(locationContainer.FilePath.DirectoryFullPath); + yearDirectory = Path.GetDirectoryName(locationContainer.FilePath.DirectoryFullPath); if (string.IsNullOrEmpty(yearDirectory)) continue; yearDirectoryName = Path.GetFileName(yearDirectory); diff --git a/Map/Models/Stateless/MapLogic.cs b/Map/Models/Stateless/MapLogic.cs index 29495ab..5852d05 100644 --- a/Map/Models/Stateless/MapLogic.cs +++ b/Map/Models/Stateless/MapLogic.cs @@ -215,21 +215,21 @@ internal abstract class MapLogic { if (duplicate.Percent is null) continue; - _ = Process.Start("explorer.exe", string.Concat("\"", duplicate.FilePath.DirectoryName, "\"")); + _ = Process.Start("explorer.exe", string.Concat("\"", duplicate.FilePath.DirectoryFullPath, "\"")); personKeyFormatted = IPersonBirthday.GetFormatted(configuration.PersonBirthdayFormat, duplicate.PersonKey); } foreach ((long personKey, int id, FilePath filePath, float? percent) in duplicates) { if (percent is not null && percent.Value == 0) continue; - _ = Process.Start("explorer.exe", string.Concat("\"", filePath.DirectoryName, "\"")); + _ = Process.Start("explorer.exe", string.Concat("\"", filePath.DirectoryFullPath, "\"")); personKeyFormatted = IPersonBirthday.GetFormatted(configuration.PersonBirthdayFormat, personKey); } foreach ((long personKey, int id, FilePath filePath, float? percent) in duplicates) { if (percent is not null && percent.Value > 0) continue; - _ = Process.Start("explorer.exe", string.Concat("\"", filePath.DirectoryName, "\"")); + _ = Process.Start("explorer.exe", string.Concat("\"", filePath.DirectoryFullPath, "\"")); personKeyFormatted = IPersonBirthday.GetFormatted(configuration.PersonBirthdayFormat, personKey); } } @@ -955,7 +955,7 @@ internal abstract class MapLogic if (distinct.Contains(personContainer.DisplayDirectoryAllFilePaths[i].Name)) continue; distinct.Add(personContainer.DisplayDirectoryAllFilePaths[i].Name); - directoryName = Path.GetFileName(personContainer.DisplayDirectoryAllFilePaths[i].DirectoryName); + directoryName = Path.GetFileName(personContainer.DisplayDirectoryAllFilePaths[i].DirectoryFullPath); if (directoryName != personContainer.DisplayDirectoryName) continue; personBirthday = IPersonBirthday.GetPersonBirthday(personContainer.Key.Value); diff --git a/Map/Models/Stateless/RelationLogic.cs b/Map/Models/Stateless/RelationLogic.cs index ee5ae47..3adf25a 100644 --- a/Map/Models/Stateless/RelationLogic.cs +++ b/Map/Models/Stateless/RelationLogic.cs @@ -104,7 +104,7 @@ internal abstract class RelationLogic string? personKeyFormattedDirectory; foreach ((FileHolder fileHolder, _) in relationContainers) { - personNameDirectory = fileHolder.DirectoryName; + personNameDirectory = fileHolder.DirectoryFullPath; yearDirectory = Path.GetDirectoryName(personNameDirectory); personNameDirectoryName = Path.GetFileName(personNameDirectory); personKeyFormattedDirectory = Path.GetDirectoryName(yearDirectory); diff --git a/Move-By-Id/MoveById.cs b/Move-By-Id/MoveById.cs index 01c027e..bf7ad8a 100644 --- a/Move-By-Id/MoveById.cs +++ b/Move-By-Id/MoveById.cs @@ -115,7 +115,7 @@ public class MoveById progressBar.Tick(); fileHolder = Shared.Models.Stateless.Methods.IFileHolder.Get(file); filePath = FilePath.Get(_Configuration.PropertyConfiguration, fileHolder, index: null); - if (fileHolder.ExtensionLowered == ".id" || fileHolder.DirectoryName is null) + if (fileHolder.ExtensionLowered == ".id" || fileHolder.DirectoryFullPath is null) continue; if (allFiles.Contains($"{fileHolder.FullName}.id")) continue; diff --git a/Property/Models/A_Property.cs b/Property/Models/A_Property.cs index 4cc9d3f..714e9e4 100644 --- a/Property/Models/A_Property.cs +++ b/Property/Models/A_Property.cs @@ -277,9 +277,9 @@ public class A_Property bool angleBracketCollectionAny = _AngleBracketCollection.Count != 0; if (!angleBracketCollectionAny) { - if (item.FilePath.DirectoryName is null) - throw new NullReferenceException(nameof(item.FilePath.DirectoryName)); - SetAngleBracketCollection(item.FilePath.DirectoryName, !item.IsUniqueFileName); + if (item.FilePath.DirectoryFullPath is null) + throw new NullReferenceException(nameof(item.FilePath.DirectoryFullPath)); + SetAngleBracketCollection(item.FilePath.DirectoryFullPath, !item.IsUniqueFileName); } bool isIgnoreExtension = item.IsValidImageFormatExtension && _PropertyConfiguration.IgnoreExtensions.Contains(item.FilePath.ExtensionLowered); result = GetImageProperty(metadata, item, sourceDirectoryFileTuples, parseExceptions, isIgnoreExtension); diff --git a/Rename/Rename.cs b/Rename/Rename.cs index 0f7e163..9fea2ac 100644 --- a/Rename/Rename.cs +++ b/Rename/Rename.cs @@ -234,7 +234,7 @@ public class Rename if (string.IsNullOrEmpty(directory)) continue; filePath = FilePath.Get(_Configuration.PropertyConfiguration, fileHolder, index: i); - if (fileHolder.ExtensionLowered == ".paddedId" || fileHolder.ExtensionLowered == ".lsv" || fileHolder.DirectoryName is null) + if (fileHolder.ExtensionLowered == ".paddedId" || fileHolder.ExtensionLowered == ".lsv" || fileHolder.DirectoryFullPath is null) continue; if (files.Contains($"{fileHolder.FullName}.paddedId")) continue; @@ -252,10 +252,10 @@ public class Rename CommandTask result = Cli.Wrap("ffmpeg.exe") // .WithArguments(new[] { "-ss", "00:00:00", "-t", "00:00:00", "-i", files[i], "-qscale:v", "2", "-r", "0.01", $"{fileHolder.Name}-%4d.jpg" }) .WithArguments(new[] { "-i", files[i], "-vframes", "1", $"{fileHolder.Name}-%4d.jpg" }) - .WithWorkingDirectory(fileHolder.DirectoryName) + .WithWorkingDirectory(fileHolder.DirectoryFullPath) .ExecuteAsync(); result.Task.Wait(); - fastForwardMovingPictureExpertsGroupFiles = Directory.GetFiles(fileHolder.DirectoryName, $"{fileHolder.Name}-*.jpg", SearchOption.TopDirectoryOnly); + fastForwardMovingPictureExpertsGroupFiles = Directory.GetFiles(fileHolder.DirectoryFullPath, $"{fileHolder.Name}-*.jpg", SearchOption.TopDirectoryOnly); if (fastForwardMovingPictureExpertsGroupFiles.Length == 0) continue; fileHolder = Shared.Models.Stateless.Methods.IFileHolder.Get(fastForwardMovingPictureExpertsGroupFiles.First()); @@ -265,7 +265,7 @@ public class Rename isIgnoreExtension = isValidImageFormatExtension && _PropertyConfiguration.IgnoreExtensions.Contains(fileHolder.ExtensionLowered); if (isIgnoreExtension || !isValidImageFormatExtension) continue; - if (fileHolder.DirectoryName is null) + if (fileHolder.DirectoryFullPath is null) continue; } (dateTimeOriginal, dateTimes, id, message) = Property.Models.Stateless.IProperty.Get(_PropertyConfiguration, _PropertyConfiguration.PopulatePropertyId, metadata, fileHolder, isIgnoreExtension, isValidImageFormatExtension, asciiEncoding); @@ -311,7 +311,7 @@ public class Rename fileHolder = record.FileHolders.First(); if (!fileHolder.Exists) continue; - if (string.IsNullOrEmpty(fileHolder.DirectoryName)) + if (string.IsNullOrEmpty(fileHolder.DirectoryFullPath)) continue; dateTimeFromName = record.DateTimes.Length == 0 ? null : record.DateTimes.First(); if (fileHolder.ExtensionLowered == jpeg) @@ -320,30 +320,30 @@ public class Rename { if (File.Exists($"{fileHolder.FullName}.paddedId")) { - checkFile = Path.Combine(fileHolder.DirectoryName, $"{fileHolder.NameWithoutExtension}{jpg}.paddedId"); + checkFile = Path.Combine(fileHolder.DirectoryFullPath, $"{fileHolder.NameWithoutExtension}{jpg}.paddedId"); if (File.Exists(checkFile)) continue; if (distinct.Contains(checkFile)) continue; distinct.Add(checkFile); - results.Add(new(Shared.Models.Stateless.Methods.IFileHolder.Get($"{fileHolder.FullName}.paddedId"), fileHolder.DirectoryName, checkFile)); + results.Add(new(Shared.Models.Stateless.Methods.IFileHolder.Get($"{fileHolder.FullName}.paddedId"), fileHolder.DirectoryFullPath, checkFile)); } - checkFile = Path.Combine(fileHolder.DirectoryName, $"{fileHolder.NameWithoutExtension}{jpg}"); + checkFile = Path.Combine(fileHolder.DirectoryFullPath, $"{fileHolder.NameWithoutExtension}{jpg}"); if (File.Exists(checkFile)) continue; if (distinct.Contains(checkFile)) continue; distinct.Add(checkFile); - results.Add(new(fileHolder, fileHolder.DirectoryName, checkFile)); + results.Add(new(fileHolder, fileHolder.DirectoryFullPath, checkFile)); if (nefPresent) - results.Add(new(Shared.Models.Stateless.Methods.IFileHolder.Get($"{fileHolder.FullName[..^4]}.tif"), fileHolder.DirectoryName, $"{checkFile[..^4]}.tif")); + results.Add(new(Shared.Models.Stateless.Methods.IFileHolder.Get($"{fileHolder.FullName[..^4]}.tif"), fileHolder.DirectoryFullPath, $"{checkFile[..^4]}.tif")); if (nefPresent) - results.Add(new(Shared.Models.Stateless.Methods.IFileHolder.Get($"{fileHolder.FullName[..^4]}.nef"), fileHolder.DirectoryName, $"{checkFile[..^4]}.nef")); + results.Add(new(Shared.Models.Stateless.Methods.IFileHolder.Get($"{fileHolder.FullName[..^4]}.nef"), fileHolder.DirectoryFullPath, $"{checkFile[..^4]}.nef")); if (File.Exists(checkFile)) continue; File.Move(fileHolder.FullName, checkFile); fileHolder = Shared.Models.Stateless.Methods.IFileHolder.Get(checkFile); - if (fileHolder.DirectoryName is null) + if (fileHolder.DirectoryFullPath is null) continue; } } @@ -361,13 +361,13 @@ public class Rename if (timeSpan is null || timeSpan.Value.TotalMinutes > _AppSettings.MaxMinutesDelta) { if (string.IsNullOrEmpty(_AppSettings.DefaultUnknownDirectoryName)) - (isWrongYear, seasonDirectory) = (null, !_AppSettings.ForceIdName ? null : fileHolder.DirectoryName); + (isWrongYear, seasonDirectory) = (null, !_AppSettings.ForceIdName ? null : fileHolder.DirectoryFullPath); else - (isWrongYear, seasonDirectory) = (null, !_AppSettings.ForceIdName ? null : Path.Combine(fileHolder.DirectoryName, _AppSettings.DefaultUnknownDirectoryName)); + (isWrongYear, seasonDirectory) = (null, !_AppSettings.ForceIdName ? null : Path.Combine(fileHolder.DirectoryFullPath, _AppSettings.DefaultUnknownDirectoryName)); } else { - directoryName = Path.GetFileName(fileHolder.DirectoryName); + directoryName = Path.GetFileName(fileHolder.DirectoryFullPath); directoryNameSegments = directoryName.Split(' '); if (dateTimeFromName is null) isWrongYear = null; @@ -375,7 +375,7 @@ public class Rename (isWrongYear, _) = Shared.Models.Stateless.Methods.IProperty.IsWrongYear(directoryNameSegments, dateTimeFromName.Value.ToString("yyyy")); dateTime = minimumDateTime.Value.AddTicks(timeSpan.Value.Ticks); (season, seasonName) = Shared.Models.Stateless.Methods.IProperty.GetSeason(dateTime.DayOfYear); - seasonDirectory = Path.Combine(fileHolder.DirectoryName, $"{dateTime.Year}.{season} {seasonName}"); + seasonDirectory = Path.Combine(fileHolder.DirectoryFullPath, $"{dateTime.Year}.{season} {seasonName}"); } if (seasonDirectory is null || (isWrongYear is not null && isWrongYear.Value)) { @@ -386,17 +386,17 @@ public class Rename if (minimumDateTime is null) continue; checkFileExtension = fileHolder.ExtensionLowered == jpeg ? jpg : fileHolder.ExtensionLowered; - checkFile = Path.Combine(fileHolder.DirectoryName, $"{minimumDateTime.Value:yyyy-MM-dd}.{minimumDateTime.Value.Ticks}.{fileHolder.Length}{checkFileExtension}"); + checkFile = Path.Combine(fileHolder.DirectoryFullPath, $"{minimumDateTime.Value:yyyy-MM-dd}.{minimumDateTime.Value.Ticks}.{fileHolder.Length}{checkFileExtension}"); if (checkFile == fileHolder.FullName) continue; if (distinct.Contains(checkFile)) continue; distinct.Add(checkFile); - results.Add(new(fileHolder, fileHolder.DirectoryName, checkFile)); + results.Add(new(fileHolder, fileHolder.DirectoryFullPath, checkFile)); if (nefPresent) - results.Add(new(Shared.Models.Stateless.Methods.IFileHolder.Get($"{fileHolder.FullName[..^4]}.tif"), fileHolder.DirectoryName, $"{checkFile[..^4]}.tif")); + results.Add(new(Shared.Models.Stateless.Methods.IFileHolder.Get($"{fileHolder.FullName[..^4]}.tif"), fileHolder.DirectoryFullPath, $"{checkFile[..^4]}.tif")); if (nefPresent) - results.Add(new(Shared.Models.Stateless.Methods.IFileHolder.Get($"{fileHolder.FullName[..^4]}.nef"), fileHolder.DirectoryName, $"{checkFile[..^4]}.nef")); + results.Add(new(Shared.Models.Stateless.Methods.IFileHolder.Get($"{fileHolder.FullName[..^4]}.nef"), fileHolder.DirectoryFullPath, $"{checkFile[..^4]}.nef")); } else { diff --git a/Set-Created-Date/SetCreatedDate.cs b/Set-Created-Date/SetCreatedDate.cs index 2529758..0bd1d49 100644 --- a/Set-Created-Date/SetCreatedDate.cs +++ b/Set-Created-Date/SetCreatedDate.cs @@ -78,7 +78,7 @@ public class SetCreatedDate { progressBar.Tick(); fileHolder = Shared.Models.Stateless.Methods.IFileHolder.Get(file); - if (fileHolder.ExtensionLowered == ".id" || fileHolder.ExtensionLowered == ".lsv" || fileHolder.DirectoryName is null) + if (fileHolder.ExtensionLowered == ".id" || fileHolder.ExtensionLowered == ".lsv" || fileHolder.DirectoryFullPath is null) continue; if (_PropertyConfiguration.IgnoreExtensions.Contains(fileHolder.ExtensionLowered)) continue; diff --git a/Shared/Models/FileHolder.cs b/Shared/Models/FileHolder.cs index 0bd86a3..1d29487 100644 --- a/Shared/Models/FileHolder.cs +++ b/Shared/Models/FileHolder.cs @@ -4,7 +4,7 @@ using System.Text.Json.Serialization; namespace View_by_Distance.Shared.Models; public record FileHolder(DateTime? CreationTime, - string? DirectoryName, + string? DirectoryFullPath, bool Exists, string ExtensionLowered, string FullName, @@ -49,7 +49,7 @@ public record FileHolder(DateTime? CreationTime, { FileHolder result; result = new(new(filePath.CreationTicks), - filePath.DirectoryName, + filePath.DirectoryFullPath, true, filePath.ExtensionLowered, filePath.FullName, diff --git a/Shared/Models/FilePath.cs b/Shared/Models/FilePath.cs index 20c5b14..c856784 100644 --- a/Shared/Models/FilePath.cs +++ b/Shared/Models/FilePath.cs @@ -5,7 +5,7 @@ using View_by_Distance.Shared.Models.Stateless.Methods; namespace View_by_Distance.Shared.Models; public record FilePath(long CreationTicks, - string DirectoryName, + string DirectoryFullPath, string ExtensionLowered, string FileNameFirstSegment, string FullName, @@ -39,7 +39,7 @@ public record FilePath(long CreationTicks, int? sortOder; string fileNameFirstSegment = fileHolder.Name.Split('.')[0]; int sortOrderOnlyLengthIndex = propertyConfiguration.Offset.ToString().Length; - string fileDirectoryName = fileHolder.DirectoryName ?? throw new NullReferenceException(); + string fileDirectoryName = fileHolder.DirectoryFullPath ?? throw new NullReferenceException(); bool isIntelligentIdFormat = IId.NameWithoutExtensionIsIntelligentIdFormat(propertyConfiguration, fileNameFirstSegment); bool isPaddedIntelligentIdFormat = IId.NameWithoutExtensionIsPaddedIntelligentIdFormat(propertyConfiguration, sortOrderOnlyLengthIndex, fileNameFirstSegment); bool fileNameFirstSegmentIsIdFormat = !isPaddedIntelligentIdFormat && !isIntelligentIdFormat && IId.NameWithoutExtensionIsIdFormat(propertyConfiguration, fileHolder); diff --git a/Shared/Models/Stateless/Methods/Container.cs b/Shared/Models/Stateless/Methods/Container.cs index 8fd2294..4f8ad93 100644 --- a/Shared/Models/Stateless/Methods/Container.cs +++ b/Shared/Models/Stateless/Methods/Container.cs @@ -92,7 +92,7 @@ internal abstract class Container } if (filePath.HasIgnoreKeyword is not null && filePath.HasIgnoreKeyword.Value != shouldIgnore.Value) { - if (filePath.DirectoryName.Contains("Results") && filePath.DirectoryName.Contains("Resize")) + if (filePath.DirectoryFullPath.Contains("Results") && filePath.DirectoryFullPath.Contains("Resize")) File.Delete(filePath.FullName); else throw new NotSupportedException($"Rename File! <{filePath.FileNameFirstSegment}>"); @@ -144,7 +144,7 @@ internal abstract class Container { if (filePaths.Count == 0) continue; - directory = filePaths[0].DirectoryName; + directory = filePaths[0].DirectoryFullPath; if (directory is null) continue; if (!directories.Contains(directory)) @@ -159,10 +159,10 @@ internal abstract class Container List filePairs = GetFilePairs(dlibDotNet, propertyConfiguration, aPropertySingletonDirectory, filesCollectionDirectory, filePathsCollection, directorySearchFilter); foreach (FilePair filePair in filePairs) { - if (!directoryToItems.TryGetValue(filePair.FilePath.DirectoryName, out items)) + if (!directoryToItems.TryGetValue(filePair.FilePath.DirectoryFullPath, out items)) { - directoryToItems.Add(filePair.FilePath.DirectoryName, []); - if (!directoryToItems.TryGetValue(filePair.FilePath.DirectoryName, out items)) + directoryToItems.Add(filePair.FilePath.DirectoryFullPath, []); + if (!directoryToItems.TryGetValue(filePair.FilePath.DirectoryFullPath, out items)) throw new Exception(); } items.Add(filePair.Item); diff --git a/Shared/Models/Stateless/Methods/IFileHolder.cs b/Shared/Models/Stateless/Methods/IFileHolder.cs index feb539e..e655563 100644 --- a/Shared/Models/Stateless/Methods/IFileHolder.cs +++ b/Shared/Models/Stateless/Methods/IFileHolder.cs @@ -37,7 +37,7 @@ public interface IFileHolder Get(filePath); static Models.FileHolder Get(FilePath filePath) => new(new(filePath.CreationTicks), - filePath.DirectoryName, + filePath.DirectoryFullPath, true, filePath.ExtensionLowered, filePath.FullName, diff --git a/Shared/Models/Stateless/Methods/IId.cs b/Shared/Models/Stateless/Methods/IId.cs index 64668fd..985cf53 100644 --- a/Shared/Models/Stateless/Methods/IId.cs +++ b/Shared/Models/Stateless/Methods/IId.cs @@ -26,14 +26,14 @@ public interface IId string TestStatic_GetIgnoreFullPath(FilePath filePath, Models.FileHolder fileHolder) => GetIgnoreFullPath(filePath, fileHolder); static string GetIgnoreFullPath(FilePath filePath, Models.FileHolder fileHolder) => - fileHolder.DirectoryName is null ? + fileHolder.DirectoryFullPath is null ? throw new NotSupportedException() : filePath.Id > -1 ? fileHolder.NameWithoutExtension[^1] == '9' ? - Path.Combine(fileHolder.DirectoryName, $"{fileHolder.NameWithoutExtension[..^1]}8{fileHolder.ExtensionLowered}") : + Path.Combine(fileHolder.DirectoryFullPath, $"{fileHolder.NameWithoutExtension[..^1]}8{fileHolder.ExtensionLowered}") : throw new NotSupportedException("High") : fileHolder.NameWithoutExtension[^1] == '1' ? - Path.Combine(fileHolder.DirectoryName, $"{fileHolder.NameWithoutExtension[..^1]}2{fileHolder.ExtensionLowered}") : + Path.Combine(fileHolder.DirectoryFullPath, $"{fileHolder.NameWithoutExtension[..^1]}2{fileHolder.ExtensionLowered}") : throw new NotSupportedException("Low"); bool TestStatic_NameWithoutExtensionIsIntelligentIdFormat(Properties.IPropertyConfiguration propertyConfiguration, string fileNameFirstSegment) => diff --git a/Shared/Models/Stateless/Methods/IProperty.cs b/Shared/Models/Stateless/Methods/IProperty.cs index c396364..47e96ef 100644 --- a/Shared/Models/Stateless/Methods/IProperty.cs +++ b/Shared/Models/Stateless/Methods/IProperty.cs @@ -18,11 +18,6 @@ public interface IProperty static (int Season, string seasonName) GetSeason(int dayOfYear) => Property.GetSeason(dayOfYear); - (int Season, string seasonName) TestStatic_GetSeasonAB(int dayOfYear) => - GetSeasonAB(dayOfYear); - static (int Season, string seasonName) GetSeasonAB(int dayOfYear) => - Property.GetSeasonAB(dayOfYear); - string TestStatic_GetDiffRootDirectory(string diffPropertyDirectory) => GetDiffRootDirectory(diffPropertyDirectory); static string GetDiffRootDirectory(string diffPropertyDirectory) => diff --git a/Shared/Models/Stateless/Methods/Property.cs b/Shared/Models/Stateless/Methods/Property.cs index afdb516..7e7f69f 100644 --- a/Shared/Models/Stateless/Methods/Property.cs +++ b/Shared/Models/Stateless/Methods/Property.cs @@ -8,26 +8,13 @@ internal abstract class Property (int Season, string seasonName) result = dayOfYear switch { < 78 => new(0, "Winter"), - < 171 => new(1, "Spring"), - < 264 => new(2, "Summer"), - < 354 => new(3, "Fall"), - _ => new(4, "Winter") - }; - return result; - } - - internal static (int Season, string seasonName) GetSeasonAB(int dayOfYear) - { - (int Season, string seasonName) result = dayOfYear switch - { - < 78 => new(0, "WinterA"), - < 124 => new(1, "SpringA"), - < 171 => new(1, "SpringB"), - < 217 => new(2, "SummerA"), - < 264 => new(2, "SummerB"), - < 309 => new(3, "FallA"), - < 354 => new(3, "FallB"), - _ => new(4, "WinterB") + < 124 => new(1, "Spring"), + < 171 => new(2, "Spring"), + < 217 => new(3, "Summer"), + < 264 => new(4, "Summer"), + < 309 => new(5, "Fall"), + < 354 => new(6, "Fall"), + _ => new(7, "Winter") }; return result; } diff --git a/Shared/Models/Stateless/Methods/XDirectory.cs b/Shared/Models/Stateless/Methods/XDirectory.cs index 90b8901..4564d67 100644 --- a/Shared/Models/Stateless/Methods/XDirectory.cs +++ b/Shared/Models/Stateless/Methods/XDirectory.cs @@ -351,10 +351,10 @@ internal abstract partial class XDirectory { tick?.Invoke(); filePath = sortedRecords[i]; - if (filePath.Name.EndsWith("len") || filePath.ExtensionLowered == ".id" || filePath.ExtensionLowered == ".lsv" || filePath.DirectoryName is null) + if (filePath.Name.EndsWith("len") || filePath.ExtensionLowered == ".id" || filePath.ExtensionLowered == ".lsv" || filePath.DirectoryFullPath is null) continue; (_, directoryIndex) = IPath.GetDirectoryNameAndIndex(propertyConfiguration, filePath); - fileDirectoryName = Path.GetFileName(filePath.DirectoryName); + fileDirectoryName = Path.GetFileName(filePath.DirectoryFullPath); if (fileDirectoryName.Length < propertyConfiguration.ResultAllInOneSubdirectoryLength + 3 || !filePath.Name.StartsWith(fileDirectoryName)) { if (wrapped) @@ -367,10 +367,10 @@ internal abstract partial class XDirectory wrapped = true; directory = Path.Combine(directories[directoryIndex], fileDirectoryName); } - if (ifCanUseId && filePath.IsIntelligentIdFormat && filePath.Id is not null && filePath.DirectoryName is not null) + if (ifCanUseId && filePath.IsIntelligentIdFormat && filePath.Id is not null && filePath.DirectoryFullPath is not null) { paddedId = IId.GetPaddedId(propertyConfiguration, filePath.Id.Value, filePath.HasIgnoreKeyword, filePath.HasDateTimeOriginal, i); - paddedIdFile = Path.Combine(filePath.DirectoryName, $"{paddedId}{filePath.ExtensionLowered}"); + paddedIdFile = Path.Combine(filePath.DirectoryFullPath, $"{paddedId}{filePath.ExtensionLowered}"); if (!File.Exists(paddedIdFile)) { File.Move(filePath.FullName, paddedIdFile); @@ -392,10 +392,10 @@ internal abstract partial class XDirectory checkFile = Path.Combine(directory, $"{intelligentId}{filePath.ExtensionLowered}"); else { - if (filePath.DirectoryName is null) + if (filePath.DirectoryFullPath is null) continue; paddedId = IId.GetPaddedId(propertyConfiguration, filePath.Id.Value, filePath.HasIgnoreKeyword, filePath.HasDateTimeOriginal, i); - paddedIdFile = Path.Combine(filePath.DirectoryName, $"{paddedId}{filePath.ExtensionLowered}"); + paddedIdFile = Path.Combine(filePath.DirectoryFullPath, $"{paddedId}{filePath.ExtensionLowered}"); if (File.Exists(paddedIdFile)) continue; File.Move(filePath.FullName, paddedIdFile); @@ -406,7 +406,7 @@ internal abstract partial class XDirectory } if ((filePath.Id is not null && distinctIds.Contains(filePath.Id.Value)) || distinct.Contains(checkFile)) { - if (string.IsNullOrEmpty(filePath.DirectoryName)) + if (string.IsNullOrEmpty(filePath.DirectoryFullPath)) continue; if (!copyDuplicates) continue;