Removed SaveExtraLargeBitmapThumbnail

This commit is contained in:
2022-12-31 18:48:25 -07:00
parent 45f4401fa4
commit 1417d87930
16 changed files with 276 additions and 229 deletions

View File

@ -19,8 +19,6 @@ public class B_Metadata
private readonly bool _ForceMetadataLastWriteTimeToCreationTime;
private readonly JsonSerializerOptions _WriteIndentedJsonSerializerOptions;
public static string DateTimeFormat() => "ddd MMM dd HH:mm:ss yyyy";
public B_Metadata(bool forceMetadataLastWriteTimeToCreationTime, bool propertiesChangedForMetadata)
{
AngleBracketCollection = new List<string>();

View File

@ -1,16 +0,0 @@
namespace View_by_Distance.Metadata.Models.Stateless;
public interface IMetadata
{
string? TestStatic_GetFaceEncoding(IReadOnlyList<MetadataExtractor.Directory> directories) =>
GetFaceEncoding(directories);
static string? GetFaceEncoding(IReadOnlyList<MetadataExtractor.Directory> directories) =>
Metadata.GetFaceEncoding(directories);
string? TestStatic_GetOutputResolution(IReadOnlyList<MetadataExtractor.Directory> directories) =>
GetOutputResolution(directories);
static string? GetOutputResolution(IReadOnlyList<MetadataExtractor.Directory> directories) =>
Metadata.GetOutputResolution(directories);
}

View File

@ -1,50 +0,0 @@
namespace View_by_Distance.Metadata.Models.Stateless;
internal class Metadata
{
internal static string? GetFaceEncoding(IReadOnlyList<MetadataExtractor.Directory> directories)
{
string? result;
List<string> results = new();
const string comment = "Comment: ";
foreach (MetadataExtractor.Directory directory in directories)
{
if (directory.Name != "PNG-tEXt")
continue;
foreach (MetadataExtractor.Tag tag in directory.Tags)
{
if (tag.Name != "Textual Data" || string.IsNullOrEmpty(tag.Description))
continue;
if (!tag.Description.StartsWith(comment))
continue;
results.Add(tag.Description);
}
}
result = results.Any() ? results[0][comment.Length..] : null;
return result;
}
internal static string? GetOutputResolution(IReadOnlyList<MetadataExtractor.Directory> directories)
{
string? result;
List<string> results = new();
const string artist = "Artist: ";
foreach (MetadataExtractor.Directory directory in directories)
{
if (directory.Name != "PNG-tEXt")
continue;
foreach (MetadataExtractor.Tag tag in directory.Tags)
{
if (tag.Name != "Textual Data" || string.IsNullOrEmpty(tag.Description))
continue;
if (!tag.Description.StartsWith(artist))
continue;
results.Add(tag.Description);
}
}
result = results.Any() ? results[0][artist.Length..] : null;
return result;
}
}

View File

@ -0,0 +1,26 @@
namespace View_by_Distance.Metadata.Models.Stateless.Methods;
public interface IMetadata
{
DateTime TestStatic_GetMinimumDateTime(DateTime?[] dateTimes, int year, IReadOnlyList<MetadataExtractor.Directory> directories) =>
GetMinimumDateTime(dateTimes, year, directories);
static DateTime GetMinimumDateTime(DateTime?[] dateTimes, int year, IReadOnlyList<MetadataExtractor.Directory> directories) =>
Metadata.GetMinimumDateTime(dateTimes, year, directories);
string? TestStatic_GetFaceEncoding(IReadOnlyList<MetadataExtractor.Directory> directories) =>
GetFaceEncoding(directories);
static string? GetFaceEncoding(IReadOnlyList<MetadataExtractor.Directory> directories) =>
Metadata.GetFaceEncoding(directories);
string? TestStatic_GetOutputResolution(IReadOnlyList<MetadataExtractor.Directory> directories) =>
GetOutputResolution(directories);
static string? GetOutputResolution(IReadOnlyList<MetadataExtractor.Directory> directories) =>
Metadata.GetOutputResolution(directories);
int TestStatic_GetOrientation(List<KeyValuePair<string, string>> metadataCollection) =>
GetOrientation(metadataCollection);
static int GetOrientation(List<KeyValuePair<string, string>> metadataCollection) =>
Metadata.GetOrientation(metadataCollection);
}

View File

@ -0,0 +1,109 @@
using MetadataExtractor;
using MetadataExtractor.Formats.Avi;
using MetadataExtractor.Formats.Exif;
using MetadataExtractor.Formats.QuickTime;
using View_by_Distance.Shared.Models.Stateless;
namespace View_by_Distance.Metadata.Models.Stateless.Methods;
internal class Metadata
{
internal static string? GetFaceEncoding(IReadOnlyList<MetadataExtractor.Directory> directories)
{
string? result;
List<string> results = new();
const string comment = "Comment: ";
foreach (MetadataExtractor.Directory directory in directories)
{
if (directory.Name != "PNG-tEXt")
continue;
foreach (Tag tag in directory.Tags)
{
if (tag.Name != "Textual Data" || string.IsNullOrEmpty(tag.Description))
continue;
if (!tag.Description.StartsWith(comment))
continue;
results.Add(tag.Description);
}
}
result = results.Any() ? results[0][comment.Length..] : null;
return result;
}
internal static string? GetOutputResolution(IReadOnlyList<MetadataExtractor.Directory> directories)
{
string? result;
List<string> results = new();
const string artist = "Artist: ";
foreach (MetadataExtractor.Directory directory in directories)
{
if (directory.Name != "PNG-tEXt")
continue;
foreach (Tag tag in directory.Tags)
{
if (tag.Name != "Textual Data" || string.IsNullOrEmpty(tag.Description))
continue;
if (!tag.Description.StartsWith(artist))
continue;
results.Add(tag.Description);
}
}
result = results.Any() ? results[0][artist.Length..] : null;
return result;
}
internal static DateTime GetMinimumDateTime(DateTime?[] dateTimes, int year, IReadOnlyList<MetadataExtractor.Directory> directories)
{
DateTime result;
DateTime dateTime;
List<DateTime> results = (from l in dateTimes where l is not null select l.Value).ToList();
ExifSubIfdDirectory? exifSubIfdDirectory = directories.OfType<ExifSubIfdDirectory>().FirstOrDefault();
if (exifSubIfdDirectory is not null)
{
if (exifSubIfdDirectory.TryGetDateTime(ExifDirectoryBase.TagDateTime, out dateTime))
results.Add(dateTime);
if (exifSubIfdDirectory.TryGetDateTime(ExifDirectoryBase.TagDateTimeDigitized, out dateTime))
results.Add(dateTime);
if (exifSubIfdDirectory.TryGetDateTime(ExifDirectoryBase.TagDateTimeOriginal, out dateTime))
results.Add(dateTime);
}
AviDirectory? aviDirectory = directories.OfType<AviDirectory>().FirstOrDefault();
if (aviDirectory is not null)
{
if (aviDirectory.TryGetDateTime(AviDirectory.TagDateTimeOriginal, out dateTime))
results.Add(dateTime);
}
QuickTimeMovieHeaderDirectory? quickTimeMovieHeaderDirectory = directories.OfType<QuickTimeMovieHeaderDirectory>().FirstOrDefault();
if (quickTimeMovieHeaderDirectory is not null)
{
if (quickTimeMovieHeaderDirectory.TryGetDateTime(QuickTimeMovieHeaderDirectory.TagCreated, out dateTime))
results.Add(dateTime);
}
QuickTimeTrackHeaderDirectory? quickTimeTrackHeaderDirectory = directories.OfType<QuickTimeTrackHeaderDirectory>().FirstOrDefault();
if (quickTimeTrackHeaderDirectory is not null)
{
if (quickTimeTrackHeaderDirectory.TryGetDateTime(QuickTimeTrackHeaderDirectory.TagCreated, out dateTime))
results.Add(dateTime);
}
DateTime[] filtered = (from l in results where l.Year >= year select l).ToArray();
if (!filtered.Any())
result = results.Min();
else
result = filtered.Min();
return result;
}
internal static int GetOrientation(List<KeyValuePair<string, string>> metadataCollection)
{
int result;
const string orientation = nameof(IExif.Tags.Orientation);
List<string> orientations = (from l in metadataCollection where l.Key.Contains(orientation) select l.Value).ToList();
if (!orientations.Any())
result = 0;
else if (!int.TryParse(orientations[0], out result))
result = 0;
return result;
}
}