Save Resized Images by Person Key Formatted
for Output Resolutions
This commit is contained in:
parent
9b8e3bdf55
commit
331d42685a
@ -130,7 +130,7 @@ public partial class DlibDotNet
|
||||
if (rootResultsDirectory is null)
|
||||
throw new Exception();
|
||||
Storage storage = new(rootDirectory, rootResultsDirectory, peopleRootDirectory);
|
||||
personContainers = Shared.Models.Stateless.Methods.IPersonContainer.GetPersonContainers(storage, configuration.PersonBirthdayFormat, _Faces.FileNameExtension);
|
||||
personContainers = Shared.Models.Stateless.Methods.IPersonContainer.GetPersonContainers(storage, configuration.PersonBirthdayFormat, configuration.JuliePhares, _Faces.FileNameExtension);
|
||||
}
|
||||
if (!isSilent && configuration.TestDistanceResults)
|
||||
{
|
||||
@ -268,8 +268,8 @@ public partial class DlibDotNet
|
||||
throw new Exception($"One or more {nameof(configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions)} are not in the ValidResolutions list!");
|
||||
if ((from l in configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions where !configuration.ValidResolutions.Contains(l) select false).Any())
|
||||
throw new Exception($"One or more {nameof(configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions)} are not in the ValidResolutions list!");
|
||||
if ((from l in configuration.SaveShortcutsForOutputResolutions where !configuration.ValidResolutions.Contains(l) select false).Any())
|
||||
throw new Exception($"One or more {nameof(configuration.SaveShortcutsForOutputResolutions)} are not in the ValidResolutions list!");
|
||||
if ((from l in configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions where !configuration.ValidResolutions.Contains(l) select false).Any())
|
||||
throw new Exception($"One or more {nameof(configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions)} are not in the ValidResolutions list!");
|
||||
if ((from l in configuration.SaveFaceLandmarkForOutputResolutions where !configuration.ValidResolutions.Contains(l) select false).Any())
|
||||
throw new Exception($"One or more {nameof(configuration.SaveFaceLandmarkForOutputResolutions)} are not in the ValidResolutions list!");
|
||||
if (configuration.DistanceFactor + configuration.LocationConfidenceFactor != 10)
|
||||
@ -943,8 +943,8 @@ public partial class DlibDotNet
|
||||
mapLogic.UpdateFromSortingContainersThenSaveContainers(dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, idToNormalizedPixelPercentageToMapping, useFiltersCounter, sortingContainers, totalNotMapped);
|
||||
if (_Configuration.MappingSaveNotMapped)
|
||||
mapLogic.SaveNotMappedTicks();
|
||||
if (_Configuration.SaveShortcutsForOutputResolutions.Contains(outputResolution))
|
||||
mapLogic.SaveShortcuts(_Configuration.JuliePhares, mappingCollection);
|
||||
if (_Configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions.Contains(outputResolution))
|
||||
mapLogic.SaveResizedImagesByPersonKeyFormatted(_Configuration.JuliePhares, mappingCollection, totalNotMapped);
|
||||
}
|
||||
|
||||
private static Container? AreAllSameEndsWith(string argZero, Container[] containers)
|
||||
|
@ -67,8 +67,8 @@ public class Configuration
|
||||
[Display(Name = "Reverse"), Required] public bool? Reverse { get; set; }
|
||||
[Display(Name = "Save Face Landmark For Output Resolutions"), Required] public string[] SaveFaceLandmarkForOutputResolutions { get; set; }
|
||||
[Display(Name = "Save Full Year Of Random Files"), Required] public bool? SaveFullYearOfRandomFiles { get; set; }
|
||||
[Display(Name = "Save Shortcuts"), Required] public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { get; set; }
|
||||
[Display(Name = "Save Resized Subfiles"), Required] public bool? SaveResizedSubfiles { get; set; }
|
||||
[Display(Name = "Save Shortcuts"), Required] public string[] SaveShortcutsForOutputResolutions { get; set; }
|
||||
[Display(Name = "Skip Search"), Required] public bool? SkipSearch { get; set; }
|
||||
[Display(Name = "Sorting Days Delta Tolerance"), Required] public int? SortingDaysDeltaTolerance { get; set; }
|
||||
[Display(Name = "SortingMaximumPerFaceShould be High"), Required] public int? SortingMaximumPerFaceShouldBeHigh { get; set; }
|
||||
@ -190,10 +190,10 @@ public class Configuration
|
||||
throw new NullReferenceException(nameof(configuration.SaveFaceLandmarkForOutputResolutions));
|
||||
if (configuration.SaveFullYearOfRandomFiles is null)
|
||||
throw new NullReferenceException(nameof(configuration.SaveFullYearOfRandomFiles));
|
||||
if (configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions is null)
|
||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveResizedSubfiles is null)
|
||||
throw new NullReferenceException(nameof(configuration.SaveResizedSubfiles));
|
||||
if (configuration.SaveShortcutsForOutputResolutions is null)
|
||||
configuration.SaveShortcutsForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SkipSearch is null)
|
||||
throw new NullReferenceException(nameof(configuration.SkipSearch));
|
||||
if (configuration.SortingDaysDeltaTolerance is null)
|
||||
@ -214,8 +214,8 @@ public class Configuration
|
||||
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveFaceLandmarkForOutputResolutions is null)
|
||||
configuration.SaveFaceLandmarkForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveShortcutsForOutputResolutions is null)
|
||||
configuration.SaveShortcutsForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions is null)
|
||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions = Array.Empty<string>();
|
||||
_ = DateTime.Now.AddDays(-configuration.SortingDaysDeltaTolerance.Value);
|
||||
result = new(configuration.PropertyConfiguration,
|
||||
configuration.CheckDFaceAndUpWriteDates.Value,
|
||||
@ -274,8 +274,8 @@ public class Configuration
|
||||
configuration.Reverse.Value,
|
||||
configuration.SaveFaceLandmarkForOutputResolutions,
|
||||
configuration.SaveFullYearOfRandomFiles.Value,
|
||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
||||
configuration.SaveResizedSubfiles.Value,
|
||||
configuration.SaveShortcutsForOutputResolutions,
|
||||
configuration.SkipSearch.Value,
|
||||
configuration.SortingDaysDeltaTolerance.Value,
|
||||
configuration.SortingMaximumPerFaceShouldBeHigh.Value,
|
||||
|
@ -65,8 +65,8 @@ public class Configuration
|
||||
public bool Reverse { init; get; }
|
||||
public string[] SaveFaceLandmarkForOutputResolutions { init; get; }
|
||||
public bool SaveFullYearOfRandomFiles { init; get; }
|
||||
public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { init; get; }
|
||||
public bool SaveResizedSubfiles { init; get; }
|
||||
public string[] SaveShortcutsForOutputResolutions { init; get; }
|
||||
public bool SkipSearch { init; get; }
|
||||
public int SortingDaysDeltaTolerance { init; get; }
|
||||
public int SortingMaximumPerFaceShouldBeHigh { init; get; }
|
||||
@ -133,8 +133,8 @@ public class Configuration
|
||||
bool reverse,
|
||||
string[] saveFaceLandmarkForOutputResolutions,
|
||||
bool saveFullYearOfRandomFiles,
|
||||
string[] saveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
||||
bool saveResizedSubfiles,
|
||||
string[] saveShortcutsForOutputResolutions,
|
||||
bool skipSearch,
|
||||
int sortingDaysDeltaTolerance,
|
||||
int sortingMaximumPerFaceShouldBeHigh,
|
||||
@ -200,8 +200,8 @@ public class Configuration
|
||||
Reverse = reverse;
|
||||
SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions;
|
||||
SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles;
|
||||
SaveResizedImagesByPersonKeyFormattedForOutputResolutions = saveResizedImagesByPersonKeyFormattedForOutputResolutions;
|
||||
SaveResizedSubfiles = saveResizedSubfiles;
|
||||
SaveShortcutsForOutputResolutions = saveShortcutsForOutputResolutions;
|
||||
SkipSearch = skipSearch;
|
||||
SortingDaysDeltaTolerance = sortingDaysDeltaTolerance;
|
||||
SortingMaximumPerFaceShouldBeHigh = sortingMaximumPerFaceShouldBeHigh;
|
||||
|
@ -93,8 +93,9 @@ public class G2_Identify : Shared.Models.Properties.IIdentify, IIdentify
|
||||
string rootResultsDirectory = Path.GetDirectoryName(Path.GetDirectoryName(peopleRootDirectory));
|
||||
if (rootResultsDirectory is null)
|
||||
throw new Exception();
|
||||
string[] verifyPersonKeyFormattedCollection = Array.Empty<string>();
|
||||
Storage storage = new(rootDirectory, rootResultsDirectory, peopleRootDirectory);
|
||||
PersonContainer[] personContainers = Shared.Models.Stateless.Methods.IPersonContainer.GetPersonContainers(storage, _Configuration.PersonBirthdayFormat, facesFileNameExtension);
|
||||
PersonContainer[] personContainers = Shared.Models.Stateless.Methods.IPersonContainer.GetPersonContainers(storage, _Configuration.PersonBirthdayFormat, verifyPersonKeyFormattedCollection, facesFileNameExtension);
|
||||
string[] peopleBirthDates = (from l in personContainers select Shared.Models.Stateless.Methods.IPersonBirthday.GetFormatted(_Configuration.PersonBirthdayFormat, l.Person.Birthday)).ToArray();
|
||||
Dictionary<string, string[]> sourceKeyValuePairs = JsonSerializer.Deserialize<Dictionary<string, string[]>>(json);
|
||||
foreach (KeyValuePair<string, string[]> keyValuePair in sourceKeyValuePairs)
|
||||
|
@ -201,7 +201,7 @@
|
||||
"176 x 176",
|
||||
"256 x 256"
|
||||
],
|
||||
"SaveShortcutsForOutputResolutions": [
|
||||
"SaveResizedImagesByPersonKeyFormattedForOutputResolutions": [
|
||||
],
|
||||
"ValidImageFormatExtensions": [
|
||||
".bmp",
|
||||
|
@ -136,7 +136,7 @@
|
||||
"176 x 176",
|
||||
"256 x 256"
|
||||
],
|
||||
"SaveShortcutsForOutputResolutions": [
|
||||
"SaveResizedImagesByPersonKeyFormattedForOutputResolutions": [
|
||||
"1920 x 1080"
|
||||
],
|
||||
"ValidImageFormatExtensions": [
|
||||
|
@ -200,7 +200,7 @@
|
||||
"176 x 176",
|
||||
"256 x 256"
|
||||
],
|
||||
"SaveShortcutsForOutputResolutions": [
|
||||
"SaveResizedImagesByPersonKeyFormattedForOutputResolutions": [
|
||||
"1920 x 1080"
|
||||
],
|
||||
"ValidImageFormatExtensions": [
|
||||
|
@ -167,9 +167,9 @@ public class MapLogic
|
||||
using ProgressBar progressBar = new(saveContainers.Count, message, options);
|
||||
foreach (SaveContainer saveContainer in saveContainers)
|
||||
{
|
||||
progressBar.Tick();
|
||||
if (string.IsNullOrEmpty(saveContainer.Directory) || string.IsNullOrEmpty(saveContainer.CheckFile) || saveContainer.FaceFileHolder is null)
|
||||
continue;
|
||||
progressBar.Tick();
|
||||
if (!saveContainer.FaceFileHolder.Exists && saveContainer.ResizedFileHolder is not null && saveContainer.ResizedFileHolder.Exists)
|
||||
{
|
||||
checkFile = saveContainer.CheckFile;
|
||||
@ -200,6 +200,16 @@ public class MapLogic
|
||||
File.Copy(sourceFile, checkFile);
|
||||
}
|
||||
foreach (SaveContainer saveContainer in saveContainers)
|
||||
{
|
||||
if (string.IsNullOrEmpty(saveContainer.Directory) || string.IsNullOrEmpty(saveContainer.CheckFile) || saveContainer.ResizedFileHolder is null || !saveContainer.ResizedFileHolder.Exists)
|
||||
continue;
|
||||
checkFile = saveContainer.CheckFile;
|
||||
sourceFile = saveContainer.ResizedFileHolder.FullName;
|
||||
if (File.Exists(checkFile))
|
||||
continue;
|
||||
File.Copy(sourceFile, checkFile);
|
||||
}
|
||||
foreach (SaveContainer saveContainer in saveContainers)
|
||||
{
|
||||
if (string.IsNullOrEmpty(saveContainer.ShortcutFile) || saveContainer.ResizedFileHolder is null || !saveContainer.ResizedFileHolder.Exists)
|
||||
continue;
|
||||
@ -598,8 +608,8 @@ public class MapLogic
|
||||
int? normalizedPixelPercentage;
|
||||
WindowsShortcut windowsShortcut;
|
||||
string by = nameof(IMapLogic.ManualCopy);
|
||||
Dictionary<int, PersonContainer[]>? keyValuePairs;
|
||||
Dictionary<int, Mapping>? normalizedPixelPercentageToMapping;
|
||||
Dictionary<int, PersonContainer[]>? normalizedPixelPercentageToPeronContainerCollection;
|
||||
string successfull = $"_ {nameof(IMapLogic.ManualCopy).Humanize(LetterCasing.Title)} Successfull";
|
||||
foreach (KeyValuePair<long, PersonContainer> keyValuePair in _PersonKeyToPersonContainer)
|
||||
{
|
||||
@ -613,11 +623,6 @@ public class MapLogic
|
||||
(id, normalizedPixelPercentage, _) = IMapping.GetReversedDeterministicHashCodeKey(_Configuration.FacesFileNameExtension, personDisplayDirectoryAllFile);
|
||||
if (id is null || normalizedPixelPercentage is null)
|
||||
continue;
|
||||
if (_IdThenNormalizedPixelPercentageToPersonContainers.TryGetValue(id.Value, out keyValuePairs))
|
||||
{
|
||||
if (keyValuePairs.ContainsKey(normalizedPixelPercentage.Value))
|
||||
continue;
|
||||
}
|
||||
fileInfo = new(personDisplayDirectoryAllFile);
|
||||
if (!fileInfo.Exists)
|
||||
continue;
|
||||
@ -641,17 +646,23 @@ public class MapLogic
|
||||
facesDirectory = Path.Combine($"{dFacesContentDirectory}{directoryName}", mapping.MappingFromItem.ImageFileHolder.NameWithoutExtension);
|
||||
faceFileName = $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}{_Configuration.FacesFileNameExtension}";
|
||||
checkFile = Path.Combine(directory, fileInfo.Name);
|
||||
if (!Directory.Exists(personDirectory))
|
||||
_ = Directory.CreateDirectory(personDirectory);
|
||||
if (!File.Exists(checkFile))
|
||||
File.Copy(personDisplayDirectoryAllFile, checkFile);
|
||||
if (!_IdThenNormalizedPixelPercentageToPersonContainers.TryGetValue(id.Value, out normalizedPixelPercentageToPeronContainerCollection) || !normalizedPixelPercentageToPeronContainerCollection.ContainsKey(normalizedPixelPercentage.Value))
|
||||
{
|
||||
if (!Directory.Exists(personDirectory))
|
||||
_ = Directory.CreateDirectory(personDirectory);
|
||||
if (!File.Exists(checkFile))
|
||||
File.Copy(personDisplayDirectoryAllFile, checkFile);
|
||||
}
|
||||
if (personDisplayDirectoryAllFile.Contains(successfull))
|
||||
continue;
|
||||
directoryName = Path.Combine(personDisplayDirectory, successfull);
|
||||
if (!Directory.Exists(directoryName))
|
||||
_ = Directory.CreateDirectory(directoryName);
|
||||
checkFile = Path.Combine(directoryName, personDisplayFileName);
|
||||
File.Move(personDisplayDirectoryAllFile, checkFile);
|
||||
if (File.Exists(checkFile))
|
||||
File.Delete(personDisplayDirectoryAllFile);
|
||||
else
|
||||
File.Move(personDisplayDirectoryAllFile, checkFile);
|
||||
faceFile = Path.Combine(facesDirectory, faceFileName);
|
||||
if (!File.Exists(faceFile))
|
||||
continue;
|
||||
@ -693,113 +704,59 @@ public class MapLogic
|
||||
SaveContainers(totalNotMapped, updated, saveContainers);
|
||||
}
|
||||
|
||||
private List<(Mapping, List<(string?, string, string?, string?, string)>)> GetCollection(Mapping[] mappingCollection)
|
||||
private (FileHolder, string, string, string, string)[] GetCollection(Mapping[] mappingCollection)
|
||||
{
|
||||
if (_Configuration is null)
|
||||
throw new NullReferenceException(nameof(_Configuration));
|
||||
List<(Mapping, List<(string?, string, string?, string?, string)>)> results = new();
|
||||
int years;
|
||||
(FileHolder, string, string, string, string)[] results;
|
||||
string checkFile;
|
||||
string directory;
|
||||
TimeSpan? timeSpan;
|
||||
string? copyFileName;
|
||||
string? relativePath;
|
||||
string? copyDirectory;
|
||||
string isWrongYearFlag;
|
||||
string shortcutFileName;
|
||||
string subDirectoryName;
|
||||
string? directoryName;
|
||||
string personDirectory;
|
||||
string personKeyFormatted;
|
||||
DateTime dateTime = DateTime.Now;
|
||||
PersonContainer[] personContainers;
|
||||
Dictionary<int, PersonContainer[]>? idToPersonContainers;
|
||||
List<(string?, string, string?, string?, string)> collection;
|
||||
List<(FileHolder ResizedFileHolder, string PersonKeyFormatted, string CheckFile, string Directory, string PersonDirectory)> collection = new();
|
||||
foreach (Mapping mapping in mappingCollection)
|
||||
{
|
||||
collection = new();
|
||||
copyFileName = null;
|
||||
copyDirectory = null;
|
||||
relativePath = Path.GetDirectoryName($"C:{mapping.MappingFromItem.RelativePath}");
|
||||
if (string.IsNullOrEmpty(relativePath) || relativePath.Length < 3)
|
||||
directoryName = Path.GetDirectoryName(mapping.MappingFromItem.RelativePath);
|
||||
if (directoryName is null)
|
||||
throw new NotSupportedException();
|
||||
if (mapping.By is null or IMapLogic.Sorting)
|
||||
continue;
|
||||
if (!_IdThenNormalizedPixelPercentageToPersonContainers.TryGetValue(mapping.MappingFromItem.Id, out idToPersonContainers))
|
||||
{
|
||||
directory = Path.Combine(_EDistanceContentTicksDirectory, $"Unnamed{relativePath[2..]}");
|
||||
shortcutFileName = Path.Combine(directory, $"{mapping.MappingFromItem.Id}.lnk");
|
||||
collection.Add(new(null, directory, copyDirectory, copyFileName, shortcutFileName));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!idToPersonContainers.ContainsKey(mapping.MappingFromLocation.NormalizedPixelPercentage))
|
||||
continue;
|
||||
isWrongYearFlag = IItem.GetWrongYearFlag(mapping.MappingFromItem.IsWrongYear);
|
||||
subDirectoryName = $"{isWrongYearFlag}{mapping.MappingFromItem.MinimumDateTime:yyyy}";
|
||||
personContainers = idToPersonContainers[mapping.MappingFromLocation.NormalizedPixelPercentage];
|
||||
foreach (PersonContainer personContainer in personContainers)
|
||||
{
|
||||
if (personContainers.Length != 1)
|
||||
break;
|
||||
if (personContainer.Key is null || personContainer.Birthdays is null || !personContainer.Birthdays.Any())
|
||||
continue;
|
||||
foreach (PersonBirthday personBirthday in personContainer.Birthdays)
|
||||
{
|
||||
timeSpan = IPersonBirthday.GetTimeSpan(mapping.MappingFromItem.MinimumDateTime, mapping.MappingFromItem.IsWrongYear, personBirthday);
|
||||
if (timeSpan.HasValue)
|
||||
{
|
||||
if (timeSpan.Value.Ticks < 0)
|
||||
subDirectoryName = "!---";
|
||||
else
|
||||
{
|
||||
(years, _) = IPersonBirthday.GetAge(dateTime, personBirthday);
|
||||
subDirectoryName = $"^{years:000}";
|
||||
}
|
||||
}
|
||||
personKeyFormatted = IPersonBirthday.GetFormatted(_Configuration.PersonBirthdayFormat, personBirthday);
|
||||
directory = Path.Combine(_EDistanceContentTicksDirectory, "Shortcuts", personKeyFormatted, subDirectoryName);
|
||||
copyDirectory = Path.Combine(_EDistanceContentTicksDirectory, "Images", personKeyFormatted, subDirectoryName);
|
||||
copyFileName = Path.Combine(copyDirectory, $"{mapping.MappingFromItem.Id}{mapping.MappingFromItem.ResizedFileHolder.ExtensionLowered}");
|
||||
shortcutFileName = Path.Combine(directory, $"{mapping.MappingFromItem.Id}.lnk");
|
||||
collection.Add(new(personKeyFormatted, directory, copyDirectory, copyFileName, shortcutFileName));
|
||||
}
|
||||
}
|
||||
if (!collection.Any())
|
||||
{
|
||||
copyFileName = null;
|
||||
copyDirectory = null;
|
||||
directory = Path.Combine(_EDistanceContentTicksDirectory, $"Not Supported{relativePath[2..]}", subDirectoryName);
|
||||
shortcutFileName = Path.Combine(directory, $"{mapping.MappingFromItem.Id}.lnk");
|
||||
collection.Add(new(null, directory, copyDirectory, copyFileName, shortcutFileName));
|
||||
}
|
||||
}
|
||||
results.Add(new(mapping, collection));
|
||||
if (mapping.MappingFromPerson is null)
|
||||
continue;
|
||||
if (string.IsNullOrEmpty(mapping.MappingFromPerson.SegmentB))
|
||||
throw new NotSupportedException();
|
||||
if (string.IsNullOrEmpty(mapping.MappingFromPerson.DisplayDirectoryName))
|
||||
throw new NotSupportedException();
|
||||
personKeyFormatted = IPersonBirthday.GetFormatted(_Configuration.PersonBirthdayFormat, mapping.MappingFromPerson.PersonBirthday);
|
||||
directory = Path.Combine(_EDistanceContentTicksDirectory, "Images", personKeyFormatted);
|
||||
personDirectory = Path.Combine(directory, mapping.MappingFromPerson.DisplayDirectoryName);
|
||||
checkFile = Path.Combine(directory, $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}");
|
||||
collection.Add(new(mapping.MappingFromItem.ResizedFileHolder, personKeyFormatted, checkFile, directory, personDirectory));
|
||||
}
|
||||
results = (from l in collection orderby l.PersonKeyFormatted descending select l).ToArray();
|
||||
return results;
|
||||
}
|
||||
|
||||
public void SaveShortcuts(string[] juliePhares, Mapping[] mappingCollection)
|
||||
public void SaveResizedImagesByPersonKeyFormatted(string[] juliePhares, Mapping[] mappingCollection, int totalNotMapped)
|
||||
{
|
||||
if (_Configuration is null)
|
||||
throw new NullReferenceException(nameof(_Configuration));
|
||||
List<(Mapping, List<(string?, string, string?, string?, string)>)> facesToCollection = GetCollection(mappingCollection);
|
||||
foreach ((Mapping mapping, List<(string? PersonKeyFormatted, string, string?, string?, string)> collection) in facesToCollection)
|
||||
List<SaveContainer> saveContainers = new();
|
||||
SaveContainer? saveContainer;
|
||||
(FileHolder, string, string, string, string)[] collection = GetCollection(mappingCollection);
|
||||
foreach ((FileHolder resizedFileHolder, string personKeyFormatted, string checkFile, string directory, string personDirectory) in collection)
|
||||
{
|
||||
if (collection.Any(l => l.PersonKeyFormatted is not null and "1501-04-10_00"))
|
||||
if (personKeyFormatted == "1501-04-10_00")
|
||||
continue;
|
||||
foreach ((string? personKeyFormatted, string directory, string? copyDirectory, string? copyFileName, string _) in collection)
|
||||
{
|
||||
if (personKeyFormatted is null)
|
||||
continue;
|
||||
if (!Directory.Exists(directory))
|
||||
_ = Directory.CreateDirectory(directory);
|
||||
if (string.IsNullOrEmpty(copyDirectory) || string.IsNullOrEmpty(copyFileName))
|
||||
continue;
|
||||
if (!juliePhares.Contains(personKeyFormatted))
|
||||
continue;
|
||||
if (!Directory.Exists(copyDirectory))
|
||||
_ = Directory.CreateDirectory(copyDirectory);
|
||||
if (!File.Exists(copyFileName))
|
||||
File.Copy(mapping.MappingFromItem.ResizedFileHolder.FullName, copyFileName);
|
||||
break;
|
||||
}
|
||||
if (!juliePhares.Contains(personKeyFormatted))
|
||||
continue;
|
||||
saveContainer = new(personDirectory);
|
||||
saveContainers.Add(saveContainer);
|
||||
saveContainer = new(resizedFileHolder, checkFile, directory);
|
||||
saveContainers.Add(saveContainer);
|
||||
}
|
||||
SaveContainers(totalNotMapped, null, saveContainers);
|
||||
}
|
||||
|
||||
}
|
@ -30,10 +30,14 @@ public class SaveContainer
|
||||
this(string.Empty, directory, null, null, null, null, string.Empty)
|
||||
{ }
|
||||
|
||||
public SaveContainer(string checkFile, string directory, FileHolder? faceFileHolder) :
|
||||
public SaveContainer(string checkFile, string directory, FileHolder faceFileHolder) :
|
||||
this(checkFile, directory, faceFileHolder, null, null, null, string.Empty)
|
||||
{ }
|
||||
|
||||
public SaveContainer(FileHolder resizedFileHolder, string checkFile, string directory) :
|
||||
this(checkFile, directory, null, null, null, resizedFileHolder, string.Empty)
|
||||
{ }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
|
||||
|
@ -5,10 +5,10 @@ public interface IPersonContainer
|
||||
|
||||
// ...
|
||||
|
||||
Models.PersonContainer[] TestStatic_GetPersonContainers(Properties.IStorage storage, string personBirthdayFormat, string facesFileNameExtension) =>
|
||||
GetPersonContainers(storage, personBirthdayFormat, facesFileNameExtension);
|
||||
static Models.PersonContainer[] GetPersonContainers(Properties.IStorage storage, string personBirthdayFormat, string facesFileNameExtension) =>
|
||||
PersonContainer.GetPersonContainers(storage, personBirthdayFormat, facesFileNameExtension);
|
||||
Models.PersonContainer[] TestStatic_GetPersonContainers(Properties.IStorage storage, string personBirthdayFormat, string[] verifyPersonKeyFormattedCollection, string facesFileNameExtension) =>
|
||||
GetPersonContainers(storage, personBirthdayFormat, verifyPersonKeyFormattedCollection, facesFileNameExtension);
|
||||
static Models.PersonContainer[] GetPersonContainers(Properties.IStorage storage, string personBirthdayFormat, string[] verifyPersonKeyFormattedCollection, string facesFileNameExtension) =>
|
||||
PersonContainer.GetPersonContainers(storage, personBirthdayFormat, verifyPersonKeyFormattedCollection, facesFileNameExtension);
|
||||
|
||||
List<(long?, string)> TestStatic_GetDisplay(string personBirthdayFormat, Models.PersonContainer personContainer) =>
|
||||
GetDisplay(personBirthdayFormat, personContainer);
|
||||
|
@ -155,7 +155,28 @@ internal abstract class PersonContainer
|
||||
return results;
|
||||
}
|
||||
|
||||
internal static Models.PersonContainer[] GetPersonContainers(Properties.IStorage storage, string personBirthdayFormat, string facesFileNameExtension)
|
||||
private static void Verify(string personBirthdayFormat, string[] verifyPersonKeyFormattedCollection, Models.PersonContainer[] results)
|
||||
{
|
||||
const int zero = 0;
|
||||
string personKeyFormatted;
|
||||
List<string> collection = new();
|
||||
Models.PersonBirthday personBirthday;
|
||||
foreach (Models.PersonContainer personContainer in results)
|
||||
{
|
||||
if (personContainer.Key is null || personContainer.Birthdays is null || !personContainer.Birthdays.Any())
|
||||
continue;
|
||||
personBirthday = personContainer.Birthdays[zero];
|
||||
personKeyFormatted = IPersonBirthday.GetFormatted(personBirthdayFormat, personBirthday);
|
||||
if (!verifyPersonKeyFormattedCollection.Contains(personKeyFormatted))
|
||||
continue;
|
||||
if (personContainer.DisplayDirectoryAllFiles.Any(l => !l.Contains('^')))
|
||||
collection.Add(personContainer.DisplayDirectoryName);
|
||||
}
|
||||
if (collection.Any())
|
||||
throw new NotSupportedException($"A person in the verify collection has a approximate birthday!{Environment.NewLine}{string.Join(Environment.NewLine, collection.ToArray())}");
|
||||
}
|
||||
|
||||
internal static Models.PersonContainer[] GetPersonContainers(Properties.IStorage storage, string personBirthdayFormat, string[] verifyPersonKeyFormattedCollection, string facesFileNameExtension)
|
||||
{
|
||||
Models.PersonContainer[] results;
|
||||
char[] chars = IAge.GetChars();
|
||||
@ -174,6 +195,7 @@ internal abstract class PersonContainer
|
||||
results = Array.Empty<Models.PersonContainer>();
|
||||
else
|
||||
results = GetPersonContainersGroups(personBirthdayFormat, facesFileNameExtension, chars, groupDirectories);
|
||||
Verify(personBirthdayFormat, verifyPersonKeyFormattedCollection, results);
|
||||
return results;
|
||||
}
|
||||
|
||||
|
@ -48,8 +48,8 @@ public class Configuration
|
||||
[Display(Name = "Reverse"), Required] public bool? Reverse { get; set; }
|
||||
[Display(Name = "Save Face Landmark For Output Resolutions"), Required] public string[] SaveFaceLandmarkForOutputResolutions { get; set; }
|
||||
[Display(Name = "Save Full Year Of Random Files"), Required] public bool? SaveFullYearOfRandomFiles { get; set; }
|
||||
[Display(Name = "Save Shortcuts"), Required] public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { get; set; }
|
||||
[Display(Name = "Save Resized Subfiles"), Required] public bool? SaveResizedSubfiles { get; set; }
|
||||
[Display(Name = "Save Shortcuts"), Required] public string[] SaveShortcutsForOutputResolutions { get; set; }
|
||||
[Display(Name = "Skip Search"), Required] public bool? SkipSearch { get; set; }
|
||||
[Display(Name = "Test Distance Results"), Required] public bool? TestDistanceResults { get; set; }
|
||||
[Display(Name = "Valid Resolutions"), Required] public string[] ValidResolutions { get; set; }
|
||||
@ -137,8 +137,8 @@ public class Configuration
|
||||
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveFaceLandmarkForOutputResolutions is null)
|
||||
configuration.SaveFaceLandmarkForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveShortcutsForOutputResolutions is null)
|
||||
configuration.SaveShortcutsForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions is null)
|
||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions = Array.Empty<string>();
|
||||
result = new(configuration.PropertyConfiguration,
|
||||
configuration.CheckDFaceAndUpWriteDates.Value,
|
||||
configuration.CheckJsonForDistanceResults.Value,
|
||||
@ -177,8 +177,8 @@ public class Configuration
|
||||
configuration.Reverse.Value,
|
||||
configuration.SaveFaceLandmarkForOutputResolutions,
|
||||
configuration.SaveFullYearOfRandomFiles.Value,
|
||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
||||
configuration.SaveResizedSubfiles.Value,
|
||||
configuration.SaveShortcutsForOutputResolutions,
|
||||
configuration.SkipSearch.Value,
|
||||
configuration.TestDistanceResults.Value,
|
||||
configuration.ValidResolutions);
|
||||
|
@ -46,8 +46,8 @@ public class Configuration
|
||||
public bool Reverse { init; get; }
|
||||
public string[] SaveFaceLandmarkForOutputResolutions { init; get; }
|
||||
public bool SaveFullYearOfRandomFiles { init; get; }
|
||||
public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { init; get; }
|
||||
public bool SaveResizedSubfiles { init; get; }
|
||||
public string[] SaveShortcutsForOutputResolutions { init; get; }
|
||||
public bool SkipSearch { init; get; }
|
||||
public bool TestDistanceResults { init; get; }
|
||||
public string[] ValidResolutions { init; get; }
|
||||
@ -91,8 +91,8 @@ public class Configuration
|
||||
bool reverse,
|
||||
string[] saveFaceLandmarkForOutputResolutions,
|
||||
bool saveFullYearOfRandomFiles,
|
||||
string[] saveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
||||
bool saveResizedSubfiles,
|
||||
string[] saveShortcutsForOutputResolutions,
|
||||
bool skipSearch,
|
||||
bool testDistanceResults,
|
||||
string[] validResolutions)
|
||||
@ -135,8 +135,8 @@ public class Configuration
|
||||
Reverse = reverse;
|
||||
SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions;
|
||||
SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles;
|
||||
SaveResizedImagesByPersonKeyFormattedForOutputResolutions = saveResizedImagesByPersonKeyFormattedForOutputResolutions;
|
||||
SaveResizedSubfiles = saveResizedSubfiles;
|
||||
SaveShortcutsForOutputResolutions = saveShortcutsForOutputResolutions;
|
||||
SkipSearch = skipSearch;
|
||||
TestDistanceResults = testDistanceResults;
|
||||
ValidResolutions = validResolutions;
|
||||
|
@ -67,8 +67,8 @@ public class Configuration
|
||||
[Display(Name = "Reverse"), Required] public bool? Reverse { get; set; }
|
||||
[Display(Name = "Save Face Landmark For Output Resolutions"), Required] public string[] SaveFaceLandmarkForOutputResolutions { get; set; }
|
||||
[Display(Name = "Save Full Year Of Random Files"), Required] public bool? SaveFullYearOfRandomFiles { get; set; }
|
||||
[Display(Name = "Save Shortcuts"), Required] public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { get; set; }
|
||||
[Display(Name = "Save Resized Subfiles"), Required] public bool? SaveResizedSubfiles { get; set; }
|
||||
[Display(Name = "Save Shortcuts"), Required] public string[] SaveShortcutsForOutputResolutions { get; set; }
|
||||
[Display(Name = "Skip Search"), Required] public bool? SkipSearch { get; set; }
|
||||
[Display(Name = "Sorting Days Delta Tolerance"), Required] public int? SortingDaysDeltaTolerance { get; set; }
|
||||
[Display(Name = "SortingMaximumPerFaceShould be High"), Required] public int? SortingMaximumPerFaceShouldBeHigh { get; set; }
|
||||
@ -190,10 +190,10 @@ public class Configuration
|
||||
throw new NullReferenceException(nameof(configuration.SaveFaceLandmarkForOutputResolutions));
|
||||
if (configuration.SaveFullYearOfRandomFiles is null)
|
||||
throw new NullReferenceException(nameof(configuration.SaveFullYearOfRandomFiles));
|
||||
if (configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions is null)
|
||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveResizedSubfiles is null)
|
||||
throw new NullReferenceException(nameof(configuration.SaveResizedSubfiles));
|
||||
if (configuration.SaveShortcutsForOutputResolutions is null)
|
||||
configuration.SaveShortcutsForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SkipSearch is null)
|
||||
throw new NullReferenceException(nameof(configuration.SkipSearch));
|
||||
if (configuration.SortingDaysDeltaTolerance is null)
|
||||
@ -214,8 +214,8 @@ public class Configuration
|
||||
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveFaceLandmarkForOutputResolutions is null)
|
||||
configuration.SaveFaceLandmarkForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveShortcutsForOutputResolutions is null)
|
||||
configuration.SaveShortcutsForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions is null)
|
||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions = Array.Empty<string>();
|
||||
_ = DateTime.Now.AddDays(-configuration.SortingDaysDeltaTolerance.Value);
|
||||
result = new(configuration.PropertyConfiguration,
|
||||
configuration.CheckDFaceAndUpWriteDates.Value,
|
||||
@ -274,8 +274,8 @@ public class Configuration
|
||||
configuration.Reverse.Value,
|
||||
configuration.SaveFaceLandmarkForOutputResolutions,
|
||||
configuration.SaveFullYearOfRandomFiles.Value,
|
||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
||||
configuration.SaveResizedSubfiles.Value,
|
||||
configuration.SaveShortcutsForOutputResolutions,
|
||||
configuration.SkipSearch.Value,
|
||||
configuration.SortingDaysDeltaTolerance.Value,
|
||||
configuration.SortingMaximumPerFaceShouldBeHigh.Value,
|
||||
|
@ -65,8 +65,8 @@ public class Configuration
|
||||
public bool Reverse { init; get; }
|
||||
public string[] SaveFaceLandmarkForOutputResolutions { init; get; }
|
||||
public bool SaveFullYearOfRandomFiles { init; get; }
|
||||
public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { init; get; }
|
||||
public bool SaveResizedSubfiles { init; get; }
|
||||
public string[] SaveShortcutsForOutputResolutions { init; get; }
|
||||
public bool SkipSearch { init; get; }
|
||||
public int SortingDaysDeltaTolerance { init; get; }
|
||||
public int SortingMaximumPerFaceShouldBeHigh { init; get; }
|
||||
@ -133,8 +133,8 @@ public class Configuration
|
||||
bool reverse,
|
||||
string[] saveFaceLandmarkForOutputResolutions,
|
||||
bool saveFullYearOfRandomFiles,
|
||||
string[] saveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
||||
bool saveResizedSubfiles,
|
||||
string[] saveShortcutsForOutputResolutions,
|
||||
bool skipSearch,
|
||||
int sortingDaysDeltaTolerance,
|
||||
int sortingMaximumPerFaceShouldBeHigh,
|
||||
@ -200,8 +200,8 @@ public class Configuration
|
||||
Reverse = reverse;
|
||||
SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions;
|
||||
SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles;
|
||||
SaveResizedImagesByPersonKeyFormattedForOutputResolutions = saveResizedImagesByPersonKeyFormattedForOutputResolutions;
|
||||
SaveResizedSubfiles = saveResizedSubfiles;
|
||||
SaveShortcutsForOutputResolutions = saveShortcutsForOutputResolutions;
|
||||
SkipSearch = skipSearch;
|
||||
SortingDaysDeltaTolerance = sortingDaysDeltaTolerance;
|
||||
SortingMaximumPerFaceShouldBeHigh = sortingMaximumPerFaceShouldBeHigh;
|
||||
|
Loading…
x
Reference in New Issue
Block a user