Ticks
This commit is contained in:
@ -7,10 +7,6 @@ public interface IMapLogic
|
||||
static (bool?, string[]) IsWrongYear(Shared.Models.Item item) =>
|
||||
MapLogic.IsWrongYear(item);
|
||||
|
||||
void TestStatic_SetSingleImage(string[] ignoreRelativePaths, string argZero, Shared.Models.Container[] containers);
|
||||
static void SetSingleImage(string[] ignoreRelativePaths, string argZero, Shared.Models.Container[] containers) =>
|
||||
MapLogic.SetSingleImage(ignoreRelativePaths, argZero, containers);
|
||||
|
||||
string TestStatic_GetDateKey(DateTime dateTime, Shared.Models.Mapping mapping, DateTime minimumDateTime, bool? isWrongYear);
|
||||
static string GetDateKey(DateTime dateTime, Shared.Models.Mapping mapping, DateTime minimumDateTime, bool? isWrongYear) =>
|
||||
MapLogic.GetDateKey(dateTime, mapping, minimumDateTime, isWrongYear);
|
||||
|
@ -1,5 +1,4 @@
|
||||
using View_by_Distance.Shared.Models;
|
||||
using View_by_Distance.Shared.Models.Stateless;
|
||||
|
||||
namespace View_by_Distance.Map.Models.Stateless;
|
||||
|
||||
@ -37,6 +36,7 @@ internal abstract class MapLogic
|
||||
string key;
|
||||
string dateKey;
|
||||
bool? isWrongYear;
|
||||
string personKey;
|
||||
DateTime minimumDateTime;
|
||||
DateTime dateTime = DateTime.Now;
|
||||
MappingContainer mappingContainer;
|
||||
@ -58,16 +58,15 @@ internal abstract class MapLogic
|
||||
continue;
|
||||
foreach (Mapping mapping in item.Mapping)
|
||||
{
|
||||
if (mapping.PersonBirthday is null)
|
||||
continue;
|
||||
if (mapping.NormalizedPixelPercentage.HasValue && mapping.NormalizedPixelPercentage.Value != face.Location.NormalizedPixelPercentage.Value)
|
||||
continue;
|
||||
// if (named.NormalizedPixelPercentage is null && (Shared.Models.Stateless.INamed.OnlyUseNamedWithNormalizedPixelPercentagePopulatedForGetKeyValuePairs || item.Named.Count != 1 || item.Faces.Count != 1))
|
||||
// continue;
|
||||
minimumDateTime = Shared.Models.Stateless.Methods.IProperty.GetMinimumDateTime(item.Property);
|
||||
(isWrongYear, _) = item.Property.IsWrongYear(item.ImageFileHolder.FullName, minimumDateTime);
|
||||
personKey = Shared.Models.Stateless.Methods.IPersonBirthday.GetFormatted(mapping.PersonBirthday);
|
||||
dateKey = GetDateKey(dateTime, mapping, minimumDateTime, isWrongYear);
|
||||
key = string.Concat(mapping.PersonKey, dateKey);
|
||||
key = string.Concat(personKey, dateKey);
|
||||
if (!results.ContainsKey(key))
|
||||
results.Add(key, new());
|
||||
mappingContainer = new(face, item.Property.Id.Value, isWrongYear, key, mapping, minimumDateTime);
|
||||
@ -91,44 +90,4 @@ internal abstract class MapLogic
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static void SetSingleImage(string[] ignoreRelativePaths, string argZero, Container[] containers)
|
||||
{
|
||||
Mapping mapping;
|
||||
string personKey;
|
||||
int? approximateYears = null;
|
||||
PersonBirthday? personBirthday = null;
|
||||
const string displayDirectoryName = Property.Models.Stateless.IResult.AllInOne;
|
||||
foreach (Container container in containers)
|
||||
{
|
||||
if (!container.Items.Any())
|
||||
continue;
|
||||
if (!container.SourceDirectory.StartsWith(argZero))
|
||||
continue;
|
||||
if (ignoreRelativePaths.Contains(Path.GetFileName(container.SourceDirectory)))
|
||||
continue;
|
||||
foreach (Item item in container.Items)
|
||||
{
|
||||
if (item.ImageFileHolder is null || item.Property?.Id is null)
|
||||
continue;
|
||||
foreach (Face face in item.Faces)
|
||||
{
|
||||
if (face.FaceEncoding is null || face.Location?.NormalizedPixelPercentage is null)
|
||||
continue;
|
||||
personKey = DateTime.MinValue.AddYears(IPersonBirthday.FirstYear).ToString(IPersonBirthday.Format);
|
||||
personBirthday = Shared.Models.Stateless.Methods.IPersonBirthday.GetPersonBirthday(personKey);
|
||||
if (personBirthday is null)
|
||||
continue;
|
||||
mapping = new(approximateYears, displayDirectoryName, face.Location.NormalizedPixelPercentage, personBirthday, personKey);
|
||||
item.Mapping.Add(mapping);
|
||||
if (personBirthday is not null)
|
||||
break;
|
||||
}
|
||||
if (personBirthday is not null)
|
||||
break;
|
||||
}
|
||||
if (personBirthday is not null)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -7,18 +7,20 @@ namespace View_by_Distance.Map.Models.Stateless;
|
||||
public class ByDeterministicHashCode
|
||||
{
|
||||
|
||||
private static void SetOther(string resizeFilenameExtension, Person[] people, string deterministicHashCodePeopleDirectory, List<double> skipCollection, List<(string, int?, string, PersonBirthday[])> peopleCollection)
|
||||
private static void SetOther(string resizeFilenameExtension, Person[] people, string deterministicHashCodePeopleDirectory, List<double> skipCollection, List<(string, int?, PersonBirthday[], long)> peopleCollection)
|
||||
{
|
||||
long ticks;
|
||||
string json;
|
||||
string personKey;
|
||||
string[] segments;
|
||||
int? approximateYears;
|
||||
string groupDirectoryName;
|
||||
PersonBirthday[] collection;
|
||||
string personKeyJsonFileName;
|
||||
List<long> personKeys = new();
|
||||
string[] personKeyDirectories;
|
||||
string personKeyJsonDirectory;
|
||||
PersonBirthday? personBirthday;
|
||||
List<string> personKeys = new();
|
||||
string[] personDisplayDirectories;
|
||||
string convertedPersonKeyDirectory;
|
||||
string? personDisplayDirectoryName;
|
||||
@ -78,6 +80,8 @@ public class ByDeterministicHashCode
|
||||
continue;
|
||||
personBirthdays.Add(personBirthday);
|
||||
}
|
||||
if (!personBirthdays.Any())
|
||||
continue;
|
||||
foreach (string personKeyDirectory in personKeyDirectories)
|
||||
{
|
||||
personKey = Path.GetFileName(personKeyDirectory);
|
||||
@ -93,8 +97,14 @@ public class ByDeterministicHashCode
|
||||
json = JsonSerializer.Serialize(personKeyValuePairs[personKey], new JsonSerializerOptions() { WriteIndented = true });
|
||||
_ = Shared.Models.Stateless.Methods.IPath.WriteAllText(personKeyJsonFileName, json, updateDateWhenMatches: false, compareBeforeWrite: true, updateToWhenMatches: null);
|
||||
}
|
||||
personKeys.Add(personKey);
|
||||
peopleCollection.Add(new(personDisplayDirectoryName, approximateYears, personKey, personBirthdays.OrderByDescending(l => l.Value).ToArray()));
|
||||
collection = personBirthdays.OrderByDescending(l => l.Value).ToArray();
|
||||
ticks = collection[0].Value.Ticks;
|
||||
peopleCollection.Add(new(personDisplayDirectoryName, approximateYears, collection, ticks));
|
||||
for (int i = 0; i < collection.Length; i++)
|
||||
{
|
||||
ticks = collection[i].Value.Ticks;
|
||||
personKeys.Add(ticks);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -103,17 +113,18 @@ public class ByDeterministicHashCode
|
||||
DateTime incrementDate = new(Shared.Models.Stateless.IPersonBirthday.FirstYear, 1, 1);
|
||||
for (int i = 0; i < 500; i++)
|
||||
{
|
||||
incrementDate = incrementDate.AddDays(1);
|
||||
ticks = incrementDate.Ticks;
|
||||
personBirthday = new(incrementDate);
|
||||
incrementDate = incrementDate.AddDays(1);
|
||||
personKey = Shared.Models.Stateless.Methods.IPersonBirthday.GetFormatted(personBirthday);
|
||||
if (personKeys.Contains(personKey))
|
||||
if (personKeys.Contains(ticks))
|
||||
continue;
|
||||
personKeys.Add(personKey);
|
||||
peopleCollection.Add(new(displayDirectoryName, approximateYears, personKey, new PersonBirthday[] { personBirthday }));
|
||||
personKeys.Add(ticks);
|
||||
peopleCollection.Add(new(displayDirectoryName, approximateYears, new PersonBirthday[] { personBirthday }, ticks));
|
||||
}
|
||||
}
|
||||
|
||||
internal static void SetKeyValuePairs(string deterministicHashCodeContentDirectory, List<(string, double)> deterministicHashCodeCollection, List<(string, double)> incorrectDeterministicHashCodeCollection, Dictionary<int, List<Face>> keyValuePairs)
|
||||
internal static void SetKeyValuePairs(string deterministicHashCodeContentDirectory, List<(PersonBirthday, double)> deterministicHashCodeCollection, List<(PersonBirthday, double)> incorrectDeterministicHashCodeCollection, Dictionary<int, List<Face>> keyValuePairs)
|
||||
{
|
||||
string[] files;
|
||||
string personKey;
|
||||
@ -122,6 +133,7 @@ public class ByDeterministicHashCode
|
||||
string? personFirstInitial;
|
||||
string[] personKeyDirectories;
|
||||
string[] personNameDirectories;
|
||||
PersonBirthday? personBirthday;
|
||||
string[] personNameLinkDirectories;
|
||||
string? personFirstInitialDirectory;
|
||||
double? reversedDeterministicHashCodeKey;
|
||||
@ -138,6 +150,9 @@ public class ByDeterministicHashCode
|
||||
personKey = Path.GetFileName(personKeyDirectory);
|
||||
if (personKey == nameof(Closest))
|
||||
throw new Exception($"Move personKey directories up one from {nameof(Closest)} and delete {nameof(Closest)} directory!");
|
||||
personBirthday = Shared.Models.Stateless.Methods.IPersonBirthday.GetPersonBirthday(personKey);
|
||||
if (personBirthday is null)
|
||||
continue;
|
||||
yearDirectories = Directory.GetDirectories(personKeyDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
foreach (string yearDirectory in yearDirectories)
|
||||
{
|
||||
@ -159,7 +174,7 @@ public class ByDeterministicHashCode
|
||||
reversedDeterministicHashCodeKey = Shared.Models.Stateless.Methods.IMapping.GetReversedDeterministicHashCodeKey(keyValuePairsAny, keyValuePairs, file);
|
||||
if (reversedDeterministicHashCodeKey is null)
|
||||
continue;
|
||||
deterministicHashCodeCollection.Add(new(personKey, reversedDeterministicHashCodeKey.Value));
|
||||
deterministicHashCodeCollection.Add(new(personBirthday, reversedDeterministicHashCodeKey.Value));
|
||||
}
|
||||
personNameLinkDirectories = Directory.GetDirectories(personNameDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
foreach (string personNameLinkDirectory in personNameLinkDirectories)
|
||||
@ -186,63 +201,77 @@ public class ByDeterministicHashCode
|
||||
}
|
||||
}
|
||||
|
||||
internal static string SetByRef(string resizeFilenameExtension, Person[] people, List<double> skipCollection, Dictionary<string, (string, int?, string, PersonBirthday[])> peopleKeyValuePairs, List<string> notMappedPersonKeys, Dictionary<int, string[]> deterministicHashCodeUnknownFaceKeyValuePairs, Dictionary<double, string[]> deterministicHashCodeKeyValuePairs, Dictionary<double, string[]> incorrectDeterministicHashCodeKeyValuePairs, string deterministicHashCodeRootDirectory)
|
||||
private static List<long> GetTicks(Dictionary<int, PersonBirthday[]> deterministicHashCodeUnknownFaceKeyValuePairs)
|
||||
{
|
||||
List<long> results = new();
|
||||
long ticks;
|
||||
foreach (KeyValuePair<int, PersonBirthday[]> keyValuePair in deterministicHashCodeUnknownFaceKeyValuePairs)
|
||||
{
|
||||
foreach (PersonBirthday personBirthday in keyValuePair.Value)
|
||||
{
|
||||
ticks = personBirthday.Value.Ticks;
|
||||
results.Add(ticks);
|
||||
}
|
||||
}
|
||||
results = results.Distinct().ToList();
|
||||
return results;
|
||||
}
|
||||
|
||||
private static void Set(List<(PersonBirthday PersonBirthday, double IdAndNormalizedPixelPercentage)> deterministicHashCodeCollection, List<long> deterministicHashCodePersonKeys, Dictionary<double, List<PersonBirthday>> deterministicHashCodeScope)
|
||||
{
|
||||
long ticks;
|
||||
deterministicHashCodeCollection = (from l in deterministicHashCodeCollection orderby l.IdAndNormalizedPixelPercentage select l).ToList();
|
||||
foreach ((PersonBirthday personBirthday, double idAndNormalizedPixelPercentage) in deterministicHashCodeCollection)
|
||||
{
|
||||
if (!deterministicHashCodeScope.ContainsKey(idAndNormalizedPixelPercentage))
|
||||
deterministicHashCodeScope.Add(idAndNormalizedPixelPercentage, new());
|
||||
deterministicHashCodeScope[idAndNormalizedPixelPercentage].Add(personBirthday);
|
||||
ticks = personBirthday.Value.Ticks;
|
||||
deterministicHashCodePersonKeys.Add(ticks);
|
||||
}
|
||||
}
|
||||
|
||||
internal static void SetByRef(string resizeFilenameExtension, Person[] people, List<double> skipCollection, Dictionary<long, (string, int?, PersonBirthday[], long)> peopleKeyValuePairs, List<long> notMappedPersonKeys, Dictionary<int, PersonBirthday[]> deterministicHashCodeUnknownFaceKeyValuePairs, Dictionary<double, PersonBirthday[]> deterministicHashCodeKeyValuePairs, Dictionary<double, PersonBirthday[]> incorrectDeterministicHashCodeKeyValuePairs, string deterministicHashCodeRootDirectory, string deterministicHashCodeContentDirectory)
|
||||
{
|
||||
string result;
|
||||
string[] distinctPersonKeys;
|
||||
Dictionary<int, List<Face>> keyValuePairs = new();
|
||||
List<string> deterministicHashCodePersonKeys = new();
|
||||
List<string> deterministicHashCodeUnknownFacePersonKeys = new();
|
||||
Dictionary<double, List<string>> deterministicHashCodeScope = new();
|
||||
Dictionary<double, List<string>> incorrectDeterministicHashCodeScope = new();
|
||||
List<(string PersonKey, double IdAndNormalizedPixelPercentage)> deterministicHashCodeCollection = new();
|
||||
List<long> deterministicHashCodePersonKeys = new();
|
||||
List<(string, int?, PersonBirthday[], long)> peopleCollection = new();
|
||||
Dictionary<double, List<PersonBirthday>> deterministicHashCodeScope = new();
|
||||
Dictionary<double, List<PersonBirthday>> incorrectDeterministicHashCodeScope = new();
|
||||
string deterministicHashCodePeopleDirectory = Path.Combine(deterministicHashCodeRootDirectory, "People");
|
||||
List<(string PersonKey, double IdAndNormalizedPixelPercentage)> incorrectDeterministicHashCodeCollection = new();
|
||||
foreach (KeyValuePair<int, string[]> keyValuePair in deterministicHashCodeUnknownFaceKeyValuePairs)
|
||||
deterministicHashCodeUnknownFacePersonKeys.AddRange(keyValuePair.Value);
|
||||
deterministicHashCodeUnknownFacePersonKeys = deterministicHashCodeUnknownFacePersonKeys.Distinct().ToList();
|
||||
List<(string, int?, string, PersonBirthday[])> peopleCollection = new();
|
||||
List<long> deterministicHashCodeUnknownFacePersonKeys = GetTicks(deterministicHashCodeUnknownFaceKeyValuePairs);
|
||||
List<(PersonBirthday PersonBirthday, double IdAndNormalizedPixelPercentage)> incorrectDeterministicHashCodeCollection = new();
|
||||
List<(PersonBirthday PersonBirthday, double IdAndNormalizedPixelPercentage)> deterministicHashCodeCollection = new();
|
||||
if (!Directory.Exists(deterministicHashCodePeopleDirectory))
|
||||
_ = Directory.CreateDirectory(deterministicHashCodePeopleDirectory);
|
||||
else
|
||||
SetOther(resizeFilenameExtension, people, deterministicHashCodePeopleDirectory, skipCollection, peopleCollection);
|
||||
result = Path.Combine(deterministicHashCodeRootDirectory, "()");
|
||||
if (!Directory.Exists(result))
|
||||
_ = Directory.CreateDirectory(result);
|
||||
SetKeyValuePairs(result, deterministicHashCodeCollection, incorrectDeterministicHashCodeCollection, keyValuePairs);
|
||||
deterministicHashCodeCollection = (from l in deterministicHashCodeCollection orderby l.IdAndNormalizedPixelPercentage select l).ToList();
|
||||
if (!Directory.Exists(deterministicHashCodeContentDirectory))
|
||||
_ = Directory.CreateDirectory(deterministicHashCodeContentDirectory);
|
||||
SetKeyValuePairs(deterministicHashCodeContentDirectory, deterministicHashCodeCollection, incorrectDeterministicHashCodeCollection, keyValuePairs);
|
||||
Set(deterministicHashCodeCollection, deterministicHashCodePersonKeys, deterministicHashCodeScope);
|
||||
incorrectDeterministicHashCodeCollection = (from l in incorrectDeterministicHashCodeCollection orderby l.IdAndNormalizedPixelPercentage select l).ToList();
|
||||
foreach ((string personKey, double idAndNormalizedPixelPercentage) in deterministicHashCodeCollection)
|
||||
{
|
||||
if (!deterministicHashCodeScope.ContainsKey(idAndNormalizedPixelPercentage))
|
||||
deterministicHashCodeScope.Add(idAndNormalizedPixelPercentage, new());
|
||||
deterministicHashCodeScope[idAndNormalizedPixelPercentage].Add(personKey);
|
||||
deterministicHashCodePersonKeys.Add(personKey);
|
||||
}
|
||||
deterministicHashCodePersonKeys = deterministicHashCodePersonKeys.Distinct().ToList();
|
||||
foreach ((string personKey, double idAndNormalizedPixelPercentage) in incorrectDeterministicHashCodeCollection)
|
||||
foreach ((PersonBirthday personBirthday, double idAndNormalizedPixelPercentage) in incorrectDeterministicHashCodeCollection)
|
||||
{
|
||||
if (!incorrectDeterministicHashCodeScope.ContainsKey(idAndNormalizedPixelPercentage))
|
||||
incorrectDeterministicHashCodeScope.Add(idAndNormalizedPixelPercentage, new());
|
||||
incorrectDeterministicHashCodeScope[idAndNormalizedPixelPercentage].Add(personKey);
|
||||
incorrectDeterministicHashCodeScope[idAndNormalizedPixelPercentage].Add(personBirthday);
|
||||
}
|
||||
foreach (KeyValuePair<double, List<string>> keyValuePair in deterministicHashCodeScope)
|
||||
{
|
||||
distinctPersonKeys = keyValuePair.Value.Distinct().ToArray();
|
||||
deterministicHashCodeKeyValuePairs.Add(keyValuePair.Key, distinctPersonKeys);
|
||||
}
|
||||
foreach (KeyValuePair<double, List<string>> keyValuePair in incorrectDeterministicHashCodeScope)
|
||||
foreach (KeyValuePair<double, List<PersonBirthday>> keyValuePair in deterministicHashCodeScope)
|
||||
deterministicHashCodeKeyValuePairs.Add(keyValuePair.Key, keyValuePair.Value.Distinct().ToArray());
|
||||
foreach (KeyValuePair<double, List<PersonBirthday>> keyValuePair in incorrectDeterministicHashCodeScope)
|
||||
incorrectDeterministicHashCodeKeyValuePairs.Add(keyValuePair.Key, keyValuePair.Value.Distinct().ToArray());
|
||||
if (peopleCollection.Any())
|
||||
{
|
||||
foreach ((string displayDirectoryName, int? approximateYears, string personKey, PersonBirthday[] personBirthdays) in peopleCollection)
|
||||
foreach ((string displayDirectoryName, int? approximateYears, PersonBirthday[] personBirthdays, long ticks) in peopleCollection)
|
||||
{
|
||||
if (peopleKeyValuePairs.ContainsKey(personKey) && peopleKeyValuePairs[personKey].Item1 != displayDirectoryName)
|
||||
if (peopleKeyValuePairs.ContainsKey(ticks) && peopleKeyValuePairs[ticks].Item1 != displayDirectoryName)
|
||||
throw new NotImplementedException();
|
||||
if (deterministicHashCodeUnknownFacePersonKeys.Contains(personKey) || deterministicHashCodePersonKeys.Contains(personKey))
|
||||
peopleKeyValuePairs.Add(personKey, new(displayDirectoryName, approximateYears, personKey, personBirthdays));
|
||||
if (deterministicHashCodeUnknownFacePersonKeys.Contains(ticks) || deterministicHashCodePersonKeys.Contains(ticks))
|
||||
peopleKeyValuePairs.Add(ticks, new(displayDirectoryName, approximateYears, personBirthdays, ticks));
|
||||
else
|
||||
notMappedPersonKeys.Add(personKey);
|
||||
notMappedPersonKeys.Add(ticks);
|
||||
}
|
||||
}
|
||||
if (deterministicHashCodeUnknownFacePersonKeys.Any() || deterministicHashCodePersonKeys.Any())
|
||||
@ -250,28 +279,23 @@ public class ByDeterministicHashCode
|
||||
int? approximateYears = null;
|
||||
PersonBirthday? personBirthday;
|
||||
const string displayDirectoryName = Property.Models.Stateless.IResult.AllInOne;
|
||||
foreach (string personKey in deterministicHashCodeUnknownFacePersonKeys)
|
||||
foreach (long ticks in deterministicHashCodeUnknownFacePersonKeys)
|
||||
{
|
||||
if (!peopleKeyValuePairs.ContainsKey(personKey))
|
||||
if (!peopleKeyValuePairs.ContainsKey(ticks))
|
||||
{
|
||||
personBirthday = Shared.Models.Stateless.Methods.IPersonBirthday.GetPersonBirthday(personKey);
|
||||
if (personBirthday is null)
|
||||
continue;
|
||||
peopleKeyValuePairs.Add(personKey, new(displayDirectoryName, approximateYears, personKey, new PersonBirthday[] { personBirthday }));
|
||||
personBirthday = Shared.Models.Stateless.Methods.IPersonBirthday.GetPersonBirthday(ticks);
|
||||
peopleKeyValuePairs.Add(ticks, new(displayDirectoryName, approximateYears, new PersonBirthday[] { personBirthday }, ticks));
|
||||
}
|
||||
}
|
||||
foreach (string personKey in deterministicHashCodePersonKeys)
|
||||
foreach (long ticks in deterministicHashCodePersonKeys)
|
||||
{
|
||||
if (!peopleKeyValuePairs.ContainsKey(personKey))
|
||||
if (!peopleKeyValuePairs.ContainsKey(ticks))
|
||||
{
|
||||
personBirthday = Shared.Models.Stateless.Methods.IPersonBirthday.GetPersonBirthday(personKey);
|
||||
if (personBirthday is null)
|
||||
continue;
|
||||
peopleKeyValuePairs.Add(personKey, new(displayDirectoryName, approximateYears, personKey, new PersonBirthday[] { personBirthday }));
|
||||
personBirthday = Shared.Models.Stateless.Methods.IPersonBirthday.GetPersonBirthday(ticks);
|
||||
peopleKeyValuePairs.Add(ticks, new(displayDirectoryName, approximateYears, new PersonBirthday[] { personBirthday }, ticks));
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user