aa/Distance/Models/Stateless/FaceEncodingLogic.cs
Mike Phares 0215e838e7 AA.Compare Project to Match not runToDoCollectionFirst
Removed Layered AppSettings with Nested Objects at First Level
2024-12-28 19:34:09 -07:00

35 lines
1.5 KiB
C#

using System.Collections.ObjectModel;
using System.Text.Json;
using View_by_Distance.Shared.Models;
using View_by_Distance.Shared.Models.Stateless.Methods;
namespace View_by_Distance.Distance.Models.Stateless.Methods;
internal static class FaceEncodingLogic
{
internal static ReadOnlyCollection<ExifDirectory> GetMappedExifDirectoryWithEncoding(ICompare compare, long ticks, ReadOnlyCollection<ExifDirectory> exifDirectories)
{
List<ExifDirectory> results = [];
string? json;
FaceEncoding? faceEncoding;
ExifDirectory exifDirectory;
FaceRecognitionDotNet.FaceEncoding? encoding;
int totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds);
string message = $") Building Mapped with Encoding Face Files Collection - {totalSeconds} total second(s)";
compare.ConstructProgressBar(exifDirectories.Count, message);
foreach (ExifDirectory e in exifDirectories)
{
compare.Tick();
json = Metadata.Models.Stateless.Methods.IMetadata.GetFaceEncoding(e);
faceEncoding = json is null ? null : JsonSerializer.Deserialize<FaceEncoding>(json);
if (faceEncoding is null)
continue;
encoding = FaceRecognitionDotNet.FaceRecognition.LoadFaceEncoding(faceEncoding.RawEncoding);
exifDirectory = ExifDirectory.Get(encoding, e);
results.Add(exifDirectory);
}
return results.AsReadOnly();
}
}