Removed CopyAtLeastOneMappedFiles
ReadOnlyCollection
This commit is contained in:
@ -77,9 +77,6 @@ public partial class DlibDotNet
|
||||
_PropertyRootExistedBefore = !Directory.Exists(propertyRoot);
|
||||
string argZero = args.Count > 0 ? Path.GetFullPath(args[0]) : Path.GetFullPath(propertyConfiguration.RootDirectory);
|
||||
_ArgZeroIsConfigurationRootDirectory = propertyConfiguration.RootDirectory == argZero;
|
||||
if (!Directory.Exists(argZero))
|
||||
_ = Directory.CreateDirectory(argZero);
|
||||
Shared.Models.Stateless.Methods.IPath.ChangeDateForEmptyDirectories(argZero, ticks);
|
||||
if (!Directory.Exists(argZero))
|
||||
_ = Directory.CreateDirectory(argZero);
|
||||
_Log.Information(configuration.ModelDirectory);
|
||||
@ -359,7 +356,6 @@ public partial class DlibDotNet
|
||||
Mapping result;
|
||||
bool? isUsed;
|
||||
int? eyeα = null;
|
||||
int notMapped = 0;
|
||||
bool? isFocusPerson;
|
||||
bool? eyeReview = null;
|
||||
bool? inSkipCollection;
|
||||
@ -391,7 +387,7 @@ public partial class DlibDotNet
|
||||
mappingFromFilter = new(isFocusModel, isFocusPerson, isFocusRelativePath, isIgnoreRelativePath, inSkipCollection, isUsed);
|
||||
}
|
||||
result = new(mappingFromItem, mappingFromFilter, mappingFromLocation, mappingFromPhotoPrismCollection: null);
|
||||
notMapped += mapLogic.UpdateMappingFromPerson(locationContainersFiles, wholePercentagesToPersonContainers, result);
|
||||
int notMapped = mapLogic.UpdateMappingFromPerson(locationContainersFiles, wholePercentagesToPersonContainers, result);
|
||||
return (result, notMapped);
|
||||
}
|
||||
|
||||
@ -557,9 +553,8 @@ public partial class DlibDotNet
|
||||
{
|
||||
if (_Log is null)
|
||||
throw new NullReferenceException(nameof(_Log));
|
||||
int notMapped = 0;
|
||||
int result = 0;
|
||||
int exceptionsCount = 0;
|
||||
bool exceptions = false;
|
||||
bool ignoreXMatches = _JLinkResolvedDirectories.Count > 0;
|
||||
ParallelOptions parallelOptions = new() { MaxDegreeOfParallelism = maxDegreeOfParallelism };
|
||||
DateTime[] containerDateTimes = Shared.Models.Stateless.Methods.IContainer.GetContainerDateTimes(filteredItems);
|
||||
@ -573,37 +568,35 @@ public partial class DlibDotNet
|
||||
{
|
||||
try
|
||||
{
|
||||
notMapped = FullParallelForWork(propertyLogic,
|
||||
metadata,
|
||||
mapLogic,
|
||||
outputResolution,
|
||||
outputResolutionHasNumber,
|
||||
cResultsFullGroupDirectory,
|
||||
dResultsFullGroupDirectory,
|
||||
d2ResultsFullGroupDirectory,
|
||||
sourceDirectoryChanges,
|
||||
fileNameToCollection,
|
||||
container,
|
||||
index: i,
|
||||
filteredItems[i],
|
||||
containerDateTimes,
|
||||
isFocusRelativePath,
|
||||
isIgnoreRelativePath,
|
||||
facePartsCollectionDirectory);
|
||||
result += FullParallelForWork(propertyLogic,
|
||||
metadata,
|
||||
mapLogic,
|
||||
outputResolution,
|
||||
outputResolutionHasNumber,
|
||||
cResultsFullGroupDirectory,
|
||||
dResultsFullGroupDirectory,
|
||||
d2ResultsFullGroupDirectory,
|
||||
sourceDirectoryChanges,
|
||||
fileNameToCollection,
|
||||
container,
|
||||
index: i,
|
||||
filteredItems[i],
|
||||
containerDateTimes,
|
||||
isFocusRelativePath,
|
||||
isIgnoreRelativePath,
|
||||
facePartsCollectionDirectory);
|
||||
if (i == 0 || sourceDirectoryChanges.Count > 0)
|
||||
progressBar.Tick();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (!exceptions)
|
||||
exceptions = true;
|
||||
exceptionsCount++;
|
||||
_Log.Error(string.Concat(container.SourceDirectory, Environment.NewLine, ex.Message, Environment.NewLine, ex.StackTrace), ex);
|
||||
if (exceptionsCount == filteredItems.Length)
|
||||
throw new Exception(string.Concat("All in [", container.SourceDirectory, "] failed!"));
|
||||
}
|
||||
});
|
||||
return (notMapped, exceptions);
|
||||
return (result, exceptionsCount > 0);
|
||||
}
|
||||
|
||||
private static void WriteTab(string checkDirectory, List<(string Id, string Line)> metadataIdLines, string fileName)
|
||||
@ -693,11 +686,10 @@ public partial class DlibDotNet
|
||||
return new(cResultsFullGroupDirectory, c2ResultsFullGroupDirectory, dResultsFullGroupDirectory, d2ResultsFullGroupDirectory);
|
||||
}
|
||||
|
||||
private int FullDoWork(string argZero, string propertyRoot, long ticks, string aResultsFullGroupDirectory, string bResultsFullGroupDirectory, int t, Container[] containers, A_Property propertyLogic, B_Metadata metadata, Dictionary<int, List<MappingFromPhotoPrism>> fileNameToCollection, MapLogic mapLogic)
|
||||
private void FullDoWork(string argZero, string propertyRoot, long ticks, string aResultsFullGroupDirectory, string bResultsFullGroupDirectory, int t, Container[] containers, A_Property propertyLogic, B_Metadata metadata, Dictionary<int, List<MappingFromPhotoPrism>> fileNameToCollection, MapLogic mapLogic)
|
||||
{
|
||||
if (_Log is null)
|
||||
throw new NullReferenceException(nameof(_Log));
|
||||
int result = 0;
|
||||
int total;
|
||||
int notMapped;
|
||||
string message;
|
||||
@ -705,6 +697,7 @@ public partial class DlibDotNet
|
||||
int totalSeconds;
|
||||
Container container;
|
||||
Item[] filteredItems;
|
||||
int totalNotMapped = 0;
|
||||
bool outputResolutionHasNumber;
|
||||
bool anyNullOrNoIsUniqueFileName;
|
||||
string cResultsFullGroupDirectory;
|
||||
@ -737,7 +730,7 @@ public partial class DlibDotNet
|
||||
sourceDirectoryChanges.Clear();
|
||||
anyNullOrNoIsUniqueFileName = filteredItems.Any(l => !l.IsUniqueFileName);
|
||||
totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds);
|
||||
message = $"{i + 1:000} [{filteredItems.Length:000}] / {containersLength:000} - {total} / {t} total - {totalSeconds} total second(s) - {outputResolution} - {container.SourceDirectory}";
|
||||
message = $"{i + 1:000} [{filteredItems.Length:000}] / {containersLength:000} - {total} / {t} total - {totalSeconds} total second(s) - {outputResolution} - <{container.SourceDirectory}> - total not mapped {totalNotMapped:000000}";
|
||||
propertyLogic.SetAngleBracketCollection(aResultsFullGroupDirectory, container.SourceDirectory, anyNullOrNoIsUniqueFileName);
|
||||
if (outputResolutionHasNumber)
|
||||
_Resize.SetAngleBracketCollection(cResultsFullGroupDirectory, container.SourceDirectory);
|
||||
@ -755,7 +748,7 @@ public partial class DlibDotNet
|
||||
container,
|
||||
filteredItems,
|
||||
message);
|
||||
result += notMapped;
|
||||
totalNotMapped += notMapped;
|
||||
if (exceptions)
|
||||
{
|
||||
_Exceptions.Add(container.SourceDirectory);
|
||||
@ -773,11 +766,15 @@ public partial class DlibDotNet
|
||||
}
|
||||
total += container.Items.Count;
|
||||
}
|
||||
totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds);
|
||||
message = $"### [###] / {containersLength:000} - {total} / {t} total - {totalSeconds} total second(s) - {outputResolution} - <> - total not mapped {totalNotMapped:000000}";
|
||||
ProgressBarOptions options = new() { ProgressCharacter = '─', ProgressBarOnBottom = true, DisableBottomPercentage = true };
|
||||
using ProgressBar progressBar = new(1, message, options);
|
||||
progressBar.Tick();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void SaveFaceDistances(long ticks, MapLogic mapLogic, Mapping[] mappingCollection, string dFacesContentDirectory, string d2FacePartsContentDirectory, string d2FacePartsContentCollectionDirectory, Dictionary<int, Dictionary<int, Mapping>> idToWholePercentagesToMapping, List<FaceDistance> faceDistanceEncodings, FaceDistanceContainer[] faceDistanceContainers)
|
||||
private void SaveFaceDistances(long ticks, MapLogic mapLogic, ReadOnlyCollection<Mapping> mappingCollection, string dFacesContentDirectory, string d2FacePartsContentDirectory, string d2FacePartsContentCollectionDirectory, ReadOnlyDictionary<int, ReadOnlyDictionary<int, Mapping>> idToWholePercentagesToMapping, ReadOnlyCollection<FaceDistance> faceDistanceEncodings, ReadOnlyCollection<FaceDistanceContainer> faceDistanceContainers)
|
||||
{
|
||||
if (_Log is null)
|
||||
throw new NullReferenceException(nameof(_Log));
|
||||
@ -812,50 +809,44 @@ public partial class DlibDotNet
|
||||
E_Distance.SaveFaceDistances(_Configuration.PropertyConfiguration, sortingContainers);
|
||||
if (filteredFaceDistanceContainers.Length > 0)
|
||||
{
|
||||
int updated = mapLogic.UpdateFromSortingContainers(_Configuration.SaveIndividually, distanceLimits, sortingContainers);
|
||||
int updated = mapLogic.UpdateFromSortingContainers(_Configuration.SaveIndividually, idToWholePercentagesToMapping, distanceLimits, sortingContainers);
|
||||
List<SaveContainer> saveContainers = mapLogic.GetSaveContainers(_Configuration.SaveIndividually, dFacesContentDirectory, d2FacePartsContentDirectory, d2FacePartsContentCollectionDirectory, mappingCollection, idToWholePercentagesToMapping, useFiltersCounter, sortingContainers.Length > 0);
|
||||
mapLogic.SaveContainers(_Configuration.SaveIndividually, filteredFaceDistanceContainers.Length, updated, saveContainers);
|
||||
mapLogic.SaveContainers(_Configuration.SaveIndividually, updated, saveContainers);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SaveFaceDistances(long ticks, MapLogic mapLogic, List<Shared.Models.Face> distinctFilteredFaces, Mapping[] mappingCollection, string dFacesContentDirectory, string d2FacePartsContentDirectory, string d2FacePartsContentCollectionDirectory, string dFacesCollectionDirectory, Dictionary<int, Dictionary<int, Mapping>> idToWholePercentagesToMapping)
|
||||
private void SaveFaceDistances(long ticks, MapLogic mapLogic, ReadOnlyCollection<Shared.Models.Face> distinctFilteredFaces, ReadOnlyCollection<Mapping> mappingCollection, string dFacesContentDirectory, string d2FacePartsContentDirectory, string d2FacePartsContentCollectionDirectory, string dFacesCollectionDirectory, ReadOnlyDictionary<int, ReadOnlyDictionary<int, Mapping>> idToWholePercentagesToMapping)
|
||||
{
|
||||
E_Distance.SetFaceDistances(_AppSettings.MaxDegreeOfParallelism, ticks, distinctFilteredFaces);
|
||||
FaceDistanceContainer[] faceDistanceContainers = E_Distance.GetFaceDistanceContainers(distinctFilteredFaces);
|
||||
Dictionary<int, ReadOnlyDictionary<int, ReadOnlyCollection<PersonContainer>>> missingIdThenWholePercentagesToPersonContainers = mapLogic.GetMissing(idToWholePercentagesToMapping);
|
||||
List<FaceDistanceContainer> missingFaceDistanceContainers = _Distance.GetMissingFaceDistanceContainer(_AppSettings.MaxDegreeOfParallelism, ticks, dFacesCollectionDirectory, missingIdThenWholePercentagesToPersonContainers);
|
||||
List<FaceDistance> faceDistanceEncodings = E_Distance.GetFaceDistanceEncodings(faceDistanceContainers, missingFaceDistanceContainers);
|
||||
if (faceDistanceContainers.Length > 0)
|
||||
ReadOnlyCollection<FaceDistanceContainer> faceDistanceContainers = E_Distance.GetFaceDistanceContainers(distinctFilteredFaces);
|
||||
ReadOnlyDictionary<int, ReadOnlyDictionary<int, ReadOnlyCollection<PersonContainer>>> missingIdThenWholePercentagesToPersonContainers = mapLogic.GetMissing(idToWholePercentagesToMapping);
|
||||
ReadOnlyCollection<FaceDistanceContainer> missingFaceDistanceContainers = _Distance.GetMissingFaceDistanceContainer(_AppSettings.MaxDegreeOfParallelism, ticks, dFacesCollectionDirectory, missingIdThenWholePercentagesToPersonContainers);
|
||||
ReadOnlyCollection<FaceDistance> faceDistanceEncodings = E_Distance.GetFaceDistanceEncodings(faceDistanceContainers, missingFaceDistanceContainers);
|
||||
if (faceDistanceContainers.Count > 0)
|
||||
SaveFaceDistances(ticks, mapLogic, mappingCollection, dFacesContentDirectory, d2FacePartsContentDirectory, d2FacePartsContentCollectionDirectory, idToWholePercentagesToMapping, faceDistanceEncodings, faceDistanceContainers);
|
||||
}
|
||||
|
||||
private void MapLogic(long ticks, Container[] containers, string a2PeopleSingletonDirectory, string dResultsFullGroupDirectory, string d2ResultsFullGroupDirectory, string fPhotoPrismContentDirectory, MapLogic mapLogic, string outputResolution, Dictionary<long, List<int>> personKeyToIds, List<Shared.Models.Face> distinctFilteredFaces, Mapping[] distinctFilteredMappingCollection, int totalNotMapped)
|
||||
private void MapLogic(long ticks, ReadOnlyCollection<Container> containers, string dResultsFullGroupDirectory, string d2ResultsFullGroupDirectory, string fPhotoPrismContentDirectory, MapLogic mapLogic, string outputResolution, ReadOnlyDictionary<long, List<int>> personKeyToIds, ReadOnlyCollection<Shared.Models.Face> distinctFilteredFaces, ReadOnlyCollection<Mapping> distinctFilteredMappingCollection)
|
||||
{
|
||||
string dFacesContentDirectory = Path.Combine(dResultsFullGroupDirectory, _Configuration.PropertyConfiguration.ResultContent);
|
||||
string d2FacePartsContentDirectory = Path.Combine(d2ResultsFullGroupDirectory, _Configuration.PropertyConfiguration.ResultContent);
|
||||
string d2FacePartsContentCollectionDirectory = Path.Combine(d2ResultsFullGroupDirectory, "[()]");
|
||||
string dFacesCollectionDirectory = Path.Combine(dResultsFullGroupDirectory, _Configuration.PropertyConfiguration.ResultCollection, _Configuration.PropertyConfiguration.ResultAllInOne);
|
||||
if (distinctFilteredMappingCollection.Length > 0)
|
||||
if (distinctFilteredMappingCollection.Count > 0)
|
||||
{
|
||||
Shared.Models.Stateless.Methods.IPath.ChangeDateForEmptyDirectories(d2FacePartsContentDirectory, ticks);
|
||||
if (Directory.Exists(d2FacePartsContentCollectionDirectory))
|
||||
Shared.Models.Stateless.Methods.IPath.MakeHiddenIfAllItemsAreHidden(d2FacePartsContentCollectionDirectory);
|
||||
}
|
||||
if (Directory.Exists(fPhotoPrismContentDirectory))
|
||||
F_PhotoPrism.WriteMatches(fPhotoPrismContentDirectory, _Configuration.MappingDefaultName, _Configuration.PersonBirthdayFormat, _Configuration.RectangleIntersectMinimums, ticks, distinctFilteredFaces, mapLogic);
|
||||
F_PhotoPrism.WriteMatches(fPhotoPrismContentDirectory, _Configuration.PersonBirthdayFormat, _Configuration.RectangleIntersectMinimums, ticks, distinctFilteredFaces, mapLogic);
|
||||
if (_Configuration.SaveShortcutsForOutputResolutions.Contains(outputResolution))
|
||||
mapLogic.SaveShortcutsForOutputResolutionsDuringMapLogic(containers, personKeyToIds, dFacesContentDirectory, distinctFilteredMappingCollection);
|
||||
if (!string.IsNullOrEmpty(_Configuration.PersonCharacters))
|
||||
{
|
||||
if (_Configuration.PersonCharactersCopyCount > 0)
|
||||
mapLogic.CopyAtLeastOneMappedFiles(_Configuration.PersonCharactersCopyCount, dFacesContentDirectory, a2PeopleSingletonDirectory, distinctFilteredMappingCollection);
|
||||
mapLogic.SavePersonKeyToCount(dFacesContentDirectory, a2PeopleSingletonDirectory, distinctFilteredMappingCollection);
|
||||
}
|
||||
Dictionary<int, Dictionary<int, Mapping>> idToWholePercentagesToMapping = Map.Models.Stateless.Methods.IMapLogic.GetIdToWholePercentagesToFace(distinctFilteredMappingCollection);
|
||||
ReadOnlyDictionary<int, ReadOnlyDictionary<int, Mapping>> idToWholePercentagesToMapping = Map.Models.Stateless.Methods.IMapLogic.GetIdToWholePercentagesToFace(distinctFilteredMappingCollection);
|
||||
mapLogic.CopyManualFiles(dFacesContentDirectory, idToWholePercentagesToMapping);
|
||||
if (_Configuration.SaveMappedForOutputResolutions.Contains(outputResolution))
|
||||
mapLogic.SaveMapped(dFacesContentDirectory, d2FacePartsContentDirectory, d2FacePartsContentCollectionDirectory, personKeyToIds, distinctFilteredMappingCollection, idToWholePercentagesToMapping, totalNotMapped);
|
||||
mapLogic.SaveMapped(dFacesContentDirectory, d2FacePartsContentDirectory, d2FacePartsContentCollectionDirectory, personKeyToIds, distinctFilteredMappingCollection, idToWholePercentagesToMapping);
|
||||
if (_Configuration.SaveFaceDistancesForOutputResolutions.Contains(outputResolution))
|
||||
SaveFaceDistances(ticks, mapLogic, distinctFilteredFaces, distinctFilteredMappingCollection, dFacesContentDirectory, d2FacePartsContentDirectory, d2FacePartsContentCollectionDirectory, dFacesCollectionDirectory, idToWholePercentagesToMapping);
|
||||
}
|
||||
@ -906,12 +897,12 @@ public partial class DlibDotNet
|
||||
return result;
|
||||
}
|
||||
|
||||
private Mapping[] GetMappings(Property.Models.Configuration propertyConfiguration, Container[] containers, MapLogic mapLogic, int totalNotMapped, bool distinctItems)
|
||||
private ReadOnlyCollection<Mapping> GetMappings(Property.Models.Configuration propertyConfiguration, Container[] containers, MapLogic mapLogic, bool distinctItems)
|
||||
{
|
||||
Mapping[] results;
|
||||
ReadOnlyCollection<Mapping> results;
|
||||
int count = 0;
|
||||
int notMapped;
|
||||
Mapping mapping;
|
||||
int notMapped = 0;
|
||||
bool anyValidFaces;
|
||||
string focusRelativePath;
|
||||
bool? isFocusRelativePath;
|
||||
@ -952,28 +943,23 @@ public partial class DlibDotNet
|
||||
continue;
|
||||
anyValidFaces = true;
|
||||
mappingCollection.Add(face.Mapping);
|
||||
if (face.Mapping.MappingFromPerson is null || face.Mapping.MappingFromPerson.LocationContainersFiles.Count == 0)
|
||||
continue;
|
||||
if (_Configuration.LocationContainerDistanceTolerance is null)
|
||||
Map.Models.Stateless.Methods.IMapLogic.MoveToDecade(propertyConfiguration, face.Mapping.MappingFromItem, face.Mapping.MappingFromPerson);
|
||||
}
|
||||
if (!anyValidFaces)
|
||||
{
|
||||
(mapping, notMapped) = GetMapping(mapLogic, locationContainersFiles, item, isFocusRelativePath, isIgnoreRelativePath, mappingFromItem);
|
||||
mappingCollection.Add(mapping);
|
||||
if (mapping.MappingFromPerson is null || mapping.MappingFromPerson.LocationContainersFiles.Count == 0)
|
||||
continue;
|
||||
if (_Configuration.LocationContainerDistanceTolerance is null)
|
||||
Map.Models.Stateless.Methods.IMapLogic.MoveToDecade(propertyConfiguration, mapping.MappingFromItem, mapping.MappingFromPerson);
|
||||
}
|
||||
}
|
||||
}
|
||||
results = (from l in mappingCollection orderby l.MappingFromItem.Id select l).ToArray();
|
||||
if (notMapped != totalNotMapped)
|
||||
{
|
||||
if (notMapped != totalNotMapped)
|
||||
{ }
|
||||
}
|
||||
results = new((from l in mappingCollection orderby l.MappingFromItem.Id select l).ToArray());
|
||||
return results;
|
||||
}
|
||||
|
||||
private static void Verify(string eDistanceContentDirectory, List<Item> distinctFilteredItems)
|
||||
private static void Verify(string eDistanceContentDirectory, ReadOnlyCollection<Item> distinctFilteredItems)
|
||||
{
|
||||
#if VerifyItem
|
||||
bool found;
|
||||
@ -1062,14 +1048,17 @@ public partial class DlibDotNet
|
||||
}
|
||||
}
|
||||
|
||||
private static bool GetRunToDoCollectionFirst(long ticks, string rootDirectory, FileSystemInfo fileSystemInfo)
|
||||
private bool GetRunToDoCollectionFirst(long ticks)
|
||||
{
|
||||
bool result = false;
|
||||
string[] directories;
|
||||
string seasonDirectory;
|
||||
DirectoryInfo directoryInfo;
|
||||
DateTime dateTime = new(ticks);
|
||||
string rootDirectory = _Configuration.PropertyConfiguration.RootDirectory;
|
||||
string eDistanceContentDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(_Configuration.PropertyConfiguration, nameof(E_Distance), _Configuration.PropertyConfiguration.ResultContent);
|
||||
(int season, string seasonName) = Shared.Models.Stateless.Methods.IProperty.GetSeason(dateTime.DayOfYear);
|
||||
FileSystemInfo fileSystemInfo = new DirectoryInfo(eDistanceContentDirectory);
|
||||
string[] checkDirectories = new string[]
|
||||
{
|
||||
Path.Combine(rootDirectory, "Ancestry"),
|
||||
@ -1079,9 +1068,10 @@ public partial class DlibDotNet
|
||||
};
|
||||
foreach (string checkDirectory in checkDirectories)
|
||||
{
|
||||
if (!Directory.Exists(checkDirectory))
|
||||
_ = Directory.CreateDirectory(checkDirectory);
|
||||
seasonDirectory = Path.Combine(checkDirectory, $"{dateTime.Year}.{season} {seasonName} {Path.GetFileName(checkDirectory)}");
|
||||
if (checkDirectory == rootDirectory)
|
||||
seasonDirectory = Path.Combine(checkDirectory, $"{dateTime.Year}.{season} {seasonName}");
|
||||
else
|
||||
seasonDirectory = Path.Combine(checkDirectory, $"{dateTime.Year}.{season} {seasonName} {Path.GetFileName(checkDirectory)}");
|
||||
if (!Directory.Exists(seasonDirectory))
|
||||
_ = Directory.CreateDirectory(seasonDirectory);
|
||||
if (result)
|
||||
@ -1124,13 +1114,15 @@ public partial class DlibDotNet
|
||||
const string directorySearchFilter = "*";
|
||||
Dictionary<long, List<int>> personKeyToIds;
|
||||
bool configurationOutputResolutionsHas = false;
|
||||
bool runToDoCollectionFirst = GetRunToDoCollectionFirst(ticks);
|
||||
Dictionary<int, List<MappingFromPhotoPrism>> fileNameToCollection;
|
||||
(aResultsFullGroupDirectory, bResultsFullGroupDirectory) = GetResultsFullGroupDirectories();
|
||||
ProgressBarOptions options = new() { ProgressCharacter = '─', ProgressBarOnBottom = true, DisableBottomPercentage = true };
|
||||
Shared.Models.Stateless.Methods.IPath.ChangeDateForEmptyDirectories(_Configuration.PropertyConfiguration.RootDirectory, ticks);
|
||||
a2PeopleContentDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(_Configuration.PropertyConfiguration, nameof(A2_People), "([])");
|
||||
eDistanceContentDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(_Configuration.PropertyConfiguration, nameof(E_Distance), _Configuration.PropertyConfiguration.ResultContent);
|
||||
string a2PeopleSingletonDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(_Configuration.PropertyConfiguration, nameof(A2_People), _Configuration.PropertyConfiguration.ResultSingleton);
|
||||
bool runToDoCollectionFirst = GetRunToDoCollectionFirst(ticks, _Configuration.PropertyConfiguration.RootDirectory, new DirectoryInfo(eDistanceContentDirectory));
|
||||
_ = Directory.CreateDirectory(Path.Combine(eDistanceContentDirectory, $"({ticks})"));
|
||||
if (runToDoCollectionFirst)
|
||||
mapLogic = null;
|
||||
else
|
||||
@ -1209,8 +1201,8 @@ public partial class DlibDotNet
|
||||
B_Metadata metadata = new(_Configuration.PropertyConfiguration, _Configuration.ForceMetadataLastWriteTimeToCreationTime, _Configuration.PropertiesChangedForMetadata, bResultsFullGroupDirectory);
|
||||
mapLogic ??= new(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, _MapConfiguration, _Distance, personContainers, ticks, a2PeopleSingletonDirectory, eDistanceContentDirectory);
|
||||
containers = Shared.Models.Stateless.Methods.IContainer.SortContainers(_Configuration.PropertyConfiguration, _Configuration.IgnoreRelativePaths, _ArgZeroIsConfigurationRootDirectory, argZero, containers);
|
||||
int totalNotMapped = FullDoWork(argZero, propertyRoot, ticks, aResultsFullGroupDirectory, bResultsFullGroupDirectory, t, containers, propertyLogic, metadata, fileNameToCollection, mapLogic);
|
||||
List<Item> distinctFilteredItems = Shared.Models.Stateless.Methods.IContainer.GetItems(_Configuration.PropertyConfiguration, containers, distinctItems: true, filterItems: true);
|
||||
FullDoWork(argZero, propertyRoot, ticks, aResultsFullGroupDirectory, bResultsFullGroupDirectory, t, containers, propertyLogic, metadata, fileNameToCollection, mapLogic);
|
||||
ReadOnlyCollection<Item> distinctFilteredItems = Shared.Models.Stateless.Methods.IContainer.GetItems(_Configuration.PropertyConfiguration, new(containers), distinctItems: true, filterItems: true);
|
||||
if (_Configuration.LookForAbandoned)
|
||||
{
|
||||
foreach (string outputResolution in _Configuration.OutputResolutions)
|
||||
@ -1221,10 +1213,13 @@ public partial class DlibDotNet
|
||||
}
|
||||
_Distance.Clear();
|
||||
Verify(eDistanceContentDirectory, distinctFilteredItems);
|
||||
List<Shared.Models.Face> distinctFilteredFaces = Map.Models.Stateless.Methods.IMapLogic.GetFaces(distinctFilteredItems);
|
||||
Mapping[] distinctFilteredMappingCollection = GetMappings(_Configuration.PropertyConfiguration, containers, mapLogic, totalNotMapped, distinctItems: true);
|
||||
string json = JsonSerializer.Serialize(distinctFilteredMappingCollection);
|
||||
File.WriteAllText(Path.Combine(eDistanceContentDirectory, $"{ticks}.json"), json);
|
||||
ReadOnlyCollection<Shared.Models.Face> distinctFilteredFaces = Map.Models.Stateless.Methods.IMapLogic.GetFaces(distinctFilteredItems);
|
||||
ReadOnlyCollection<Mapping> distinctFilteredMappingCollection = GetMappings(_Configuration.PropertyConfiguration, containers, mapLogic, distinctItems: true);
|
||||
if (runToDoCollectionFirst)
|
||||
{
|
||||
string json = JsonSerializer.Serialize(distinctFilteredMappingCollection);
|
||||
File.WriteAllText(Path.Combine(eDistanceContentDirectory, $"{ticks}.json"), json);
|
||||
}
|
||||
foreach (string outputResolution in _Configuration.OutputResolutions)
|
||||
{
|
||||
if (_PropertyRootExistedBefore)
|
||||
@ -1233,15 +1228,15 @@ public partial class DlibDotNet
|
||||
if (!string.IsNullOrEmpty(a2PeopleContentDirectory) && _Configuration.SaveShortcutsForOutputResolutions.Contains(outputResolution))
|
||||
mapLogic.SaveShortcutsForOutputResolutionsPreMapLogic(eDistanceContentDirectory, personKeyToIds, distinctFilteredMappingCollection);
|
||||
if (!string.IsNullOrEmpty(a2PeopleContentDirectory) && _Configuration.JLinks.Where(l => !string.IsNullOrEmpty(l)).Any() && _Configuration.SaveFilteredOriginalImagesFromJLinksForOutputResolutions.Contains(outputResolution))
|
||||
mapLogic.SaveFilteredOriginalImagesFromJLinks(_Configuration.JLinks, personContainers, a2PeopleContentDirectory, personKeyToIds, distinctFilteredMappingCollection, totalNotMapped);
|
||||
mapLogic.SaveFilteredOriginalImagesFromJLinks(_Configuration.JLinks, personContainers, a2PeopleContentDirectory, personKeyToIds, distinctFilteredMappingCollection);
|
||||
(cResultsFullGroupDirectory, c2ResultsFullGroupDirectory, dResultsFullGroupDirectory, d2ResultsFullGroupDirectory) = GetResultsFullGroupDirectories(outputResolution);
|
||||
if (_ArgZeroIsConfigurationRootDirectory
|
||||
&& _Configuration.SaveResizedSubfiles
|
||||
&& outputResolution == _Configuration.OutputResolutions[0]
|
||||
&& _Configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions.Contains(outputResolution)
|
||||
&& _Exceptions.Count == 0)
|
||||
MapLogic(ticks, containers, a2PeopleSingletonDirectory, dResultsFullGroupDirectory, d2ResultsFullGroupDirectory, fPhotoPrismContentDirectory, mapLogic, outputResolution, personKeyToIds, distinctFilteredFaces, distinctFilteredMappingCollection, totalNotMapped);
|
||||
if (_Configuration.SaveRandomForOutputResolutions.Contains(outputResolution) && personKeyToIds.Count > 0 && distinctFilteredMappingCollection.Length > 0)
|
||||
MapLogic(ticks, new(containers), dResultsFullGroupDirectory, d2ResultsFullGroupDirectory, fPhotoPrismContentDirectory, mapLogic, outputResolution, new(personKeyToIds), distinctFilteredFaces, distinctFilteredMappingCollection);
|
||||
if (_Configuration.SaveRandomForOutputResolutions.Contains(outputResolution) && personKeyToIds.Count > 0 && distinctFilteredMappingCollection.Count > 0)
|
||||
_Random.Random(_Configuration.PropertyConfiguration, outputResolution, personKeyToIds, distinctFilteredMappingCollection);
|
||||
if (_IsEnvironment.Development)
|
||||
continue;
|
||||
|
Reference in New Issue
Block a user