MapFaceFileLogic
Author:
This commit is contained in:
@ -460,6 +460,31 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
return result;
|
||||
}
|
||||
|
||||
private (long?, string?) GetDirectory(Configuration configuration, string by, string segmentB)
|
||||
{
|
||||
long? ticks = null;
|
||||
const int zero = 0;
|
||||
string? directory = null;
|
||||
string personKeyFormatted;
|
||||
PersonBirthday personBirthday;
|
||||
PersonContainer personContainer;
|
||||
for (int i = _NotMappedPersonContainers.Count - 1; i > 0; i--)
|
||||
{
|
||||
if (configuration.SaveIndividually)
|
||||
break;
|
||||
personContainer = _NotMappedPersonContainers[i];
|
||||
if (personContainer.Key is null || personContainer.Birthdays is null || personContainer.Birthdays.Length == 0)
|
||||
continue;
|
||||
personBirthday = personContainer.Birthdays[zero];
|
||||
ticks = personBirthday.Value.Ticks;
|
||||
personKeyFormatted = IPersonBirthday.GetFormatted(configuration.PersonBirthdayFormat, personBirthday);
|
||||
directory = Path.Combine(_EDistanceContentTicksDirectory, by, personKeyFormatted, segmentB);
|
||||
_NotMappedPersonContainers.RemoveAt(i);
|
||||
break;
|
||||
}
|
||||
return (ticks, directory);
|
||||
}
|
||||
|
||||
private (long?, string?) GetDirectory(Configuration configuration, bool saveIndividually, int padLeft, string? segmentC, string by, MappingFromItem mappingFromItem)
|
||||
{
|
||||
long? ticks = null;
|
||||
@ -512,7 +537,30 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
return result;
|
||||
}
|
||||
|
||||
private Record Get(Configuration configuration, bool saveIndividually, string by, Mapping question, int padLeft)
|
||||
private Record Get(Configuration configuration, string by, long? personKey, string? displayDirectoryName, string segmentB)
|
||||
{
|
||||
long? ticks;
|
||||
string? directory;
|
||||
string? debugDirectory;
|
||||
string? personDirectory;
|
||||
if (personKey is null || string.IsNullOrEmpty(displayDirectoryName))
|
||||
{
|
||||
debugDirectory = null;
|
||||
(ticks, directory) = GetDirectory(configuration, by, segmentB);
|
||||
personDirectory = directory is null ? null : Path.Combine(directory, $"X+{ticks}");
|
||||
}
|
||||
else
|
||||
{
|
||||
ticks = null;
|
||||
string personKeyFormatted = IPersonBirthday.GetFormatted(configuration.PersonBirthdayFormat, personKey.Value);
|
||||
debugDirectory = Path.Combine(_EDistanceContentTicksDirectory, by, personKeyFormatted, displayDirectoryName);
|
||||
directory = Path.Combine(_EDistanceContentTicksDirectory, by, personKeyFormatted, segmentB);
|
||||
personDirectory = Path.Combine(directory, displayDirectoryName, "lnk");
|
||||
}
|
||||
return new(debugDirectory, directory, ticks, personDirectory);
|
||||
}
|
||||
|
||||
private Record Get(Configuration configuration, bool saveIndividually, int padLeft, string by, Mapping question)
|
||||
{
|
||||
long? ticks;
|
||||
string? directory;
|
||||
@ -594,7 +642,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
if (!PreAndPostContinue(_Configuration, mapping, question))
|
||||
continue;
|
||||
}
|
||||
record = Get(_Configuration, saveIndividually, by, mapping, padLeft);
|
||||
record = Get(_Configuration, saveIndividually, padLeft, by, mapping);
|
||||
if (string.IsNullOrEmpty(record.Directory) || string.IsNullOrEmpty(record.PersonDirectory))
|
||||
continue;
|
||||
directory = record.Directory;
|
||||
@ -673,7 +721,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
Stateless.MapLogic.SaveMappingShortcuts(mappingDirectory);
|
||||
}
|
||||
|
||||
public List<Sorting> GetSortingCollection(Shared.Models.Methods.IDistanceLimits distanceLimits, int i, Face face, FaceDistance faceDistanceEncoding, List<FaceDistance> faceDistanceLengths)
|
||||
public List<Sorting> GetSortingCollection(int i, Face face, FaceDistance faceDistanceEncoding, List<FaceDistance> faceDistanceLengths)
|
||||
{
|
||||
if (_Configuration is null)
|
||||
throw new NullReferenceException(nameof(_Configuration));
|
||||
@ -772,6 +820,94 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
return result;
|
||||
}
|
||||
|
||||
private string? GetDisplayDirectoryName(string? displayDirectoryName, LocationContainer locationContainer)
|
||||
{
|
||||
string? result = displayDirectoryName;
|
||||
ReadOnlyDictionary<int, ReadOnlyCollection<PersonContainer>>? wholePercentagesToPersonContainers = GetWholePercentagesToPersonContainers(locationContainer.Id);
|
||||
if (wholePercentagesToPersonContainers is not null)
|
||||
{
|
||||
foreach (KeyValuePair<int, ReadOnlyCollection<PersonContainer>> keyValuePair in wholePercentagesToPersonContainers)
|
||||
{
|
||||
if (keyValuePair.Key != locationContainer.WholePercentages)
|
||||
continue;
|
||||
if (keyValuePair.Value.Count != 1)
|
||||
continue;
|
||||
result = keyValuePair.Value[0].DisplayDirectoryName;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public List<SaveContainer> GetSaveContainers(string cResultsFullGroupDirectory, string dResultsFullGroupDirectory, string d2ResultsFullGroupDirectory, Shared.Models.Methods.IDistanceLimits distanceLimits, ReadOnlyCollection<LocationContainer> matrix)
|
||||
{
|
||||
if (_Configuration is null)
|
||||
throw new NullReferenceException(nameof(_Configuration));
|
||||
List<SaveContainer> results = [];
|
||||
string by;
|
||||
Record record;
|
||||
string segmentB;
|
||||
bool isBySorting;
|
||||
string checkFile;
|
||||
string? directory;
|
||||
string shortcutFile;
|
||||
string facesDirectory;
|
||||
List<string> added = [];
|
||||
bool isCounterPersonYear;
|
||||
string facePartsDirectory;
|
||||
FileHolder? faceFileHolder;
|
||||
SaveContainer? saveContainer;
|
||||
string? displayDirectoryName;
|
||||
FileHolder? resizedFileHolder;
|
||||
int? useFiltersCounter = null;
|
||||
string resizeContentDirectory;
|
||||
FileHolder? facePartsFileHolder;
|
||||
FileHolder? hiddenFaceFileHolder;
|
||||
bool sortingContainersAny = matrix.Count > 0;
|
||||
string cContentDirectory = Path.Combine(cResultsFullGroupDirectory, _Configuration.PropertyConfiguration.ResultContent);
|
||||
string forceSingleImageHumanized = nameof(Shared.Models.Stateless.IMapLogic.ForceSingleImage).Humanize(LetterCasing.Title);
|
||||
string d2FacePartsContentDirectory = Path.Combine(d2ResultsFullGroupDirectory, _Configuration.PropertyConfiguration.ResultContent);
|
||||
foreach (LocationContainer locationContainer in matrix)
|
||||
{
|
||||
if (_Configuration.SaveIndividually)
|
||||
break;
|
||||
if (locationContainer.LengthPermyriad is null || locationContainer.LengthSource is null)
|
||||
continue;
|
||||
if (added.Contains(locationContainer.LengthSource.Name))
|
||||
continue;
|
||||
segmentB = locationContainer.LengthPermyriad.Value.ToString().PadLeft(2, '0')[..2];
|
||||
isCounterPersonYear = locationContainer.PersonKey is not null && IPersonBirthday.IsCounterPersonYear(locationContainer.PersonKey.Value);
|
||||
displayDirectoryName = isCounterPersonYear ? locationContainer.DisplayDirectoryName : GetDisplayDirectoryName(locationContainer.DisplayDirectoryName, locationContainer);
|
||||
(by, _, isBySorting) = Stateless.MapLogic.Get(useFiltersCounter, _Configuration.SaveIndividually, sortingContainersAny, forceSingleImageHumanized, locationContainer.LengthPermyriad, locationContainer.PersonKey, displayDirectoryName);
|
||||
record = Get(_Configuration, by, locationContainer.PersonKey, displayDirectoryName, segmentB);
|
||||
if (string.IsNullOrEmpty(record.Directory) || string.IsNullOrEmpty(record.PersonDirectory))
|
||||
continue;
|
||||
directory = record.Directory;
|
||||
if (!string.IsNullOrEmpty(record.DebugDirectory))
|
||||
results.Add(new(record.DebugDirectory));
|
||||
if (locationContainer.PersonKey is null)
|
||||
{
|
||||
if (!_Configuration.SaveSortingWithoutPerson)
|
||||
throw new NotSupportedException();
|
||||
if (record.Ticks is null)
|
||||
continue;
|
||||
}
|
||||
results.Add(new(record.PersonDirectory));
|
||||
facesDirectory = locationContainer.LengthSource.DirectoryName;
|
||||
faceFileHolder = IFileHolder.Get(locationContainer.LengthSource.FullName);
|
||||
checkFile = Path.Combine(directory, $"{locationContainer.LengthSource.Name}");
|
||||
shortcutFile = Path.Combine(record.PersonDirectory, $"{locationContainer.LengthSource.Name}.lnk");
|
||||
resizeContentDirectory = Stateless.MapLogic.GetResizeContentDirectory(_PropertyConfiguration, cContentDirectory, locationContainer.LengthSource);
|
||||
facePartsDirectory = Stateless.MapLogic.GetFacePartsDirectoryX(_PropertyConfiguration, d2FacePartsContentDirectory, locationContainer.LengthSource);
|
||||
hiddenFaceFileHolder = IFileHolder.Get(Path.Combine(facesDirectory, $"{locationContainer.LengthSource.NameWithoutExtension}{_Configuration.FacesHiddenFileNameExtension}"));
|
||||
facePartsFileHolder = IFileHolder.Get(Path.Combine(facePartsDirectory, $"{locationContainer.LengthSource.NameWithoutExtension}{_Configuration.FacePartsFileNameExtension}"));
|
||||
resizedFileHolder = IFileHolder.Get(Path.Combine(resizeContentDirectory, $"{locationContainer.LengthSource.FileNameFirstSegment}{Path.GetExtension(locationContainer.LengthSource.NameWithoutExtension)}"));
|
||||
saveContainer = new(checkFile, directory, faceFileHolder, hiddenFaceFileHolder, facePartsFileHolder, resizedFileHolder, shortcutFile);
|
||||
results.Add(saveContainer);
|
||||
added.Add(locationContainer.LengthSource.Name);
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
public List<SaveContainer> GetSaveContainers(string dFacesContentDirectory, string d2FacePartsContentDirectory, string d2FacePartsContentCollectionDirectory, ReadOnlyDictionary<int, ReadOnlyDictionary<int, Mapping>> idToWholePercentagesToMapping, Shared.Models.Methods.IDistanceLimits distanceLimits, int? useFiltersCounter, ReadOnlyCollection<SortingContainer> sortingContainers)
|
||||
{
|
||||
if (_Configuration is null)
|
||||
@ -810,7 +946,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
throw new NotSupportedException();
|
||||
if (question.MappingFromLocation is null)
|
||||
continue;
|
||||
record = Get(_Configuration, _Configuration.SaveIndividually, by, question, padLeft);
|
||||
record = Get(_Configuration, _Configuration.SaveIndividually, padLeft, by, question);
|
||||
if (string.IsNullOrEmpty(record.Directory) || string.IsNullOrEmpty(record.PersonDirectory))
|
||||
continue;
|
||||
directory = record.Directory;
|
||||
@ -1320,10 +1456,13 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
return result;
|
||||
}
|
||||
|
||||
public bool InSkipCollection(int id, MappingFromLocation mappingFromLocation) =>
|
||||
_SkipCollection.TryGetValue(id, out List<int>? wholePercentagesCollection) && wholePercentagesCollection.Contains(mappingFromLocation.WholePercentages);
|
||||
public bool InSkipCollection(int id, int wholePercentages) =>
|
||||
_SkipCollection.TryGetValue(id, out List<int>? wholePercentagesCollection) && wholePercentagesCollection.Contains(wholePercentages);
|
||||
|
||||
public bool? IsFocusPerson(int? skipPersonWithMoreThen, long[] jLinkResolvedPersonKeys, ReadOnlyDictionary<int, ReadOnlyCollection<PersonContainer>>? wholePercentagesToPersonContainers, MappingFromLocation mappingFromLocation)
|
||||
public bool InSkipCollection(int id, MappingFromLocation mappingFromLocation) =>
|
||||
InSkipCollection(id, mappingFromLocation.WholePercentages);
|
||||
|
||||
public bool? IsFocusPerson(int? skipPersonWithMoreThen, long[] jLinkResolvedPersonKeys, ReadOnlyDictionary<int, ReadOnlyCollection<PersonContainer>>? wholePercentagesToPersonContainers, int wholePercentages)
|
||||
{
|
||||
bool? result;
|
||||
ReadOnlyCollection<PersonContainer>? personContainers;
|
||||
@ -1331,7 +1470,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
result = null;
|
||||
else if (wholePercentagesToPersonContainers is null)
|
||||
result = null;
|
||||
else if (!wholePercentagesToPersonContainers.TryGetValue(mappingFromLocation.WholePercentages, out personContainers))
|
||||
else if (!wholePercentagesToPersonContainers.TryGetValue(wholePercentages, out personContainers))
|
||||
result = null;
|
||||
else
|
||||
{
|
||||
@ -1355,6 +1494,9 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
return result;
|
||||
}
|
||||
|
||||
public bool? IsFocusPerson(int? skipPersonWithMoreThen, long[] jLinkResolvedPersonKeys, ReadOnlyDictionary<int, ReadOnlyCollection<PersonContainer>>? wholePercentagesToPersonContainers, MappingFromLocation mappingFromLocation) =>
|
||||
IsFocusPerson(skipPersonWithMoreThen, jLinkResolvedPersonKeys, wholePercentagesToPersonContainers, mappingFromLocation.WholePercentages);
|
||||
|
||||
public void LookForAbandoned(IDlibDotNet dlibDotNet, Property.Models.Configuration propertyConfiguration, string bResultsFullGroupDirectory, ReadOnlyCollection<Container> readOnlyContainers, string cResultsFullGroupDirectory, string dResultsFullGroupDirectory, string d2ResultsFullGroupDirectory)
|
||||
{
|
||||
string[] directories;
|
||||
|
Reference in New Issue
Block a user