Shortcut to reference
This commit is contained in:
parent
b81d9e9862
commit
5d257b0bec
@ -908,6 +908,22 @@ public partial class DlibDotNet
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static Dictionary<int, Dictionary<int, Mapping>> GetIdToNormalizedPixelPercentageToFace(Mapping[] mappingCollection)
|
||||||
|
{
|
||||||
|
Dictionary<int, Dictionary<int, Mapping>> results = new();
|
||||||
|
Dictionary<int, Mapping> keyValuePairs;
|
||||||
|
foreach (Mapping mapping in mappingCollection)
|
||||||
|
{
|
||||||
|
if (!results.ContainsKey(mapping.MappingFromItem.Id))
|
||||||
|
results.Add(mapping.MappingFromItem.Id, new());
|
||||||
|
keyValuePairs = results[mapping.MappingFromItem.Id];
|
||||||
|
if (keyValuePairs.ContainsKey(mapping.MappingFromLocation.NormalizedPixelPercentage))
|
||||||
|
throw new NotSupportedException();
|
||||||
|
keyValuePairs.Add(mapping.MappingFromLocation.NormalizedPixelPercentage, mapping);
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
private void DistanceThenMapLogic(string argZero, long ticks, PersonContainer[] personContainers, Container[] containers, string a2PeopleSingletonDirectory, string dResultsFullGroupDirectory, string d2FacePartsContentDirectory, string eDistanceContentDirectory, string outputResolution)
|
private void DistanceThenMapLogic(string argZero, long ticks, PersonContainer[] personContainers, Container[] containers, string a2PeopleSingletonDirectory, string dResultsFullGroupDirectory, string d2FacePartsContentDirectory, string eDistanceContentDirectory, string outputResolution)
|
||||||
{
|
{
|
||||||
int? useFiltersCounter = null;
|
int? useFiltersCounter = null;
|
||||||
@ -925,10 +941,11 @@ public partial class DlibDotNet
|
|||||||
eDistanceContentDirectory,
|
eDistanceContentDirectory,
|
||||||
mappingCollection,
|
mappingCollection,
|
||||||
_Distance);
|
_Distance);
|
||||||
mapLogic.CopyManualFiles(dFacesContentDirectory, mappingCollection);
|
Dictionary<int, Dictionary<int, Mapping>> idToNormalizedPixelPercentageToMapping = GetIdToNormalizedPixelPercentageToFace(mappingCollection);
|
||||||
|
mapLogic.CopyManualFiles(dFacesContentDirectory, idToNormalizedPixelPercentageToMapping);
|
||||||
int totalNotMapped = mapLogic.AddToMapping(mappingCollection);
|
int totalNotMapped = mapLogic.AddToMapping(mappingCollection);
|
||||||
if (_Configuration.MappingSaveMapped)
|
if (_Configuration.MappingSaveMapped)
|
||||||
mapLogic.SaveMapped(dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, totalNotMapped);
|
mapLogic.SaveMapped(dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, idToNormalizedPixelPercentageToMapping, totalNotMapped);
|
||||||
E_Distance.SetFaceDistances(_AppSettings.MaxDegreeOfParallelism, ticks, distinctFilteredFaces);
|
E_Distance.SetFaceDistances(_AppSettings.MaxDegreeOfParallelism, ticks, distinctFilteredFaces);
|
||||||
sortingContainers = _Distance.SetFaceMappingSortingCollectionThenGetSortingContainers(_AppSettings.MaxDegreeOfParallelism, ticks, mapLogic, distinctFilteredFaces, useFiltersCounter);
|
sortingContainers = _Distance.SetFaceMappingSortingCollectionThenGetSortingContainers(_AppSettings.MaxDegreeOfParallelism, ticks, mapLogic, distinctFilteredFaces, useFiltersCounter);
|
||||||
if (!sortingContainers.Any())
|
if (!sortingContainers.Any())
|
||||||
@ -942,7 +959,7 @@ public partial class DlibDotNet
|
|||||||
}
|
}
|
||||||
E_Distance.SaveFaceDistances(_Configuration.PropertyConfiguration, sortingContainers);
|
E_Distance.SaveFaceDistances(_Configuration.PropertyConfiguration, sortingContainers);
|
||||||
if (totalNotMapped > 0)
|
if (totalNotMapped > 0)
|
||||||
mapLogic.ForceSingleImageThenSaveSorting(dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, sortingContainers, useFiltersCounter, totalNotMapped);
|
mapLogic.ForceSingleImageThenSaveSorting(dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, idToNormalizedPixelPercentageToMapping, sortingContainers, useFiltersCounter, totalNotMapped);
|
||||||
if (_Configuration.MappingSaveNotMapped)
|
if (_Configuration.MappingSaveNotMapped)
|
||||||
mapLogic.SaveNotMappedTicks();
|
mapLogic.SaveNotMappedTicks();
|
||||||
if (_Configuration.SaveShortcutsForOutputResolutions.Contains(outputResolution))
|
if (_Configuration.SaveShortcutsForOutputResolutions.Contains(outputResolution))
|
||||||
|
@ -200,9 +200,7 @@ public class MapLogic
|
|||||||
}
|
}
|
||||||
foreach (SaveContainer saveContainer in saveContainers)
|
foreach (SaveContainer saveContainer in saveContainers)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(saveContainer.Directory) || string.IsNullOrEmpty(saveContainer.CheckFile) || saveContainer.ResizedFileHolder is null)
|
if (string.IsNullOrEmpty(saveContainer.ShortcutFile) || saveContainer.ResizedFileHolder is null || !saveContainer.ResizedFileHolder.Exists)
|
||||||
continue;
|
|
||||||
if (string.IsNullOrEmpty(saveContainer.ShortcutFile) || !saveContainer.ResizedFileHolder.Exists)
|
|
||||||
continue;
|
continue;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -215,14 +213,14 @@ public class MapLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SaveMapped(string dFacesContentDirectory, string d2FacePartsContentDirectory, Mapping[] mappingCollection, int totalNotMapped)
|
public void SaveMapped(string dFacesContentDirectory, string d2FacePartsContentDirectory, Mapping[] mappingCollection, Dictionary<int, Dictionary<int, Mapping>> idToNormalizedPixelPercentageToMapping, int totalNotMapped)
|
||||||
{
|
{
|
||||||
if (_Configuration is null)
|
if (_Configuration is null)
|
||||||
throw new NullReferenceException(nameof(_Configuration));
|
throw new NullReferenceException(nameof(_Configuration));
|
||||||
int? updated = null;
|
int? updated = null;
|
||||||
int? useFiltersCounter = null;
|
int? useFiltersCounter = null;
|
||||||
string mappingDirectory = Path.Combine(_EDistanceContentTicksDirectory, nameof(Stateless.IMapLogic.Mapping));
|
string mappingDirectory = Path.Combine(_EDistanceContentTicksDirectory, nameof(Stateless.IMapLogic.Mapping));
|
||||||
List<SaveContainer> saveContainers = Stateless.MapLogic.GetSaveContainers(_Configuration, _EDistanceContentTicksDirectory, dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, useFiltersCounter, saveMapped: true);
|
List<SaveContainer> saveContainers = Stateless.MapLogic.GetSaveContainers(_Configuration, _EDistanceContentTicksDirectory, dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, idToNormalizedPixelPercentageToMapping, useFiltersCounter, saveMapped: true);
|
||||||
SaveContainers(totalNotMapped, updated, saveContainers);
|
SaveContainers(totalNotMapped, updated, saveContainers);
|
||||||
if (!string.IsNullOrEmpty(_EDistanceContentTicksDirectory) && Directory.Exists(mappingDirectory))
|
if (!string.IsNullOrEmpty(_EDistanceContentTicksDirectory) && Directory.Exists(mappingDirectory))
|
||||||
Stateless.MapLogic.SaveMappingShortcuts(mappingDirectory);
|
Stateless.MapLogic.SaveMappingShortcuts(mappingDirectory);
|
||||||
@ -404,7 +402,7 @@ public class MapLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ForceSingleImageThenSaveSorting(string dFacesContentDirectory, string d2FacePartsContentDirectory, Mapping[] mappingCollection, SortingContainer[] sortingContainers, int? useFiltersCounter, int totalNotMapped)
|
public void ForceSingleImageThenSaveSorting(string dFacesContentDirectory, string d2FacePartsContentDirectory, Mapping[] mappingCollection, Dictionary<int, Dictionary<int, Mapping>> idToNormalizedPixelPercentageToMapping, SortingContainer[] sortingContainers, int? useFiltersCounter, int totalNotMapped)
|
||||||
{
|
{
|
||||||
if (_Configuration is null)
|
if (_Configuration is null)
|
||||||
throw new NullReferenceException(nameof(_Configuration));
|
throw new NullReferenceException(nameof(_Configuration));
|
||||||
@ -414,19 +412,19 @@ public class MapLogic
|
|||||||
{
|
{
|
||||||
updated = 0;
|
updated = 0;
|
||||||
ForceSingleImage(mappingCollection);
|
ForceSingleImage(mappingCollection);
|
||||||
saveContainers = Stateless.MapLogic.GetSaveContainers(_Configuration, _EDistanceContentTicksDirectory, dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, useFiltersCounter, saveMapped: false);
|
saveContainers = Stateless.MapLogic.GetSaveContainers(_Configuration, _EDistanceContentTicksDirectory, dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, idToNormalizedPixelPercentageToMapping, useFiltersCounter, saveMapped: false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
updated = UpdateFromSortingContainers(sortingContainers);
|
updated = UpdateFromSortingContainers(sortingContainers);
|
||||||
if (useFiltersCounter is null && totalNotMapped - updated > 0)
|
if (useFiltersCounter is null && totalNotMapped - updated > 0)
|
||||||
ForceSingleImage(mappingCollection);
|
ForceSingleImage(mappingCollection);
|
||||||
saveContainers = Stateless.MapLogic.GetSaveContainers(_Configuration, _EDistanceContentTicksDirectory, dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, useFiltersCounter, saveMapped: false);
|
saveContainers = Stateless.MapLogic.GetSaveContainers(_Configuration, _EDistanceContentTicksDirectory, dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, idToNormalizedPixelPercentageToMapping, useFiltersCounter, saveMapped: false);
|
||||||
}
|
}
|
||||||
SaveContainers(totalNotMapped, updated, saveContainers);
|
SaveContainers(totalNotMapped, updated, saveContainers);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CopyManualFiles(string dFacesContentDirectory, Mapping[] mappingCollection)
|
public void CopyManualFiles(string dFacesContentDirectory, Dictionary<int, Dictionary<int, Mapping>> idToNormalizedPixelPercentageToMapping)
|
||||||
{
|
{
|
||||||
if (_Configuration is null)
|
if (_Configuration is null)
|
||||||
throw new NullReferenceException(nameof(_Configuration));
|
throw new NullReferenceException(nameof(_Configuration));
|
||||||
@ -453,7 +451,6 @@ public class MapLogic
|
|||||||
string by = nameof(Stateless.IMapLogic.ManualCopy);
|
string by = nameof(Stateless.IMapLogic.ManualCopy);
|
||||||
Dictionary<int, Mapping>? normalizedPixelPercentageToMapping;
|
Dictionary<int, Mapping>? normalizedPixelPercentageToMapping;
|
||||||
string successfull = $"_ {nameof(Stateless.IMapLogic.ManualCopy).Humanize(LetterCasing.Title)} Successfull";
|
string successfull = $"_ {nameof(Stateless.IMapLogic.ManualCopy).Humanize(LetterCasing.Title)} Successfull";
|
||||||
Dictionary<int, Dictionary<int, Mapping>> idToNormalizedPixelPercentageToFace = Stateless.MapLogic.GetKeyValuePairs(mappingCollection);
|
|
||||||
foreach (KeyValuePair<long, PersonContainer> keyValuePair in _PersonKeyToPersonContainer)
|
foreach (KeyValuePair<long, PersonContainer> keyValuePair in _PersonKeyToPersonContainer)
|
||||||
{
|
{
|
||||||
if (keyValuePair.Value.Key is null || keyValuePair.Value.Birthdays is null || !keyValuePair.Value.Birthdays.Any())
|
if (keyValuePair.Value.Key is null || keyValuePair.Value.Birthdays is null || !keyValuePair.Value.Birthdays.Any())
|
||||||
@ -480,11 +477,11 @@ public class MapLogic
|
|||||||
mappingSegmentB = Stateless.MapLogic.GetMappingSegmentB(_Ticks, personBirthday, keyValuePair.Value.ApproximateYears, fileInfo.CreationTime, isWrongYear: null);
|
mappingSegmentB = Stateless.MapLogic.GetMappingSegmentB(_Ticks, personBirthday, keyValuePair.Value.ApproximateYears, fileInfo.CreationTime, isWrongYear: null);
|
||||||
directory = Path.Combine(_EDistanceContentTicksDirectory, by, personKeyFormatted, mappingSegmentB);
|
directory = Path.Combine(_EDistanceContentTicksDirectory, by, personKeyFormatted, mappingSegmentB);
|
||||||
personDirectory = Path.Combine(directory, keyValuePair.Value.DisplayDirectoryName, "lnk");
|
personDirectory = Path.Combine(directory, keyValuePair.Value.DisplayDirectoryName, "lnk");
|
||||||
if (!idToNormalizedPixelPercentageToFace.TryGetValue(id.Value, out normalizedPixelPercentageToMapping))
|
if (!idToNormalizedPixelPercentageToMapping.TryGetValue(id.Value, out normalizedPixelPercentageToMapping))
|
||||||
continue;
|
continue;
|
||||||
if (!normalizedPixelPercentageToMapping.ContainsKey(normalizedPixelPercentage.Value))
|
if (!normalizedPixelPercentageToMapping.ContainsKey(normalizedPixelPercentage.Value))
|
||||||
continue;
|
continue;
|
||||||
mapping = idToNormalizedPixelPercentageToFace[id.Value][normalizedPixelPercentage.Value];
|
mapping = normalizedPixelPercentageToMapping[normalizedPixelPercentage.Value];
|
||||||
if (string.IsNullOrEmpty(personDisplayDirectory))
|
if (string.IsNullOrEmpty(personDisplayDirectory))
|
||||||
throw new NotSupportedException();
|
throw new NotSupportedException();
|
||||||
directoryName = Path.GetDirectoryName(mapping.MappingFromItem.RelativePath);
|
directoryName = Path.GetDirectoryName(mapping.MappingFromItem.RelativePath);
|
||||||
|
@ -654,28 +654,25 @@ internal abstract class MapLogic
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static Dictionary<int, Dictionary<int, Mapping>> GetKeyValuePairs(Mapping[] mappingCollection)
|
private static SaveContainer GetSaveContainer(string directory, SortingContainer sortingContainer, Mapping mapping)
|
||||||
{
|
{
|
||||||
Dictionary<int, Dictionary<int, Mapping>> results = new();
|
SaveContainer result;
|
||||||
Dictionary<int, Mapping> keyValuePairs;
|
string checkFile = string.Empty;
|
||||||
foreach (Mapping mapping in mappingCollection)
|
FileHolder? faceFileHolder = null;
|
||||||
{
|
FileHolder? facePartsFileHolder = null;
|
||||||
if (!results.ContainsKey(mapping.MappingFromItem.Id))
|
FileHolder? hiddenFaceFileHolder = null;
|
||||||
results.Add(mapping.MappingFromItem.Id, new());
|
string shortcutFile = Path.Combine(directory, $"{sortingContainer.Mapping.MappingFromLocation.DeterministicHashCodeKey}{sortingContainer.Mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}.lnk");
|
||||||
keyValuePairs = results[mapping.MappingFromItem.Id];
|
result = new(checkFile, directory, faceFileHolder, hiddenFaceFileHolder, facePartsFileHolder, mapping.MappingFromItem.ResizedFileHolder, shortcutFile);
|
||||||
if (keyValuePairs.ContainsKey(mapping.MappingFromLocation.NormalizedPixelPercentage))
|
return result;
|
||||||
throw new NotSupportedException();
|
|
||||||
keyValuePairs.Add(mapping.MappingFromLocation.NormalizedPixelPercentage, mapping);
|
|
||||||
}
|
|
||||||
return results;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static List<SaveContainer> GetSaveContainers(Configuration configuration, string eDistanceContentTicksDirectory, string dFacesContentDirectory, string d2FacePartsContentDirectory, Mapping[] mappingCollection, int? useFiltersCounter, bool saveMapped)
|
internal static List<SaveContainer> GetSaveContainers(Configuration configuration, string eDistanceContentTicksDirectory, string dFacesContentDirectory, string d2FacePartsContentDirectory, Mapping[] mappingCollection, Dictionary<int, Dictionary<int, Mapping>> idToNormalizedPixelPercentageToMapping, int? useFiltersCounter, bool saveMapped)
|
||||||
{
|
{
|
||||||
List<SaveContainer> results = new();
|
List<SaveContainer> results = new();
|
||||||
string by;
|
string by;
|
||||||
string checkFile;
|
string checkFile;
|
||||||
bool isByMapping;
|
bool isByMapping;
|
||||||
|
bool isBySorting;
|
||||||
string directory;
|
string directory;
|
||||||
string shortcutFile;
|
string shortcutFile;
|
||||||
string facesDirectory;
|
string facesDirectory;
|
||||||
@ -687,6 +684,7 @@ internal abstract class MapLogic
|
|||||||
SaveContainer saveContainer;
|
SaveContainer saveContainer;
|
||||||
FileHolder facePartsFileHolder;
|
FileHolder facePartsFileHolder;
|
||||||
FileHolder hiddenFaceFileHolder;
|
FileHolder hiddenFaceFileHolder;
|
||||||
|
Dictionary<int, Mapping>? normalizedPixelPercentageToMapping;
|
||||||
string forceSingleImageHumanized = nameof(IMapLogic.ForceSingleImage).Humanize(LetterCasing.Title);
|
string forceSingleImageHumanized = nameof(IMapLogic.ForceSingleImage).Humanize(LetterCasing.Title);
|
||||||
foreach (Mapping mapping in mappingCollection)
|
foreach (Mapping mapping in mappingCollection)
|
||||||
{
|
{
|
||||||
@ -700,18 +698,19 @@ internal abstract class MapLogic
|
|||||||
if (mapping.MappingFromPerson.By is null)
|
if (mapping.MappingFromPerson.By is null)
|
||||||
{
|
{
|
||||||
isByMapping = false;
|
isByMapping = false;
|
||||||
|
isBySorting = false;
|
||||||
by = $"{nameof(IMapLogic.Mapping)}Null";
|
by = $"{nameof(IMapLogic.Mapping)}Null";
|
||||||
}
|
}
|
||||||
else if (useFiltersCounter.HasValue && mapping.MappingFromPerson.By.Value == IMapLogic.Sorting)
|
|
||||||
{
|
|
||||||
isByMapping = false;
|
|
||||||
by = $"{nameof(IMapLogic.Sorting)} Modified Filters - {useFiltersCounter.Value}";
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
isByMapping = mapping.MappingFromPerson.By == IMapLogic.Mapping;
|
isByMapping = mapping.MappingFromPerson.By == IMapLogic.Mapping;
|
||||||
|
isBySorting = mapping.MappingFromPerson.By == IMapLogic.Sorting;
|
||||||
if (isByMapping && !saveMapped)
|
if (isByMapping && !saveMapped)
|
||||||
continue;
|
continue;
|
||||||
|
if (isBySorting && useFiltersCounter.HasValue)
|
||||||
|
by = $"{nameof(IMapLogic.Sorting)} Modified Filters - {useFiltersCounter.Value}";
|
||||||
|
else
|
||||||
|
{
|
||||||
by = mapping.MappingFromPerson.By.Value switch
|
by = mapping.MappingFromPerson.By.Value switch
|
||||||
{
|
{
|
||||||
IMapLogic.Mapping => nameof(IMapLogic.Mapping),
|
IMapLogic.Mapping => nameof(IMapLogic.Mapping),
|
||||||
@ -720,6 +719,7 @@ internal abstract class MapLogic
|
|||||||
_ => throw new NotImplementedException()
|
_ => throw new NotImplementedException()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
}
|
||||||
personKeyFormatted = IPersonBirthday.GetFormatted(configuration.PersonBirthdayFormat, mapping.MappingFromPerson.PersonBirthday);
|
personKeyFormatted = IPersonBirthday.GetFormatted(configuration.PersonBirthdayFormat, mapping.MappingFromPerson.PersonBirthday);
|
||||||
directory = Path.Combine(eDistanceContentTicksDirectory, by, personKeyFormatted, mapping.MappingFromPerson.SegmentB);
|
directory = Path.Combine(eDistanceContentTicksDirectory, by, personKeyFormatted, mapping.MappingFromPerson.SegmentB);
|
||||||
if (isByMapping)
|
if (isByMapping)
|
||||||
@ -747,6 +747,14 @@ internal abstract class MapLogic
|
|||||||
saveContainer = new(checkFile, directory, faceFileHolder, hiddenFaceFileHolder, facePartsFileHolder, mapping.MappingFromItem.ResizedFileHolder, shortcutFile);
|
saveContainer = new(checkFile, directory, faceFileHolder, hiddenFaceFileHolder, facePartsFileHolder, mapping.MappingFromItem.ResizedFileHolder, shortcutFile);
|
||||||
}
|
}
|
||||||
results.Add(saveContainer);
|
results.Add(saveContainer);
|
||||||
|
if (!isBySorting || mapping.SortingContainer is null)
|
||||||
|
continue;
|
||||||
|
if (!idToNormalizedPixelPercentageToMapping.TryGetValue(mapping.SortingContainer.Sorting.Id, out normalizedPixelPercentageToMapping))
|
||||||
|
continue;
|
||||||
|
if (!normalizedPixelPercentageToMapping.ContainsKey(mapping.SortingContainer.Sorting.NormalizedPixelPercentage))
|
||||||
|
continue;
|
||||||
|
saveContainer = GetSaveContainer(directory, mapping.SortingContainer, normalizedPixelPercentageToMapping[mapping.SortingContainer.Sorting.NormalizedPixelPercentage]);
|
||||||
|
results.Add(saveContainer);
|
||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user