This commit is contained in:
2023-12-26 18:27:04 -07:00
parent 7ec50dd56e
commit 684ba1f0df
12 changed files with 608 additions and 262 deletions

View File

@ -54,14 +54,26 @@ internal abstract class XDate
{
DateTime? result;
List<DateTime> results = [];
if (exifDirectory.ExifDirectoryBase.DateTimeOriginal is not null)
results.Add(exifDirectory.ExifDirectoryBase.DateTimeOriginal.Value);
if (exifDirectory.AviDirectory.DateTimeOriginal is not null)
results.Add(exifDirectory.AviDirectory.DateTimeOriginal.Value);
if (exifDirectory.QuickTimeMovieHeaderDirectory.Created is not null)
results.Add(exifDirectory.QuickTimeMovieHeaderDirectory.Created.Value);
if (exifDirectory.QuickTimeTrackHeaderDirectory.Created is not null)
results.Add(exifDirectory.QuickTimeTrackHeaderDirectory.Created.Value);
foreach (ExifDirectoryBase exifDirectoryBase in exifDirectory.ExifBaseDirectories)
{
if (exifDirectoryBase.DateTimeOriginal is not null)
results.Add(exifDirectoryBase.DateTimeOriginal.Value);
}
foreach (AviDirectory aviDirectory in exifDirectory.AviDirectories)
{
if (aviDirectory.DateTimeOriginal is not null)
results.Add(aviDirectory.DateTimeOriginal.Value);
}
foreach (QuickTimeMovieHeaderDirectory quickTimeMovieHeaderDirectory in exifDirectory.QuickTimeMovieHeaderDirectories)
{
if (quickTimeMovieHeaderDirectory.Created is not null)
results.Add(quickTimeMovieHeaderDirectory.Created.Value);
}
foreach (QuickTimeTrackHeaderDirectory quickTimeTrackHeaderDirectory in exifDirectory.QuickTimeTrackHeaderDirectories)
{
if (quickTimeTrackHeaderDirectory.Created is not null)
results.Add(quickTimeTrackHeaderDirectory.Created.Value);
}
result = results.Count == 0 ? null : results.Min();
return result;
}
@ -121,27 +133,48 @@ internal abstract class XDate
{
DateTime result;
List<DateTime> results = [];
if (exifDirectory.ExifDirectoryBase.DateTimeOriginal is not null)
results.Add(exifDirectory.ExifDirectoryBase.DateTimeOriginal.Value);
if (exifDirectory.AviDirectory.DateTimeOriginal is not null)
results.Add(exifDirectory.AviDirectory.DateTimeOriginal.Value);
if (exifDirectory.QuickTimeMovieHeaderDirectory.Created is not null)
results.Add(exifDirectory.QuickTimeMovieHeaderDirectory.Created.Value);
if (exifDirectory.QuickTimeTrackHeaderDirectory.Created is not null)
results.Add(exifDirectory.QuickTimeTrackHeaderDirectory.Created.Value);
foreach (ExifDirectoryBase exifDirectoryBase in exifDirectory.ExifBaseDirectories)
{
if (exifDirectoryBase.DateTimeOriginal is not null)
results.Add(exifDirectoryBase.DateTimeOriginal.Value);
}
foreach (AviDirectory aviDirectory in exifDirectory.AviDirectories)
{
if (aviDirectory.DateTimeOriginal is not null)
results.Add(aviDirectory.DateTimeOriginal.Value);
}
foreach (QuickTimeMovieHeaderDirectory quickTimeMovieHeaderDirectory in exifDirectory.QuickTimeMovieHeaderDirectories)
{
if (quickTimeMovieHeaderDirectory.Created is not null)
results.Add(quickTimeMovieHeaderDirectory.Created.Value);
}
foreach (QuickTimeTrackHeaderDirectory quickTimeTrackHeaderDirectory in exifDirectory.QuickTimeTrackHeaderDirectories)
{
if (quickTimeTrackHeaderDirectory.Created is not null)
results.Add(quickTimeTrackHeaderDirectory.Created.Value);
}
if (results.Count == 0)
{
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(exifDirectory.OriginalFileName);
DateTime? dateTime = GetDateTimeFromName(fileNameWithoutExtension);
if (dateTime is not null)
results.Add(dateTime.Value);
if (exifDirectory.ExifDirectoryBase.DateTime is not null)
results.Add(exifDirectory.ExifDirectoryBase.DateTime.Value);
if (exifDirectory.ExifDirectoryBase.DateTimeDigitized is not null)
results.Add(exifDirectory.ExifDirectoryBase.DateTimeDigitized.Value);
foreach (ExifDirectoryBase exifDirectoryBase in exifDirectory.ExifBaseDirectories)
{
if (exifDirectoryBase.DateTime is not null)
results.Add(exifDirectoryBase.DateTime.Value);
if (exifDirectoryBase.DateTimeDigitized is not null)
results.Add(exifDirectoryBase.DateTimeDigitized.Value);
}
}
if (results.Count == 0)
{
foreach (FileMetadataDirectory fileMetadataDirectory in exifDirectory.FileMetadataDirectories)
{
if (fileMetadataDirectory.FileModifiedDate is not null)
results.Add(fileMetadataDirectory.FileModifiedDate.Value);
}
}
if (results.Count == 0 && exifDirectory.FileMetadataDirectory.FileModifiedDate is not null)
results.Add(exifDirectory.FileMetadataDirectory.FileModifiedDate.Value);
result = results.Count == 0 ? DateTime.MinValue : results.Min();
return result;
}