using System.Collections.ObjectModel; using System.Text.Json; using View_by_Distance.Shared.Models; using View_by_Distance.Shared.Models.Stateless; namespace View_by_Distance.Distance.Models.Stateless; internal static class FaceEncodingLogic { internal static ReadOnlyCollection GetMappedExifDirectoryWithEncoding(ICompare compare, long ticks, ReadOnlyCollection exifDirectories) { List results = []; string? json; FaceEncoding? faceEncoding; ExifDirectory exifDirectory; FaceRecognitionDotNet.Models.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.IMetadata.GetFaceEncoding(e); faceEncoding = json is null ? null : JsonSerializer.Deserialize(json, FaceEncodingGenerationContext.Default.FaceEncoding); if (faceEncoding is null) continue; encoding = FaceRecognitionDotNet.Models.FaceRecognition.LoadFaceEncoding(faceEncoding.RawEncoding); exifDirectory = ExifDirectory.Get(encoding, e); results.Add(exifDirectory); } return results.AsReadOnly(); } }