Rebuilt and moved CopyManualFiles closer
This commit is contained in:
parent
5582504c4b
commit
8b4d5248cb
@ -54,12 +54,24 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
ReadOnlyCollection<string> readOnlyPersonKeyFormattedCollection;
|
||||||
|
ReadOnlyDictionary<string, string> readOnlyPersonKeyFormattedToNewestPersonKeyFormatted;
|
||||||
ReadOnlyDictionary<string, PersonContainer> readOnlyPersonKeyFormattedToPersonContainer;
|
ReadOnlyDictionary<string, PersonContainer> readOnlyPersonKeyFormattedToPersonContainer;
|
||||||
ReadOnlyDictionary<long, List<PersonContainer>> readOnlyPersonKeyToPersonContainerCollection;
|
ReadOnlyDictionary<long, List<PersonContainer>> readOnlyPersonKeyToPersonContainerCollection;
|
||||||
|
int copied = Stateless.MapLogic.CopyManualFiles(configuration, ticks, personContainers, eDistanceContentTicksDirectory);
|
||||||
|
if (copied > 0)
|
||||||
|
throw new Exception("Confirm Manual files and then restart!");
|
||||||
Stateless.MapLogic.SetSkipCollections(configuration, personContainers, a2PeopleSingletonDirectory, skipCollection, skipNotSkipCollection);
|
Stateless.MapLogic.SetSkipCollections(configuration, personContainers, a2PeopleSingletonDirectory, skipCollection, skipNotSkipCollection);
|
||||||
List<Stateless.MapLogic.Record> records = Stateless.MapLogic.SetPersonCollectionsAndGetRecords(configuration, ticks, personContainers, eDistanceContentDirectory);
|
{
|
||||||
|
List<string> personKeyFormattedCollection = new();
|
||||||
|
Dictionary<string, string> personKeyFormattedToNewestPersonKeyFormatted = new();
|
||||||
|
Stateless.MapLogic.SetPersonCollections(configuration, personContainers, personKeyFormattedToNewestPersonKeyFormatted, personKeyFormattedCollection);
|
||||||
|
readOnlyPersonKeyFormattedCollection = new(personKeyFormattedCollection);
|
||||||
|
readOnlyPersonKeyFormattedToNewestPersonKeyFormatted = new(personKeyFormattedToNewestPersonKeyFormatted);
|
||||||
|
}
|
||||||
|
List<Stateless.MapLogic.Record> records = Stateless.MapLogic.DeleteEmptyDirectoriesAndGetCollection(configuration, ticks, eDistanceContentDirectory, readOnlyPersonKeyFormattedToNewestPersonKeyFormatted, readOnlyPersonKeyFormattedCollection);
|
||||||
ReadOnlyCollection<(Stateless.MapLogic.PersonKeyFormattedIdThenWholePercentages, PersonContainer)> readOnlyPossiblyNewPersonDisplayDirectoryNamesAndPersonContainer;
|
ReadOnlyCollection<(Stateless.MapLogic.PersonKeyFormattedIdThenWholePercentages, PersonContainer)> readOnlyPossiblyNewPersonDisplayDirectoryNamesAndPersonContainer;
|
||||||
locationContainers.AddRange(Stateless.MapLogic.GetLocationContainers(distance, maxDegreeOfParallelism, configuration, ticks, personContainers, eDistanceContentDirectory, eDistanceContentTicksDirectory, skipCollection, records));
|
locationContainers.AddRange(Stateless.MapLogic.GetLocationContainers(distance, maxDegreeOfParallelism, configuration, ticks, personContainers, eDistanceContentDirectory, skipCollection, records));
|
||||||
int lossCount = records.Count - locationContainers.Count;
|
int lossCount = records.Count - locationContainers.Count;
|
||||||
ReadOnlyCollection<Stateless.MapLogic.PersonKeyFormattedIdThenWholePercentages> personKeyFormattedIdThenWholePercentagesCollection = Stateless.MapLogic.GetPersonKeyFormattedIdThenWholePercentages(configuration, ticks, records);
|
ReadOnlyCollection<Stateless.MapLogic.PersonKeyFormattedIdThenWholePercentages> personKeyFormattedIdThenWholePercentagesCollection = Stateless.MapLogic.GetPersonKeyFormattedIdThenWholePercentages(configuration, ticks, records);
|
||||||
int unableToMatchCount = records.Count - personKeyFormattedIdThenWholePercentagesCollection.Count;
|
int unableToMatchCount = records.Count - personKeyFormattedIdThenWholePercentagesCollection.Count;
|
||||||
|
@ -80,7 +80,7 @@ internal abstract class MapLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetPersonCollections(Configuration configuration, ReadOnlyCollection<PersonContainer> personContainers, Dictionary<string, string> personKeyFormattedToNewestPersonKeyFormatted, List<string> personKeyFormattedCollection)
|
internal static void SetPersonCollections(Configuration configuration, ReadOnlyCollection<PersonContainer> personContainers, Dictionary<string, string> personKeyFormattedToNewestPersonKeyFormatted, List<string> personKeyFormattedCollection)
|
||||||
{
|
{
|
||||||
string personKeyFormatted;
|
string personKeyFormatted;
|
||||||
string newestPersonKeyFormatted;
|
string newestPersonKeyFormatted;
|
||||||
@ -246,7 +246,7 @@ internal abstract class MapLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<Record> DeleteEmptyDirectoriesAndGetCollection(Configuration configuration, long ticks, string eDistanceContentDirectory, ReadOnlyDictionary<string, string> personKeyFormattedToNewestPersonKeyFormatted, ReadOnlyCollection<string> personKeyFormattedCollection)
|
internal static List<Record> DeleteEmptyDirectoriesAndGetCollection(Configuration configuration, long ticks, string eDistanceContentDirectory, ReadOnlyDictionary<string, string> personKeyFormattedToNewestPersonKeyFormatted, ReadOnlyCollection<string> personKeyFormattedCollection)
|
||||||
{
|
{
|
||||||
List<Record> results = new();
|
List<Record> results = new();
|
||||||
int? id;
|
int? id;
|
||||||
@ -826,20 +826,11 @@ internal abstract class MapLogic
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<(long, int?, string)> GetDisplayDirectoryAllFiles(string fileNameExtension, string personBirthdayFormat, long ticks, string eDistanceContentTicksDirectory, ReadOnlyCollection<PersonContainer> personContainers)
|
private static List<(long, int?, string)> GetDisplayDirectoryAllFiles(string fileNameExtension, ReadOnlyCollection<PersonContainer> personContainers)
|
||||||
{
|
{
|
||||||
List<(long, int?, string)> results = new();
|
List<(long, int?, string)> results = new();
|
||||||
string fileName;
|
string fileName;
|
||||||
string checkFile;
|
|
||||||
string? directory;
|
|
||||||
string dateDirectory;
|
|
||||||
string directoryName;
|
|
||||||
string checkDirectory;
|
|
||||||
string personKeyFormatted;
|
|
||||||
PersonBirthday personBirthday;
|
|
||||||
List<string> distinct = new();
|
List<string> distinct = new();
|
||||||
DateTime dateTime = new(ticks);
|
|
||||||
string by = nameof(Shared.Models.Stateless.IMapLogic.ManualCopy);
|
|
||||||
foreach (PersonContainer personContainer in personContainers)
|
foreach (PersonContainer personContainer in personContainers)
|
||||||
{
|
{
|
||||||
if (personContainer.Key is null)
|
if (personContainer.Key is null)
|
||||||
@ -853,30 +844,12 @@ internal abstract class MapLogic
|
|||||||
continue;
|
continue;
|
||||||
distinct.Add(fileName);
|
distinct.Add(fileName);
|
||||||
results.Add(new(personContainer.Key.Value, null, personContainer.DisplayDirectoryAllFiles[i]));
|
results.Add(new(personContainer.Key.Value, null, personContainer.DisplayDirectoryAllFiles[i]));
|
||||||
directory = Path.GetDirectoryName(personContainer.DisplayDirectoryAllFiles[i]);
|
|
||||||
if (string.IsNullOrEmpty(directory))
|
|
||||||
continue;
|
|
||||||
directoryName = Path.GetFileName(directory);
|
|
||||||
if (directoryName != personContainer.DisplayDirectoryName)
|
|
||||||
continue;
|
|
||||||
personBirthday = IPersonBirthday.GetPersonBirthday(personContainer.Key.Value);
|
|
||||||
personKeyFormatted = IPersonBirthday.GetFormatted(personBirthdayFormat, personBirthday);
|
|
||||||
dateDirectory = Path.Combine(eDistanceContentTicksDirectory, by, personKeyFormatted, dateTime.ToString("yyyy"));
|
|
||||||
checkDirectory = Path.Combine(dateDirectory, personContainer.DisplayDirectoryName);
|
|
||||||
if (!Directory.Exists(checkDirectory))
|
|
||||||
_ = Directory.CreateDirectory(checkDirectory);
|
|
||||||
checkFile = Path.Combine(dateDirectory, fileName);
|
|
||||||
if (File.Exists(checkFile))
|
|
||||||
continue;
|
|
||||||
File.Move(personContainer.DisplayDirectoryAllFiles[i], checkFile);
|
|
||||||
results.RemoveAt(results.Count - 1);
|
|
||||||
personContainer.DisplayDirectoryAllFiles[i] = string.Empty;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<(long PersonKey, int? DirectoryNumber, string File)> GetCollection(Configuration configuration, long ticks, string eDistanceContentTicksDirectory, ReadOnlyCollection<PersonContainer> personContainers, List<Record> records)
|
private static List<(long PersonKey, int? DirectoryNumber, string File)> GetCollection(Configuration configuration, ReadOnlyCollection<PersonContainer> personContainers, List<Record> records)
|
||||||
{
|
{
|
||||||
List<(long PersonKey, int? DirectoryNumber, string File)> results = new();
|
List<(long PersonKey, int? DirectoryNumber, string File)> results = new();
|
||||||
string file;
|
string file;
|
||||||
@ -884,7 +857,7 @@ internal abstract class MapLogic
|
|||||||
string fileName;
|
string fileName;
|
||||||
List<string> distinct = new();
|
List<string> distinct = new();
|
||||||
PersonBirthday? personBirthday;
|
PersonBirthday? personBirthday;
|
||||||
results.AddRange(GetDisplayDirectoryAllFiles(configuration.FacesFileNameExtension, configuration.PersonBirthdayFormat, ticks, eDistanceContentTicksDirectory, personContainers));
|
results.AddRange(GetDisplayDirectoryAllFiles(configuration.FacesFileNameExtension, personContainers));
|
||||||
foreach (Record record in records)
|
foreach (Record record in records)
|
||||||
{
|
{
|
||||||
personBirthday = IPersonBirthday.GetPersonBirthday(configuration.PersonBirthdayFormat, record.PersonKeyFormatted);
|
personBirthday = IPersonBirthday.GetPersonBirthday(configuration.PersonBirthdayFormat, record.PersonKeyFormatted);
|
||||||
@ -1021,10 +994,10 @@ internal abstract class MapLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static List<LocationContainer<MetadataExtractor.Directory>> GetLocationContainers(Shared.Models.Methods.IDistance<MetadataExtractor.Directory> distance, int maxDegreeOfParallelism, Configuration configuration, long ticks, ReadOnlyCollection<PersonContainer> personContainers, string eDistanceContentDirectory, string eDistanceContentTicksDirectory, Dictionary<int, List<(string, int)>> skipCollection, List<Record> records)
|
internal static List<LocationContainer<MetadataExtractor.Directory>> GetLocationContainers(Shared.Models.Methods.IDistance<MetadataExtractor.Directory> distance, int maxDegreeOfParallelism, Configuration configuration, long ticks, ReadOnlyCollection<PersonContainer> personContainers, string eDistanceContentDirectory, Dictionary<int, List<(string, int)>> skipCollection, List<Record> records)
|
||||||
{
|
{
|
||||||
List<LocationContainer<MetadataExtractor.Directory>> results = new();
|
List<LocationContainer<MetadataExtractor.Directory>> results = new();
|
||||||
List<(long PersonKey, int? DirectoryNumber, string File)> collection = GetCollection(configuration, ticks, eDistanceContentTicksDirectory, personContainers, records);
|
List<(long PersonKey, int? DirectoryNumber, string File)> collection = GetCollection(configuration, personContainers, records);
|
||||||
if (collection.Count > 0 && (configuration.DistanceMoveUnableToMatch || configuration.DistanceRenameToMatch))
|
if (collection.Count > 0 && (configuration.DistanceMoveUnableToMatch || configuration.DistanceRenameToMatch))
|
||||||
{
|
{
|
||||||
int totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds);
|
int totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds);
|
||||||
@ -1045,14 +1018,53 @@ internal abstract class MapLogic
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static List<Record> SetPersonCollectionsAndGetRecords(Configuration configuration, long ticks, ReadOnlyCollection<PersonContainer> personContainers, string eDistanceContentDirectory)
|
internal static int CopyManualFiles(Configuration configuration, long ticks, ReadOnlyCollection<PersonContainer> personContainers, string eDistanceContentTicksDirectory)
|
||||||
{
|
{
|
||||||
List<Record> results;
|
int result = 0;
|
||||||
List<string> personKeyFormattedCollection = new();
|
string fileName;
|
||||||
Dictionary<string, string> personKeyFormattedToNewestPersonKeyFormatted = new();
|
string checkFile;
|
||||||
SetPersonCollections(configuration, personContainers, personKeyFormattedToNewestPersonKeyFormatted, personKeyFormattedCollection);
|
string? directory;
|
||||||
results = DeleteEmptyDirectoriesAndGetCollection(configuration, ticks, eDistanceContentDirectory, new(personKeyFormattedToNewestPersonKeyFormatted), new(personKeyFormattedCollection));
|
string dateDirectory;
|
||||||
return results;
|
string directoryName;
|
||||||
|
string checkDirectory;
|
||||||
|
string personKeyFormatted;
|
||||||
|
PersonBirthday personBirthday;
|
||||||
|
List<string> distinct = new();
|
||||||
|
DateTime dateTime = new(ticks);
|
||||||
|
string by = nameof(Shared.Models.Stateless.IMapLogic.ManualCopy);
|
||||||
|
foreach (PersonContainer personContainer in personContainers)
|
||||||
|
{
|
||||||
|
if (personContainer.Key is null)
|
||||||
|
continue;
|
||||||
|
for (int i = personContainer.DisplayDirectoryAllFiles.Length - 1; i > -1; i--)
|
||||||
|
{
|
||||||
|
if (!personContainer.DisplayDirectoryAllFiles[i].EndsWith(configuration.FacesFileNameExtension))
|
||||||
|
continue;
|
||||||
|
fileName = Path.GetFileName(personContainer.DisplayDirectoryAllFiles[i]);
|
||||||
|
if (distinct.Contains(fileName))
|
||||||
|
continue;
|
||||||
|
distinct.Add(fileName);
|
||||||
|
directory = Path.GetDirectoryName(personContainer.DisplayDirectoryAllFiles[i]);
|
||||||
|
if (string.IsNullOrEmpty(directory))
|
||||||
|
continue;
|
||||||
|
directoryName = Path.GetFileName(directory);
|
||||||
|
if (directoryName != personContainer.DisplayDirectoryName)
|
||||||
|
continue;
|
||||||
|
personBirthday = IPersonBirthday.GetPersonBirthday(personContainer.Key.Value);
|
||||||
|
personKeyFormatted = IPersonBirthday.GetFormatted(configuration.PersonBirthdayFormat, personBirthday);
|
||||||
|
dateDirectory = Path.Combine(eDistanceContentTicksDirectory, by, personKeyFormatted, dateTime.ToString("yyyy"));
|
||||||
|
checkDirectory = Path.Combine(dateDirectory, personContainer.DisplayDirectoryName);
|
||||||
|
if (!Directory.Exists(checkDirectory))
|
||||||
|
_ = Directory.CreateDirectory(checkDirectory);
|
||||||
|
checkFile = Path.Combine(dateDirectory, fileName);
|
||||||
|
if (File.Exists(checkFile))
|
||||||
|
continue;
|
||||||
|
File.Move(personContainer.DisplayDirectoryAllFiles[i], checkFile);
|
||||||
|
personContainer.DisplayDirectoryAllFiles[i] = string.Empty;
|
||||||
|
result++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string GetMappingSegmentB(long ticks, PersonBirthday personBirthday, int? approximateYears, long dateTimeOriginalThenMinimumDateTimeTicks, bool? isWrongYear)
|
private static string GetMappingSegmentB(long ticks, PersonBirthday personBirthday, int? approximateYears, long dateTimeOriginalThenMinimumDateTimeTicks, bool? isWrongYear)
|
||||||
|
@ -30,6 +30,7 @@ taskTemplate: '^+^_${overdue ? ''^R'' : ''''}${name}^: ${relations ? (''\n^-^/^g
|
|||||||
- [use-eyes-to-find-orientation](tasks/use-eyes-to-find-orientation.md)
|
- [use-eyes-to-find-orientation](tasks/use-eyes-to-find-orientation.md)
|
||||||
- [find-incorrectly-mapped-faces](tasks/find-incorrectly-mapped-faces.md)
|
- [find-incorrectly-mapped-faces](tasks/find-incorrectly-mapped-faces.md)
|
||||||
- [nef-support](tasks/nef-support.md)
|
- [nef-support](tasks/nef-support.md)
|
||||||
|
- [reload-slideshow](tasks/reload-slideshow.md)
|
||||||
- [set-date-taken-when-missing](tasks/set-date-taken-when-missing.md)
|
- [set-date-taken-when-missing](tasks/set-date-taken-when-missing.md)
|
||||||
|
|
||||||
## In Progress
|
## In Progress
|
||||||
|
10
Shared/.kanbn/tasks/reload-slideshow.md
Normal file
10
Shared/.kanbn/tasks/reload-slideshow.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
created: 2023-08-08T05:37:00.125Z
|
||||||
|
updated: 2023-08-08T05:37:14.241Z
|
||||||
|
assigned: ""
|
||||||
|
progress: 0
|
||||||
|
tags: []
|
||||||
|
started: 2023-08-08T05:37:10.651Z
|
||||||
|
---
|
||||||
|
|
||||||
|
# Reload slideshow
|
Loading…
x
Reference in New Issue
Block a user