Save Resized Images by Person Key Formatted
for Output Resolutions
This commit is contained in:
@ -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);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user