|
|
|
@ -117,16 +117,14 @@ public partial class DlibDotNet
|
|
|
|
|
ProgressBarOptions options = new() { ProgressCharacter = '─', ProgressBarOnBottom = true, DisableBottomPercentage = true };
|
|
|
|
|
using ProgressBar progressBar = new(1, message, options);
|
|
|
|
|
progressBar.Tick();
|
|
|
|
|
string rootDirectory = propertyConfiguration.RootDirectory;
|
|
|
|
|
string peopleRootDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(propertyConfiguration, nameof(A2_People));
|
|
|
|
|
string? rootResultsDirectory = Path.GetDirectoryName(Path.GetDirectoryName(peopleRootDirectory)) ?? throw new Exception();
|
|
|
|
|
Storage storage = new(rootDirectory, rootResultsDirectory, peopleRootDirectory);
|
|
|
|
|
_ = Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories(Path.Combine(peopleRootDirectory, propertyConfiguration.ResultSingleton));
|
|
|
|
|
string a2PeopleSingletonDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(configuration.PropertyConfiguration, nameof(A2_People), "{}");
|
|
|
|
|
string a2PeopleContentDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(configuration.PropertyConfiguration, nameof(A2_People), "([])");
|
|
|
|
|
personContainers = new(IPersonContainer.GetPersonContainers(storage, configuration.PersonBirthdayFormat, configuration.PersonCharacters.ToArray(), _Faces.FileNameExtension));
|
|
|
|
|
personContainers = new(IPersonContainer.GetPersonContainers(a2PeopleSingletonDirectory, configuration.PersonBirthdayFormat, configuration.PersonCharacters.ToArray(), _Faces.FileNameExtension));
|
|
|
|
|
if (configuration.JLinks.Where(l => !string.IsNullOrEmpty(l)).Any())
|
|
|
|
|
{
|
|
|
|
|
string a2PeopleSingletonDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(configuration.PropertyConfiguration, nameof(A2_People), "{}");
|
|
|
|
|
_JLinkResolvedDirectories.AddRange(Map.Models.Stateless.Methods.IMapLogic.GetJLinkDirectories(configuration.GenealogicalDataCommunicationFile, configuration.JLinks, configuration.PersonBirthdayFormat, configuration.PersonCharacters.ToArray(), a2PeopleSingletonDirectory, a2PeopleContentDirectory));
|
|
|
|
|
if (_JLinkResolvedDirectories.Count == 0)
|
|
|
|
|
throw new Exception(nameof(Map.Models.Stateless.Methods.IMapLogic.GetJLinkDirectories));
|
|
|
|
@ -832,8 +830,9 @@ public partial class DlibDotNet
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
private void MapLogic(long ticks, ReadOnlyCollection<Container> containers, string fPhotoPrismContentDirectory, MapLogic mapLogic, string outputResolution, ReadOnlyDictionary<long, List<int>> personKeyToIds, ReadOnlyCollection<Shared.Models.Face> distinctFilteredFaces, ReadOnlyCollection<Mapping> distinctFilteredMappingCollection)
|
|
|
|
|
{
|
|
|
|
|
(_, _, string dResultsFullGroupDirectory, string d2ResultsFullGroupDirectory) = GetResultsFullGroupDirectories(outputResolution);
|
|
|
|
|
string dFacesContentDirectory = Path.Combine(dResultsFullGroupDirectory, _Configuration.PropertyConfiguration.ResultContent);
|
|
|
|
|
string d2FacePartsContentDirectory = Path.Combine(d2ResultsFullGroupDirectory, _Configuration.PropertyConfiguration.ResultContent);
|
|
|
|
|
string d2FacePartsContentCollectionDirectory = Path.Combine(d2ResultsFullGroupDirectory, "[()]");
|
|
|
|
@ -962,7 +961,7 @@ public partial class DlibDotNet
|
|
|
|
|
return results;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void Verify(string eDistanceContentDirectory, ReadOnlyCollection<Item> distinctFilteredItems)
|
|
|
|
|
private static void SavePropertyShortcutsForOutputResolutions(string eDistanceContentDirectory, ReadOnlyCollection<Item> distinctFilteredItems)
|
|
|
|
|
{
|
|
|
|
|
#if VerifyItem
|
|
|
|
|
bool found;
|
|
|
|
@ -1106,9 +1105,6 @@ public partial class DlibDotNet
|
|
|
|
|
string aResultsFullGroupDirectory;
|
|
|
|
|
string bResultsFullGroupDirectory;
|
|
|
|
|
string cResultsFullGroupDirectory;
|
|
|
|
|
string dResultsFullGroupDirectory;
|
|
|
|
|
string c2ResultsFullGroupDirectory;
|
|
|
|
|
string d2ResultsFullGroupDirectory;
|
|
|
|
|
string fPhotoPrismContentDirectory;
|
|
|
|
|
const string fileSearchFilter = "*";
|
|
|
|
|
string fPhotoPrismSingletonDirectory;
|
|
|
|
@ -1208,6 +1204,8 @@ public partial class DlibDotNet
|
|
|
|
|
ReadOnlyCollection<Item> distinctFilteredItems = Shared.Models.Stateless.Methods.IContainer.GetItems(_Configuration.PropertyConfiguration, new(containers), distinctItems: true, filterItems: true);
|
|
|
|
|
if (_Configuration.LookForAbandoned)
|
|
|
|
|
{
|
|
|
|
|
string dResultsFullGroupDirectory;
|
|
|
|
|
string d2ResultsFullGroupDirectory;
|
|
|
|
|
foreach (string outputResolution in _Configuration.OutputResolutions)
|
|
|
|
|
{
|
|
|
|
|
(cResultsFullGroupDirectory, _, dResultsFullGroupDirectory, d2ResultsFullGroupDirectory) = GetResultsFullGroupDirectories(outputResolution);
|
|
|
|
@ -1215,7 +1213,6 @@ public partial class DlibDotNet
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
_Distance.Clear();
|
|
|
|
|
Verify(eDistanceContentDirectory, distinctFilteredItems);
|
|
|
|
|
ReadOnlyCollection<Shared.Models.Face> distinctFilteredFaces = Map.Models.Stateless.Methods.IMapLogic.GetFaces(distinctFilteredItems);
|
|
|
|
|
ReadOnlyCollection<Mapping> distinctFilteredMappingCollection = GetMappings(_Configuration.PropertyConfiguration, containers, mapLogic, distinctItems: true);
|
|
|
|
|
if (runToDoCollectionFirst)
|
|
|
|
@ -1228,23 +1225,28 @@ public partial class DlibDotNet
|
|
|
|
|
if (_PropertyRootExistedBefore)
|
|
|
|
|
break;
|
|
|
|
|
personKeyToIds = mapLogic.GetPersonKeyToIds();
|
|
|
|
|
if (_Configuration.SavePropertyShortcutsForOutputResolutions.Contains(outputResolution))
|
|
|
|
|
SavePropertyShortcutsForOutputResolutions(eDistanceContentDirectory, distinctFilteredItems);
|
|
|
|
|
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);
|
|
|
|
|
(cResultsFullGroupDirectory, c2ResultsFullGroupDirectory, dResultsFullGroupDirectory, d2ResultsFullGroupDirectory) = GetResultsFullGroupDirectories(outputResolution);
|
|
|
|
|
if (_ArgZeroIsConfigurationRootDirectory
|
|
|
|
|
&& _Configuration.SaveResizedSubfiles
|
|
|
|
|
&& outputResolution == _Configuration.OutputResolutions[0]
|
|
|
|
|
&& _Configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions.Contains(outputResolution)
|
|
|
|
|
&& _Exceptions.Count == 0)
|
|
|
|
|
MapLogic(ticks, new(containers), dResultsFullGroupDirectory, d2ResultsFullGroupDirectory, fPhotoPrismContentDirectory, mapLogic, outputResolution, new(personKeyToIds), distinctFilteredFaces, distinctFilteredMappingCollection);
|
|
|
|
|
MapLogic(ticks, new(containers), 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;
|
|
|
|
|
if (!_IsEnvironment.Development)
|
|
|
|
|
{
|
|
|
|
|
string dResultsFullGroupDirectory;
|
|
|
|
|
string c2ResultsFullGroupDirectory;
|
|
|
|
|
string d2ResultsFullGroupDirectory;
|
|
|
|
|
(cResultsFullGroupDirectory, c2ResultsFullGroupDirectory, dResultsFullGroupDirectory, d2ResultsFullGroupDirectory) = GetResultsFullGroupDirectories(outputResolution);
|
|
|
|
|
_ = Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories(Path.Combine(aResultsFullGroupDirectory, _Configuration.PropertyConfiguration.ResultSingleton));
|
|
|
|
|
_ = Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories(Path.Combine(bResultsFullGroupDirectory, _Configuration.PropertyConfiguration.ResultSingleton));
|
|
|
|
|
_ = Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories(Path.Combine(cResultsFullGroupDirectory, _Configuration.PropertyConfiguration.ResultSingleton));
|
|
|
|
|