55 lines
2.3 KiB
C#
55 lines
2.3 KiB
C#
using File_Folder_Helper.Models;
|
|
using File_Folder_Helper.Models.Exif;
|
|
using File_Folder_Helper.Models.Face;
|
|
using Microsoft.Extensions.Logging;
|
|
using System.Collections.ObjectModel;
|
|
using System.Text.Json;
|
|
|
|
namespace File_Folder_Helper.Helpers.Exif;
|
|
|
|
internal static class HelperExif
|
|
{
|
|
|
|
private static ReadOnlyCollection<FaceFile> GetCollection(ExifDirectoryBase[]? exifDirectoryBases)
|
|
{
|
|
List<FaceFile> results = [];
|
|
if (exifDirectoryBases is not null)
|
|
{
|
|
string? json;
|
|
FaceFile[]? collection;
|
|
foreach (ExifDirectoryBase exifDirectoryBase in exifDirectoryBases)
|
|
{
|
|
json = exifDirectoryBase.Artist;
|
|
if (string.IsNullOrEmpty(json))
|
|
continue;
|
|
collection = JsonSerializer.Deserialize(json, FaceFileCollectionGenerationContext.Default.FaceFileArray);
|
|
if (collection is null)
|
|
continue;
|
|
results.AddRange(collection);
|
|
}
|
|
}
|
|
return new(results);
|
|
}
|
|
|
|
internal static void DragAndDrop(ILogger<Worker> logger, string argZero)
|
|
{
|
|
FileInfo fileInfo = new(argZero);
|
|
logger.LogInformation("<{argZero}> exists", argZero);
|
|
ExifDirectory exifDirectory = Exif.GetExifDirectory(fileInfo);
|
|
string directory = Path.GetDirectoryName(argZero) ?? throw new Exception();
|
|
string[] files = Directory.GetFiles(directory, "*.json", SearchOption.TopDirectoryOnly);
|
|
string? json = files.Length != 1 ? string.Empty : File.ReadAllText(files[0]);
|
|
ReadOnlyCollection<FaceFile> collection = GetCollection(exifDirectory.ExifBaseDirectories);
|
|
logger.LogInformation("<{collection}> value", collection.Count);
|
|
Dictionary<long, Person>? people = string.IsNullOrEmpty(json) ? [] : JsonSerializer.Deserialize(json, PeopleSourceGenerationContext.Default.DictionaryInt64Person) ?? throw new NullReferenceException();
|
|
logger.LogInformation("<{people}> value", people?.Count);
|
|
foreach (FaceFile faceFile in collection)
|
|
{
|
|
if (faceFile.MappingFromPerson is null)
|
|
logger.LogInformation("<{Confidence}> value", faceFile.Location?.Confidence);
|
|
else
|
|
logger.LogInformation("<{DisplayDirectoryName}> value", faceFile.MappingFromPerson.DisplayDirectoryName);
|
|
}
|
|
}
|
|
|
|
} |