Save Resized Images by Person Key Formatted

for Output Resolutions
This commit is contained in:
2022-10-02 10:40:32 -07:00
parent 9b8e3bdf55
commit 331d42685a
15 changed files with 125 additions and 141 deletions

View File

@ -167,9 +167,9 @@ public class MapLogic
using ProgressBar progressBar = new(saveContainers.Count, message, options);
foreach (SaveContainer saveContainer in saveContainers)
{
progressBar.Tick();
if (string.IsNullOrEmpty(saveContainer.Directory) || string.IsNullOrEmpty(saveContainer.CheckFile) || saveContainer.FaceFileHolder is null)
continue;
progressBar.Tick();
if (!saveContainer.FaceFileHolder.Exists && saveContainer.ResizedFileHolder is not null && saveContainer.ResizedFileHolder.Exists)
{
checkFile = saveContainer.CheckFile;
@ -200,6 +200,16 @@ public class MapLogic
File.Copy(sourceFile, checkFile);
}
foreach (SaveContainer saveContainer in saveContainers)
{
if (string.IsNullOrEmpty(saveContainer.Directory) || string.IsNullOrEmpty(saveContainer.CheckFile) || saveContainer.ResizedFileHolder is null || !saveContainer.ResizedFileHolder.Exists)
continue;
checkFile = saveContainer.CheckFile;
sourceFile = saveContainer.ResizedFileHolder.FullName;
if (File.Exists(checkFile))
continue;
File.Copy(sourceFile, checkFile);
}
foreach (SaveContainer saveContainer in saveContainers)
{
if (string.IsNullOrEmpty(saveContainer.ShortcutFile) || saveContainer.ResizedFileHolder is null || !saveContainer.ResizedFileHolder.Exists)
continue;
@ -598,8 +608,8 @@ public class MapLogic
int? normalizedPixelPercentage;
WindowsShortcut windowsShortcut;
string by = nameof(IMapLogic.ManualCopy);
Dictionary<int, PersonContainer[]>? keyValuePairs;
Dictionary<int, Mapping>? normalizedPixelPercentageToMapping;
Dictionary<int, PersonContainer[]>? normalizedPixelPercentageToPeronContainerCollection;
string successfull = $"_ {nameof(IMapLogic.ManualCopy).Humanize(LetterCasing.Title)} Successfull";
foreach (KeyValuePair<long, PersonContainer> keyValuePair in _PersonKeyToPersonContainer)
{
@ -613,11 +623,6 @@ public class MapLogic
(id, normalizedPixelPercentage, _) = IMapping.GetReversedDeterministicHashCodeKey(_Configuration.FacesFileNameExtension, personDisplayDirectoryAllFile);
if (id is null || normalizedPixelPercentage is null)
continue;
if (_IdThenNormalizedPixelPercentageToPersonContainers.TryGetValue(id.Value, out keyValuePairs))
{
if (keyValuePairs.ContainsKey(normalizedPixelPercentage.Value))
continue;
}
fileInfo = new(personDisplayDirectoryAllFile);
if (!fileInfo.Exists)
continue;
@ -641,17 +646,23 @@ public class MapLogic
facesDirectory = Path.Combine($"{dFacesContentDirectory}{directoryName}", mapping.MappingFromItem.ImageFileHolder.NameWithoutExtension);
faceFileName = $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}{_Configuration.FacesFileNameExtension}";
checkFile = Path.Combine(directory, fileInfo.Name);
if (!Directory.Exists(personDirectory))
_ = Directory.CreateDirectory(personDirectory);
if (!File.Exists(checkFile))
File.Copy(personDisplayDirectoryAllFile, checkFile);
if (!_IdThenNormalizedPixelPercentageToPersonContainers.TryGetValue(id.Value, out normalizedPixelPercentageToPeronContainerCollection) || !normalizedPixelPercentageToPeronContainerCollection.ContainsKey(normalizedPixelPercentage.Value))
{
if (!Directory.Exists(personDirectory))
_ = Directory.CreateDirectory(personDirectory);
if (!File.Exists(checkFile))
File.Copy(personDisplayDirectoryAllFile, checkFile);
}
if (personDisplayDirectoryAllFile.Contains(successfull))
continue;
directoryName = Path.Combine(personDisplayDirectory, successfull);
if (!Directory.Exists(directoryName))
_ = Directory.CreateDirectory(directoryName);
checkFile = Path.Combine(directoryName, personDisplayFileName);
File.Move(personDisplayDirectoryAllFile, checkFile);
if (File.Exists(checkFile))
File.Delete(personDisplayDirectoryAllFile);
else
File.Move(personDisplayDirectoryAllFile, checkFile);
faceFile = Path.Combine(facesDirectory, faceFileName);
if (!File.Exists(faceFile))
continue;
@ -693,113 +704,59 @@ public class MapLogic
SaveContainers(totalNotMapped, updated, saveContainers);
}
private List<(Mapping, List<(string?, string, string?, string?, string)>)> GetCollection(Mapping[] mappingCollection)
private (FileHolder, string, string, string, string)[] GetCollection(Mapping[] mappingCollection)
{
if (_Configuration is null)
throw new NullReferenceException(nameof(_Configuration));
List<(Mapping, List<(string?, string, string?, string?, string)>)> results = new();
int years;
(FileHolder, string, string, string, string)[] results;
string checkFile;
string directory;
TimeSpan? timeSpan;
string? copyFileName;
string? relativePath;
string? copyDirectory;
string isWrongYearFlag;
string shortcutFileName;
string subDirectoryName;
string? directoryName;
string personDirectory;
string personKeyFormatted;
DateTime dateTime = DateTime.Now;
PersonContainer[] personContainers;
Dictionary<int, PersonContainer[]>? idToPersonContainers;
List<(string?, string, string?, string?, string)> collection;
List<(FileHolder ResizedFileHolder, string PersonKeyFormatted, string CheckFile, string Directory, string PersonDirectory)> collection = new();
foreach (Mapping mapping in mappingCollection)
{
collection = new();
copyFileName = null;
copyDirectory = null;
relativePath = Path.GetDirectoryName($"C:{mapping.MappingFromItem.RelativePath}");
if (string.IsNullOrEmpty(relativePath) || relativePath.Length < 3)
directoryName = Path.GetDirectoryName(mapping.MappingFromItem.RelativePath);
if (directoryName is null)
throw new NotSupportedException();
if (mapping.By is null or IMapLogic.Sorting)
continue;
if (!_IdThenNormalizedPixelPercentageToPersonContainers.TryGetValue(mapping.MappingFromItem.Id, out idToPersonContainers))
{
directory = Path.Combine(_EDistanceContentTicksDirectory, $"Unnamed{relativePath[2..]}");
shortcutFileName = Path.Combine(directory, $"{mapping.MappingFromItem.Id}.lnk");
collection.Add(new(null, directory, copyDirectory, copyFileName, shortcutFileName));
}
else
{
if (!idToPersonContainers.ContainsKey(mapping.MappingFromLocation.NormalizedPixelPercentage))
continue;
isWrongYearFlag = IItem.GetWrongYearFlag(mapping.MappingFromItem.IsWrongYear);
subDirectoryName = $"{isWrongYearFlag}{mapping.MappingFromItem.MinimumDateTime:yyyy}";
personContainers = idToPersonContainers[mapping.MappingFromLocation.NormalizedPixelPercentage];
foreach (PersonContainer personContainer in personContainers)
{
if (personContainers.Length != 1)
break;
if (personContainer.Key is null || personContainer.Birthdays is null || !personContainer.Birthdays.Any())
continue;
foreach (PersonBirthday personBirthday in personContainer.Birthdays)
{
timeSpan = IPersonBirthday.GetTimeSpan(mapping.MappingFromItem.MinimumDateTime, mapping.MappingFromItem.IsWrongYear, personBirthday);
if (timeSpan.HasValue)
{
if (timeSpan.Value.Ticks < 0)
subDirectoryName = "!---";
else
{
(years, _) = IPersonBirthday.GetAge(dateTime, personBirthday);
subDirectoryName = $"^{years:000}";
}
}
personKeyFormatted = IPersonBirthday.GetFormatted(_Configuration.PersonBirthdayFormat, personBirthday);
directory = Path.Combine(_EDistanceContentTicksDirectory, "Shortcuts", personKeyFormatted, subDirectoryName);
copyDirectory = Path.Combine(_EDistanceContentTicksDirectory, "Images", personKeyFormatted, subDirectoryName);
copyFileName = Path.Combine(copyDirectory, $"{mapping.MappingFromItem.Id}{mapping.MappingFromItem.ResizedFileHolder.ExtensionLowered}");
shortcutFileName = Path.Combine(directory, $"{mapping.MappingFromItem.Id}.lnk");
collection.Add(new(personKeyFormatted, directory, copyDirectory, copyFileName, shortcutFileName));
}
}
if (!collection.Any())
{
copyFileName = null;
copyDirectory = null;
directory = Path.Combine(_EDistanceContentTicksDirectory, $"Not Supported{relativePath[2..]}", subDirectoryName);
shortcutFileName = Path.Combine(directory, $"{mapping.MappingFromItem.Id}.lnk");
collection.Add(new(null, directory, copyDirectory, copyFileName, shortcutFileName));
}
}
results.Add(new(mapping, collection));
if (mapping.MappingFromPerson is null)
continue;
if (string.IsNullOrEmpty(mapping.MappingFromPerson.SegmentB))
throw new NotSupportedException();
if (string.IsNullOrEmpty(mapping.MappingFromPerson.DisplayDirectoryName))
throw new NotSupportedException();
personKeyFormatted = IPersonBirthday.GetFormatted(_Configuration.PersonBirthdayFormat, mapping.MappingFromPerson.PersonBirthday);
directory = Path.Combine(_EDistanceContentTicksDirectory, "Images", personKeyFormatted);
personDirectory = Path.Combine(directory, mapping.MappingFromPerson.DisplayDirectoryName);
checkFile = Path.Combine(directory, $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}");
collection.Add(new(mapping.MappingFromItem.ResizedFileHolder, personKeyFormatted, checkFile, directory, personDirectory));
}
results = (from l in collection orderby l.PersonKeyFormatted descending select l).ToArray();
return results;
}
public void SaveShortcuts(string[] juliePhares, Mapping[] mappingCollection)
public void SaveResizedImagesByPersonKeyFormatted(string[] juliePhares, Mapping[] mappingCollection, int totalNotMapped)
{
if (_Configuration is null)
throw new NullReferenceException(nameof(_Configuration));
List<(Mapping, List<(string?, string, string?, string?, string)>)> facesToCollection = GetCollection(mappingCollection);
foreach ((Mapping mapping, List<(string? PersonKeyFormatted, string, string?, string?, string)> collection) in facesToCollection)
List<SaveContainer> saveContainers = new();
SaveContainer? saveContainer;
(FileHolder, string, string, string, string)[] collection = GetCollection(mappingCollection);
foreach ((FileHolder resizedFileHolder, string personKeyFormatted, string checkFile, string directory, string personDirectory) in collection)
{
if (collection.Any(l => l.PersonKeyFormatted is not null and "1501-04-10_00"))
if (personKeyFormatted == "1501-04-10_00")
continue;
foreach ((string? personKeyFormatted, string directory, string? copyDirectory, string? copyFileName, string _) in collection)
{
if (personKeyFormatted is null)
continue;
if (!Directory.Exists(directory))
_ = Directory.CreateDirectory(directory);
if (string.IsNullOrEmpty(copyDirectory) || string.IsNullOrEmpty(copyFileName))
continue;
if (!juliePhares.Contains(personKeyFormatted))
continue;
if (!Directory.Exists(copyDirectory))
_ = Directory.CreateDirectory(copyDirectory);
if (!File.Exists(copyFileName))
File.Copy(mapping.MappingFromItem.ResizedFileHolder.FullName, copyFileName);
break;
}
if (!juliePhares.Contains(personKeyFormatted))
continue;
saveContainer = new(personDirectory);
saveContainers.Add(saveContainer);
saveContainer = new(resizedFileHolder, checkFile, directory);
saveContainers.Add(saveContainer);
}
SaveContainers(totalNotMapped, null, saveContainers);
}
}