Made PhotoPrism dynamic
This commit is contained in:
parent
e5dc8c1c05
commit
b5ff1b202c
@ -269,7 +269,7 @@ public partial class E_Distance
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LookForMatchFacesAndPossiblyRename(string facesFileNameExtension, string? eDistanceContentDirectory, MappingFromItem mappingFromItem, List<Face> faces, List<(string MappedFaceFile, int NormalizedRectangle, IReadOnlyList<MetadataExtractor.Directory>? Directories)> collection)
|
public void LookForMatchFacesAndPossiblyRename(string facesFileNameExtension, string eDistanceContentDirectory, MappingFromItem mappingFromItem, List<Face> faces, List<(string MappedFaceFile, int NormalizedRectangle, IReadOnlyList<MetadataExtractor.Directory>? Directories)> collection)
|
||||||
{
|
{
|
||||||
string? json;
|
string? json;
|
||||||
string[] matches;
|
string[] matches;
|
||||||
@ -295,7 +295,7 @@ public partial class E_Distance
|
|||||||
json = Metadata.Models.Stateless.IMetadata.GetFaceEncoding(directories);
|
json = Metadata.Models.Stateless.IMetadata.GetFaceEncoding(directories);
|
||||||
if (json is null)
|
if (json is null)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(eDistanceContentDirectory) && _DistanceMoveUnableToMatch)
|
if (_DistanceMoveUnableToMatch)
|
||||||
MoveUnableToMatch(eDistanceContentDirectory, mappedFaceFile, mappedFaceFileName);
|
MoveUnableToMatch(eDistanceContentDirectory, mappedFaceFile, mappedFaceFileName);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -312,13 +312,13 @@ public partial class E_Distance
|
|||||||
}
|
}
|
||||||
if (!checkFaces.Any())
|
if (!checkFaces.Any())
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(eDistanceContentDirectory) && _DistanceMoveUnableToMatch)
|
if (_DistanceMoveUnableToMatch)
|
||||||
MoveUnableToMatch(eDistanceContentDirectory, mappedFaceFile, mappedFaceFileName);
|
MoveUnableToMatch(eDistanceContentDirectory, mappedFaceFile, mappedFaceFileName);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (checkFaces.Count != 1)
|
if (checkFaces.Count != 1)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(eDistanceContentDirectory) && _DistanceMoveUnableToMatch)
|
if (_DistanceMoveUnableToMatch)
|
||||||
MoveUnableToMatch(eDistanceContentDirectory, mappedFaceFile, mappedFaceFileName);
|
MoveUnableToMatch(eDistanceContentDirectory, mappedFaceFile, mappedFaceFileName);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -272,7 +272,6 @@ public partial class DlibDotNet
|
|||||||
configuration.MappingDefaultName,
|
configuration.MappingDefaultName,
|
||||||
configuration.PersonBirthdayFirstYear,
|
configuration.PersonBirthdayFirstYear,
|
||||||
configuration.PersonBirthdayFormat,
|
configuration.PersonBirthdayFormat,
|
||||||
configuration.PhotoPrismDirectory,
|
|
||||||
configuration.RangeDaysDeltaTolerance,
|
configuration.RangeDaysDeltaTolerance,
|
||||||
configuration.RangeDistanceTolerance,
|
configuration.RangeDistanceTolerance,
|
||||||
configuration.SortingMaximumPerKey,
|
configuration.SortingMaximumPerKey,
|
||||||
@ -283,7 +282,7 @@ public partial class DlibDotNet
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FullParallelForWork(A_Property propertyLogic, Dictionary<int, List<(string, int, IReadOnlyList<MetadataExtractor.Directory>?)>> idToMappedFaceFilesWithCollection, string outputResolution, string bResultsFullGroupDirectory, string cResultsFullGroupDirectory, string dResultsDateGroupDirectory, string dResultsFullGroupDirectory, string? eDistanceContentDirectory, List<Tuple<string, DateTime>> sourceDirectoryChanges, List<FileHolder?> propertyFileHolderCollection, List<Shared.Models.Property?> propertyCollection, List<List<KeyValuePair<string, string>>> metadataCollections, List<Dictionary<string, int[]>> resizeKeyValuePairs, List<List<Shared.Models.Face>> imageFaceCollections, Container container, int index, Item item, DateTime[] containerDateTimes)
|
private void FullParallelForWork(A_Property propertyLogic, Dictionary<int, List<(string, int, IReadOnlyList<MetadataExtractor.Directory>?)>> idToMappedFaceFilesWithCollection, string outputResolution, string bResultsFullGroupDirectory, string cResultsFullGroupDirectory, string dResultsDateGroupDirectory, string dResultsFullGroupDirectory, string eDistanceContentDirectory, List<Tuple<string, DateTime>> sourceDirectoryChanges, List<FileHolder?> propertyFileHolderCollection, List<Shared.Models.Property?> propertyCollection, List<List<KeyValuePair<string, string>>> metadataCollections, List<Dictionary<string, int[]>> resizeKeyValuePairs, List<List<Shared.Models.Face>> imageFaceCollections, Container container, int index, Item item, DateTime[] containerDateTimes)
|
||||||
{
|
{
|
||||||
if (_Log is null)
|
if (_Log is null)
|
||||||
throw new NullReferenceException(nameof(_Log));
|
throw new NullReferenceException(nameof(_Log));
|
||||||
@ -408,7 +407,7 @@ public partial class DlibDotNet
|
|||||||
string cResultsFullGroupDirectory,
|
string cResultsFullGroupDirectory,
|
||||||
string dResultsDateGroupDirectory,
|
string dResultsDateGroupDirectory,
|
||||||
string dResultsFullGroupDirectory,
|
string dResultsFullGroupDirectory,
|
||||||
string? eDistanceContentDirectory,
|
string eDistanceContentDirectory,
|
||||||
List<Tuple<string, DateTime>> sourceDirectoryChanges,
|
List<Tuple<string, DateTime>> sourceDirectoryChanges,
|
||||||
List<FileHolder?> propertyFileHolderCollection,
|
List<FileHolder?> propertyFileHolderCollection,
|
||||||
List<Shared.Models.Property?> propertyCollection,
|
List<Shared.Models.Property?> propertyCollection,
|
||||||
@ -854,7 +853,7 @@ public partial class DlibDotNet
|
|||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MapLogic(string argZero, long ticks, Container[] containers, string a2PeopleSingletonDirectory, string dResultsFullGroupDirectory, string d2ResultsFullGroupDirectory, MapLogicSupport mapLogicSupport, MapLogic mapLogic, string outputResolution)
|
private void MapLogic(string argZero, long ticks, Container[] containers, string a2PeopleSingletonDirectory, string dResultsFullGroupDirectory, string d2ResultsFullGroupDirectory, string fPhotoPrismContentDirectory, MapLogicSupport mapLogicSupport, MapLogic mapLogic, string outputResolution)
|
||||||
{
|
{
|
||||||
int? useFiltersCounter = null;
|
int? useFiltersCounter = null;
|
||||||
SortingContainer[] sortingContainers;
|
SortingContainer[] sortingContainers;
|
||||||
@ -864,8 +863,8 @@ public partial class DlibDotNet
|
|||||||
Mapping[] mappingCollection = MapLogicSupport.GetSelectedMappingCollection(distinctFilteredFaces);
|
Mapping[] mappingCollection = MapLogicSupport.GetSelectedMappingCollection(distinctFilteredFaces);
|
||||||
string dFacesCollectionDirectory = Path.Combine(dResultsFullGroupDirectory, "[]", _Configuration.PropertyConfiguration.ResultAllInOne);
|
string dFacesCollectionDirectory = Path.Combine(dResultsFullGroupDirectory, "[]", _Configuration.PropertyConfiguration.ResultAllInOne);
|
||||||
(Dictionary<long, int> personKeyToCount, int totalNotMapped) = mapLogic.AddToMapping(mappingCollection);
|
(Dictionary<long, int> personKeyToCount, int totalNotMapped) = mapLogic.AddToMapping(mappingCollection);
|
||||||
if (!string.IsNullOrEmpty(_Configuration.PhotoPrismDirectory) && Directory.Exists(_Configuration.PhotoPrismDirectory))
|
if (Directory.Exists(fPhotoPrismContentDirectory))
|
||||||
F_PhotoPrism.WriteMatches(_Configuration.PhotoPrismDirectory, _Configuration.PersonBirthdayFormat, ticks, distinctFilteredFaces, mapLogic);
|
F_PhotoPrism.WriteMatches(fPhotoPrismContentDirectory, _Configuration.PersonBirthdayFormat, ticks, distinctFilteredFaces, mapLogic);
|
||||||
if (_Configuration.SaveShortcutsForOutputResolutions.Contains(outputResolution))
|
if (_Configuration.SaveShortcutsForOutputResolutions.Contains(outputResolution))
|
||||||
{
|
{
|
||||||
List<Item> filteredItems = GetItems(argZero, containers);
|
List<Item> filteredItems = GetItems(argZero, containers);
|
||||||
@ -1013,7 +1012,7 @@ public partial class DlibDotNet
|
|||||||
collection.Add(new(value.MappedFaceFile, normalizedRectangle.Value, directories));
|
collection.Add(new(value.MappedFaceFile, normalizedRectangle.Value, directories));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Dictionary<int, List<(string, int, IReadOnlyList<MetadataExtractor.Directory>?)>> GetCollection(long ticks, string? a2PeopleContentDirectory, string? eDistanceContentDirectory)
|
private Dictionary<int, List<(string, int, IReadOnlyList<MetadataExtractor.Directory>?)>> GetCollection(long ticks, string? a2PeopleContentDirectory, string eDistanceContentDirectory)
|
||||||
{
|
{
|
||||||
Dictionary<int, List<(string, int, IReadOnlyList<MetadataExtractor.Directory>?)>> results = new();
|
Dictionary<int, List<(string, int, IReadOnlyList<MetadataExtractor.Directory>?)>> results = new();
|
||||||
int? id;
|
int? id;
|
||||||
@ -1052,18 +1051,14 @@ public partial class DlibDotNet
|
|||||||
int t;
|
int t;
|
||||||
Container[] containers;
|
Container[] containers;
|
||||||
string? a2PeopleContentDirectory;
|
string? a2PeopleContentDirectory;
|
||||||
|
string eDistanceContentDirectory;
|
||||||
string aResultsFullGroupDirectory;
|
string aResultsFullGroupDirectory;
|
||||||
string bResultsFullGroupDirectory;
|
string bResultsFullGroupDirectory;
|
||||||
string cResultsFullGroupDirectory;
|
string cResultsFullGroupDirectory;
|
||||||
string dResultsFullGroupDirectory;
|
string dResultsFullGroupDirectory;
|
||||||
string? eDistanceContentDirectory;
|
|
||||||
string d2ResultsFullGroupDirectory;
|
string d2ResultsFullGroupDirectory;
|
||||||
if (!string.IsNullOrEmpty(_Configuration.PhotoPrismDirectory) && Directory.Exists(_Configuration.PhotoPrismDirectory))
|
string fPhotoPrismContentDirectory;
|
||||||
{
|
string fPhotoPrismSingletonDirectory;
|
||||||
Dictionary<string, List<MappingFromPhotoPrism>> fileNameToCollection = F_PhotoPrism.GetFileNameToCollection(_Configuration.PhotoPrismDirectory);
|
|
||||||
foreach (KeyValuePair<string, List<MappingFromPhotoPrism>> keyValuePair in fileNameToCollection)
|
|
||||||
_FileNameToCollection.Add(keyValuePair.Key, keyValuePair.Value);
|
|
||||||
}
|
|
||||||
string a2PeopleSingletonDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(_Configuration.PropertyConfiguration, nameof(A2_People), "{}");
|
string a2PeopleSingletonDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(_Configuration.PropertyConfiguration, nameof(A2_People), "{}");
|
||||||
int totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds);
|
int totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds);
|
||||||
string message = $") Building Container(s) - {totalSeconds} total second(s)";
|
string message = $") Building Container(s) - {totalSeconds} total second(s)";
|
||||||
@ -1079,14 +1074,16 @@ public partial class DlibDotNet
|
|||||||
{
|
{
|
||||||
a2PeopleContentDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(_Configuration.PropertyConfiguration, nameof(A2_People), "([])");
|
a2PeopleContentDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(_Configuration.PropertyConfiguration, nameof(A2_People), "([])");
|
||||||
eDistanceContentDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(_Configuration.PropertyConfiguration, nameof(E_Distance), "()");
|
eDistanceContentDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(_Configuration.PropertyConfiguration, nameof(E_Distance), "()");
|
||||||
|
fPhotoPrismContentDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(_Configuration.PropertyConfiguration, nameof(F_PhotoPrism), "()");
|
||||||
|
fPhotoPrismSingletonDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(_Configuration.PropertyConfiguration, nameof(F_PhotoPrism), "{}");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
string resultsGroupDirectory;
|
string resultsGroupDirectory;
|
||||||
a2PeopleContentDirectory = null;
|
a2PeopleContentDirectory = null;
|
||||||
eDistanceContentDirectory = Path.GetPathRoot(argZero);
|
eDistanceContentDirectory = Path.Combine($"{Path.GetPathRoot(argZero)}", "()");
|
||||||
if (eDistanceContentDirectory is null)
|
fPhotoPrismContentDirectory = Path.Combine($"{Path.GetPathRoot(argZero)}", "()");
|
||||||
throw new NullReferenceException(nameof(eDistanceContentDirectory));
|
fPhotoPrismSingletonDirectory = Path.Combine($"{Path.GetPathRoot(argZero)}", "{}");
|
||||||
string? newRootDirectory = SaveUrlAndGetNewRootDirectory(container);
|
string? newRootDirectory = SaveUrlAndGetNewRootDirectory(container);
|
||||||
for (int i = 1; i < 10; i++)
|
for (int i = 1; i < 10; i++)
|
||||||
{
|
{
|
||||||
@ -1101,6 +1098,12 @@ public partial class DlibDotNet
|
|||||||
containers = Shared.Models.Stateless.Methods.IContainer.SortContainers(_Configuration.PropertyConfiguration, _Configuration.IgnoreRelativePaths, _ArgZeroIsConfigurationRootDirectory, argZero, containers);
|
containers = Shared.Models.Stateless.Methods.IContainer.SortContainers(_Configuration.PropertyConfiguration, _Configuration.IgnoreRelativePaths, _ArgZeroIsConfigurationRootDirectory, argZero, containers);
|
||||||
MapLogicSupport mapLogicSupport = new(_Configuration.FaceConfidencePercent, _Configuration.FaceDistancePermyriad, _Configuration.RangeDaysDeltaTolerance, _Configuration.RangeFaceAreaPermilleTolerance, _Configuration.SortingMaximumPerFaceShouldBeHigh);
|
MapLogicSupport mapLogicSupport = new(_Configuration.FaceConfidencePercent, _Configuration.FaceDistancePermyriad, _Configuration.RangeDaysDeltaTolerance, _Configuration.RangeFaceAreaPermilleTolerance, _Configuration.SortingMaximumPerFaceShouldBeHigh);
|
||||||
MapLogic? mapLogic = _Configuration.DistanceMoveUnableToMatch ? null : new(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, _MapConfiguration, ticks, _PersonContainers, a2PeopleSingletonDirectory, eDistanceContentDirectory, mapLogicSupport);
|
MapLogic? mapLogic = _Configuration.DistanceMoveUnableToMatch ? null : new(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, _MapConfiguration, ticks, _PersonContainers, a2PeopleSingletonDirectory, eDistanceContentDirectory, mapLogicSupport);
|
||||||
|
if (Directory.Exists(fPhotoPrismSingletonDirectory))
|
||||||
|
{
|
||||||
|
Dictionary<string, List<MappingFromPhotoPrism>> fileNameToCollection = F_PhotoPrism.GetFileNameToCollection(fPhotoPrismContentDirectory);
|
||||||
|
foreach (KeyValuePair<string, List<MappingFromPhotoPrism>> keyValuePair in fileNameToCollection)
|
||||||
|
_FileNameToCollection.Add(keyValuePair.Key, keyValuePair.Value);
|
||||||
|
}
|
||||||
FullDoWork(argZero, propertyRoot, ticks, propertyLogic, t, containers, a2PeopleContentDirectory, eDistanceContentDirectory);
|
FullDoWork(argZero, propertyRoot, ticks, propertyLogic, t, containers, a2PeopleContentDirectory, eDistanceContentDirectory);
|
||||||
_Distance.Clear();
|
_Distance.Clear();
|
||||||
mapLogic ??= new(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, _MapConfiguration, ticks, _PersonContainers, a2PeopleSingletonDirectory, eDistanceContentDirectory, mapLogicSupport);
|
mapLogic ??= new(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, _MapConfiguration, ticks, _PersonContainers, a2PeopleSingletonDirectory, eDistanceContentDirectory, mapLogicSupport);
|
||||||
@ -1115,13 +1118,12 @@ public partial class DlibDotNet
|
|||||||
&& _Configuration.SaveResizedSubfiles
|
&& _Configuration.SaveResizedSubfiles
|
||||||
&& outputResolution == _Configuration.OutputResolutions[0]
|
&& outputResolution == _Configuration.OutputResolutions[0]
|
||||||
&& _Configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions.Contains(outputResolution)
|
&& _Configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions.Contains(outputResolution)
|
||||||
&& _Exceptions.Count == 0
|
&& _Exceptions.Count == 0)
|
||||||
&& !string.IsNullOrEmpty(eDistanceContentDirectory))
|
|
||||||
{
|
{
|
||||||
if (!_Configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions.Any())
|
if (!_Configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions.Any())
|
||||||
break;
|
break;
|
||||||
SetMapping(_FileNameToCollection, argZero, containers);
|
SetMapping(_FileNameToCollection, argZero, containers);
|
||||||
MapLogic(argZero, ticks, containers, a2PeopleSingletonDirectory, dResultsFullGroupDirectory, d2ResultsFullGroupDirectory, mapLogicSupport, mapLogic, outputResolution);
|
MapLogic(argZero, ticks, containers, a2PeopleSingletonDirectory, dResultsFullGroupDirectory, d2ResultsFullGroupDirectory, fPhotoPrismContentDirectory, mapLogicSupport, mapLogic, outputResolution);
|
||||||
if (_IsEnvironment.Development)
|
if (_IsEnvironment.Development)
|
||||||
continue;
|
continue;
|
||||||
List<MappingFromItem> mappingFromItemCollection = GetMappingFromItemCollection(containers);
|
List<MappingFromItem> mappingFromItemCollection = GetMappingFromItemCollection(containers);
|
||||||
|
@ -50,7 +50,6 @@ public class Configuration
|
|||||||
[Display(Name = "Person Birthday First Year"), Required] public int? PersonBirthdayFirstYear { get; set; }
|
[Display(Name = "Person Birthday First Year"), Required] public int? PersonBirthdayFirstYear { get; set; }
|
||||||
[Display(Name = "Person Birthday Format"), Required] public string PersonBirthdayFormat { get; set; }
|
[Display(Name = "Person Birthday Format"), Required] public string PersonBirthdayFormat { get; set; }
|
||||||
[Display(Name = "PersonKey Format"), Required] public string PersonKeyFormat { get; set; }
|
[Display(Name = "PersonKey Format"), Required] public string PersonKeyFormat { get; set; }
|
||||||
[Display(Name = "Photo-Prism Directory"), Required] public string PhotoPrismDirectory { get; set; }
|
|
||||||
[Display(Name = "Predictor Model Name"), Required] public string PredictorModelName { get; set; }
|
[Display(Name = "Predictor Model Name"), Required] public string PredictorModelName { get; set; }
|
||||||
[Display(Name = "Properties Changed For Distance"), Required] public bool? PropertiesChangedForDistance { get; set; }
|
[Display(Name = "Properties Changed For Distance"), Required] public bool? PropertiesChangedForDistance { get; set; }
|
||||||
[Display(Name = "Properties Changed For Faces"), Required] public bool? PropertiesChangedForFaces { get; set; }
|
[Display(Name = "Properties Changed For Faces"), Required] public bool? PropertiesChangedForFaces { get; set; }
|
||||||
@ -159,8 +158,6 @@ public class Configuration
|
|||||||
throw new NullReferenceException(nameof(configuration.PersonBirthdayFormat));
|
throw new NullReferenceException(nameof(configuration.PersonBirthdayFormat));
|
||||||
if (configuration.PersonKeyFormat is null)
|
if (configuration.PersonKeyFormat is null)
|
||||||
throw new NullReferenceException(nameof(configuration.PersonKeyFormat));
|
throw new NullReferenceException(nameof(configuration.PersonKeyFormat));
|
||||||
if (configuration.PhotoPrismDirectory is null)
|
|
||||||
throw new NullReferenceException(nameof(configuration.PhotoPrismDirectory));
|
|
||||||
if (configuration.PropertiesChangedForDistance is null)
|
if (configuration.PropertiesChangedForDistance is null)
|
||||||
throw new NullReferenceException(nameof(configuration.PropertiesChangedForDistance));
|
throw new NullReferenceException(nameof(configuration.PropertiesChangedForDistance));
|
||||||
if (configuration.PropertiesChangedForFaces is null)
|
if (configuration.PropertiesChangedForFaces is null)
|
||||||
@ -244,7 +241,6 @@ public class Configuration
|
|||||||
configuration.PersonBirthdayFirstYear.Value,
|
configuration.PersonBirthdayFirstYear.Value,
|
||||||
configuration.PersonBirthdayFormat,
|
configuration.PersonBirthdayFormat,
|
||||||
configuration.PersonKeyFormat,
|
configuration.PersonKeyFormat,
|
||||||
configuration.PhotoPrismDirectory,
|
|
||||||
configuration.PredictorModelName,
|
configuration.PredictorModelName,
|
||||||
configuration.PropertiesChangedForDistance.Value,
|
configuration.PropertiesChangedForDistance.Value,
|
||||||
configuration.PropertiesChangedForFaces.Value,
|
configuration.PropertiesChangedForFaces.Value,
|
||||||
|
@ -47,7 +47,6 @@ public class Configuration
|
|||||||
public int PersonBirthdayFirstYear { init; get; }
|
public int PersonBirthdayFirstYear { init; get; }
|
||||||
public string PersonBirthdayFormat { init; get; }
|
public string PersonBirthdayFormat { init; get; }
|
||||||
public string PersonKeyFormat { init; get; }
|
public string PersonKeyFormat { init; get; }
|
||||||
public string PhotoPrismDirectory { init; get; }
|
|
||||||
public string PredictorModelName { init; get; }
|
public string PredictorModelName { init; get; }
|
||||||
public bool PropertiesChangedForDistance { init; get; }
|
public bool PropertiesChangedForDistance { init; get; }
|
||||||
public bool PropertiesChangedForFaces { init; get; }
|
public bool PropertiesChangedForFaces { init; get; }
|
||||||
@ -114,7 +113,6 @@ public class Configuration
|
|||||||
int personBirthdayFirstYear,
|
int personBirthdayFirstYear,
|
||||||
string personBirthdayFormat,
|
string personBirthdayFormat,
|
||||||
string personKeyFormat,
|
string personKeyFormat,
|
||||||
string photoPrismDirectory,
|
|
||||||
string predictorModelName,
|
string predictorModelName,
|
||||||
bool propertiesChangedForDistance,
|
bool propertiesChangedForDistance,
|
||||||
bool propertiesChangedForFaces,
|
bool propertiesChangedForFaces,
|
||||||
@ -180,7 +178,6 @@ public class Configuration
|
|||||||
PersonBirthdayFirstYear = personBirthdayFirstYear;
|
PersonBirthdayFirstYear = personBirthdayFirstYear;
|
||||||
PersonBirthdayFormat = personBirthdayFormat;
|
PersonBirthdayFormat = personBirthdayFormat;
|
||||||
PersonKeyFormat = personKeyFormat;
|
PersonKeyFormat = personKeyFormat;
|
||||||
PhotoPrismDirectory = photoPrismDirectory;
|
|
||||||
PredictorModelName = predictorModelName;
|
PredictorModelName = predictorModelName;
|
||||||
PropertiesChangedForDistance = propertiesChangedForDistance;
|
PropertiesChangedForDistance = propertiesChangedForDistance;
|
||||||
PropertiesChangedForFaces = propertiesChangedForFaces;
|
PropertiesChangedForFaces = propertiesChangedForFaces;
|
||||||
|
@ -12,12 +12,11 @@
|
|||||||
"Configuration": {
|
"Configuration": {
|
||||||
"DistanceRenameToMatch": false,
|
"DistanceRenameToMatch": false,
|
||||||
"DistanceMoveUnableToMatch": false,
|
"DistanceMoveUnableToMatch": false,
|
||||||
"PhotoPrismDirectory": "D:/Docker/photoprism/windows/Images/storage/backup",
|
|
||||||
"xRootDirectory": "D:/Tmp/phares/Pictures",
|
"xRootDirectory": "D:/Tmp/phares/Pictures",
|
||||||
"xxRootDirectory": "D:/Tmp/Phares/Compare/Not-Copy-Copy-37c7b67",
|
"xxRootDirectory": "D:/Tmp/Phares/Compare/Not-Copy-Copy-37c7b67",
|
||||||
"xxxRootDirectory": "D:/Tmp/Phares/Compare/Corrupt",
|
"xxxRootDirectory": "D:/Tmp/Phares/Compare/Corrupt",
|
||||||
"RootDirectory": "D:/1) Images A/Images-37c7b67",
|
"RootDirectory": "D:/1) Images A/Images-37c7b67",
|
||||||
"xxxxxRootDirectory": "F:/Tmp/Phares/Compare/Images-37c7b67/Facebook/=2022.3 Facebook",
|
"xxxxxRootDirectory": "D:/1) Images A/Images-37c7b67/Facebook/=2022.3 Facebook",
|
||||||
"JLinks": [
|
"JLinks": [
|
||||||
"Julie"
|
"Julie"
|
||||||
],
|
],
|
||||||
|
@ -88,7 +88,6 @@
|
|||||||
"PersonBirthdayFirstYear": 1500,
|
"PersonBirthdayFirstYear": 1500,
|
||||||
"PersonBirthdayFormat": "yyyy-MM-dd_HH",
|
"PersonBirthdayFormat": "yyyy-MM-dd_HH",
|
||||||
"PersonKeyFormat": "yyyy-MM-dd_HH",
|
"PersonKeyFormat": "yyyy-MM-dd_HH",
|
||||||
"PhotoPrismDirectory": "",
|
|
||||||
"PopulatePropertyId": true,
|
"PopulatePropertyId": true,
|
||||||
"PredictorModelName": "Large",
|
"PredictorModelName": "Large",
|
||||||
"PropertiesChangedForDistance": false,
|
"PropertiesChangedForDistance": false,
|
||||||
|
@ -14,7 +14,6 @@ public class Configuration
|
|||||||
public string MappingDefaultName { init; get; }
|
public string MappingDefaultName { init; get; }
|
||||||
public int PersonBirthdayFirstYear { init; get; }
|
public int PersonBirthdayFirstYear { init; get; }
|
||||||
public string PersonBirthdayFormat { init; get; }
|
public string PersonBirthdayFormat { init; get; }
|
||||||
public string PhotoPrismDirectory { init; get; }
|
|
||||||
public int RangeDaysDeltaTolerance { init; get; }
|
public int RangeDaysDeltaTolerance { init; get; }
|
||||||
public double RangeDistanceTolerance { init; get; }
|
public double RangeDistanceTolerance { init; get; }
|
||||||
public int SortingMaximumPerKey { init; get; }
|
public int SortingMaximumPerKey { init; get; }
|
||||||
@ -26,7 +25,6 @@ public class Configuration
|
|||||||
string mappingDefaultName,
|
string mappingDefaultName,
|
||||||
int personBirthdayFirstYear,
|
int personBirthdayFirstYear,
|
||||||
string personBirthdayFormat,
|
string personBirthdayFormat,
|
||||||
string photoPrismDirectory,
|
|
||||||
int[] rangeDaysDeltaTolerance,
|
int[] rangeDaysDeltaTolerance,
|
||||||
double[] rangeDistanceTolerance,
|
double[] rangeDistanceTolerance,
|
||||||
int sortingMaximumPerKey,
|
int sortingMaximumPerKey,
|
||||||
@ -36,7 +34,6 @@ public class Configuration
|
|||||||
string facePartsFileNameExtension)
|
string facePartsFileNameExtension)
|
||||||
{
|
{
|
||||||
MappingDefaultName = mappingDefaultName;
|
MappingDefaultName = mappingDefaultName;
|
||||||
PhotoPrismDirectory = photoPrismDirectory;
|
|
||||||
PersonBirthdayFormat = personBirthdayFormat;
|
PersonBirthdayFormat = personBirthdayFormat;
|
||||||
SortingMaximumPerKey = sortingMaximumPerKey;
|
SortingMaximumPerKey = sortingMaximumPerKey;
|
||||||
FaceConfidencePercent = faceConfidencePercent;
|
FaceConfidencePercent = faceConfidencePercent;
|
||||||
|
@ -189,7 +189,7 @@ internal abstract class MapLogic
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static List<(string, string[], string)> DeleteEmptyDirectoriesAndGetMappedFaceFiles(Configuration configuration, PersonContainer[] personContainers, long ticks, string? a2PeopleContentDirectory, string? eDistanceContentDirectory)
|
internal static List<(string, string[], string)> DeleteEmptyDirectoriesAndGetMappedFaceFiles(Configuration configuration, PersonContainer[] personContainers, long ticks, string? a2PeopleContentDirectory, string eDistanceContentDirectory)
|
||||||
{
|
{
|
||||||
List<(string, string[], string)> results;
|
List<(string, string[], string)> results;
|
||||||
string personKeyFormatted;
|
string personKeyFormatted;
|
||||||
|
@ -3,9 +3,9 @@ namespace View_by_Distance.Map.Models.Stateless.Methods;
|
|||||||
public interface IMapLogic
|
public interface IMapLogic
|
||||||
{ // ...
|
{ // ...
|
||||||
|
|
||||||
List<(string, string[], string)> TestStatic_DeleteEmptyDirectoriesAndGetMappedFaceFiles(Configuration configuration, Shared.Models.PersonContainer[] personContainers, long ticks, string? a2PeopleContentDirectory, string? eDistanceContentDirectory) =>
|
List<(string, string[], string)> TestStatic_DeleteEmptyDirectoriesAndGetMappedFaceFiles(Configuration configuration, Shared.Models.PersonContainer[] personContainers, long ticks, string? a2PeopleContentDirectory, string eDistanceContentDirectory) =>
|
||||||
DeleteEmptyDirectoriesAndGetMappedFaceFiles(configuration, personContainers, ticks, a2PeopleContentDirectory, eDistanceContentDirectory);
|
DeleteEmptyDirectoriesAndGetMappedFaceFiles(configuration, personContainers, ticks, a2PeopleContentDirectory, eDistanceContentDirectory);
|
||||||
static List<(string, string[], string)> DeleteEmptyDirectoriesAndGetMappedFaceFiles(Configuration configuration, Shared.Models.PersonContainer[] personContainers, long ticks, string? a2PeopleContentDirectory, string? eDistanceContentDirectory) =>
|
static List<(string, string[], string)> DeleteEmptyDirectoriesAndGetMappedFaceFiles(Configuration configuration, Shared.Models.PersonContainer[] personContainers, long ticks, string? a2PeopleContentDirectory, string eDistanceContentDirectory) =>
|
||||||
MapLogic.DeleteEmptyDirectoriesAndGetMappedFaceFiles(configuration, personContainers, ticks, a2PeopleContentDirectory, eDistanceContentDirectory);
|
MapLogic.DeleteEmptyDirectoriesAndGetMappedFaceFiles(configuration, personContainers, ticks, a2PeopleContentDirectory, eDistanceContentDirectory);
|
||||||
|
|
||||||
}
|
}
|
@ -11,25 +11,33 @@ public class F_PhotoPrism
|
|||||||
private static JsonProperty[] GetJsonProperty(string fileName)
|
private static JsonProperty[] GetJsonProperty(string fileName)
|
||||||
{
|
{
|
||||||
JsonProperty[] results;
|
JsonProperty[] results;
|
||||||
string json = File.ReadAllText(fileName);
|
if (!File.Exists(fileName))
|
||||||
JsonElement? jsonElement = JsonSerializer.Deserialize<JsonElement>(json);
|
results = Array.Empty<JsonProperty>();
|
||||||
results = jsonElement.Value.EnumerateObject().ToArray();
|
else
|
||||||
|
{
|
||||||
|
string json = File.ReadAllText(fileName);
|
||||||
|
JsonElement? jsonElement = JsonSerializer.Deserialize<JsonElement>(json);
|
||||||
|
results = jsonElement.Value.EnumerateObject().ToArray();
|
||||||
|
}
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Marker[]? GetMarkers(string photoPrismDirectory)
|
private static Marker[]? GetMarkers(string fPhotoPrismSingletonDirectory)
|
||||||
{
|
{
|
||||||
Marker[]? results;
|
Marker[]? results;
|
||||||
string file = Path.Combine(photoPrismDirectory, "markers.json");
|
string file = Path.Combine(fPhotoPrismSingletonDirectory, "markers.json");
|
||||||
JsonProperty[] jsonProperties = GetJsonProperty(file);
|
JsonProperty[] jsonProperties = GetJsonProperty(file);
|
||||||
results = JsonSerializer.Deserialize<Marker[]>(jsonProperties[1].Value);
|
if (!jsonProperties.Any())
|
||||||
|
results = null;
|
||||||
|
else
|
||||||
|
results = JsonSerializer.Deserialize<Marker[]>(jsonProperties[1].Value);
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Dictionary<string, List<Marker>> GetFileUIdToMarkers(string photoPrismDirectory)
|
private static Dictionary<string, List<Marker>> GetFileUIdToMarkers(string fPhotoPrismSingletonDirectory)
|
||||||
{
|
{
|
||||||
Dictionary<string, List<Marker>> results = new();
|
Dictionary<string, List<Marker>> results = new();
|
||||||
Marker[]? markers = GetMarkers(photoPrismDirectory);
|
Marker[]? markers = GetMarkers(fPhotoPrismSingletonDirectory);
|
||||||
if (markers is null)
|
if (markers is null)
|
||||||
throw new NullReferenceException(nameof(markers));
|
throw new NullReferenceException(nameof(markers));
|
||||||
foreach (Marker marker in markers)
|
foreach (Marker marker in markers)
|
||||||
@ -41,25 +49,28 @@ public class F_PhotoPrism
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static DatabaseFile[]? GetDatabaseFiles(string photoPrismDirectory)
|
private static DatabaseFile[]? GetDatabaseFiles(string fPhotoPrismSingletonDirectory)
|
||||||
{
|
{
|
||||||
DatabaseFile[]? results;
|
DatabaseFile[]? results;
|
||||||
string file = Path.Combine(photoPrismDirectory, "files.json");
|
string file = Path.Combine(fPhotoPrismSingletonDirectory, "files.json");
|
||||||
JsonProperty[] jsonProperties = GetJsonProperty(file);
|
JsonProperty[] jsonProperties = GetJsonProperty(file);
|
||||||
results = JsonSerializer.Deserialize<DatabaseFile[]>(jsonProperties[1].Value);
|
if (!jsonProperties.Any())
|
||||||
|
results = null;
|
||||||
|
else
|
||||||
|
results = JsonSerializer.Deserialize<DatabaseFile[]>(jsonProperties[1].Value);
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Dictionary<string, List<MappingFromPhotoPrism>> GetFileNameToCollection(string photoPrismDirectory)
|
public static Dictionary<string, List<MappingFromPhotoPrism>> GetFileNameToCollection(string fPhotoPrismSingletonDirectory)
|
||||||
{
|
{
|
||||||
Dictionary<string, List<MappingFromPhotoPrism>> results = new();
|
Dictionary<string, List<MappingFromPhotoPrism>> results = new();
|
||||||
List<Marker>? makers;
|
List<Marker>? makers;
|
||||||
MappingFromPhotoPrism mappingFromPhotoPrism;
|
MappingFromPhotoPrism mappingFromPhotoPrism;
|
||||||
List<MappingFromPhotoPrism>? mappingFromPhotoPrismCollection;
|
List<MappingFromPhotoPrism>? mappingFromPhotoPrismCollection;
|
||||||
DatabaseFile[]? databaseFiles = GetDatabaseFiles(photoPrismDirectory);
|
DatabaseFile[]? databaseFiles = GetDatabaseFiles(fPhotoPrismSingletonDirectory);
|
||||||
if (databaseFiles is null)
|
if (databaseFiles is null)
|
||||||
throw new NullReferenceException(nameof(databaseFiles));
|
throw new NullReferenceException(nameof(databaseFiles));
|
||||||
Dictionary<string, List<Marker>> fileUIdToMarkers = GetFileUIdToMarkers(photoPrismDirectory);
|
Dictionary<string, List<Marker>> fileUIdToMarkers = GetFileUIdToMarkers(fPhotoPrismSingletonDirectory);
|
||||||
foreach (DatabaseFile databaseFile in databaseFiles)
|
foreach (DatabaseFile databaseFile in databaseFiles)
|
||||||
{
|
{
|
||||||
if (!results.TryGetValue(databaseFile.FileName, out mappingFromPhotoPrismCollection))
|
if (!results.TryGetValue(databaseFile.FileName, out mappingFromPhotoPrismCollection))
|
||||||
@ -77,7 +88,7 @@ public class F_PhotoPrism
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void WriteMatches(string photoPrismDirectory, string personBirthdayFormat, long ticks, Face[] distinctFilteredFaces, Shared.Models.Methods.IMapLogic mapLogic)
|
public static void WriteMatches(string fPhotoPrismContentDirectory, string personBirthdayFormat, long ticks, Face[] distinctFilteredFaces, Shared.Models.Methods.IMapLogic mapLogic)
|
||||||
{
|
{
|
||||||
long? personKey;
|
long? personKey;
|
||||||
const int zero = 0;
|
const int zero = 0;
|
||||||
@ -147,8 +158,8 @@ public class F_PhotoPrism
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
File.WriteAllLines(Path.Combine(photoPrismDirectory, $"{ticks}-subject_alias_update.sql"), subjects.Distinct());
|
File.WriteAllLines(Path.Combine(fPhotoPrismContentDirectory, $"{ticks}-subject_alias_update.sql"), subjects.Distinct());
|
||||||
File.WriteAllText(Path.Combine(photoPrismDirectory, $"{ticks}-marker_name_update.sql"), stringBuilder.ToString());
|
File.WriteAllText(Path.Combine(fPhotoPrismContentDirectory, $"{ticks}-marker_name_update.sql"), stringBuilder.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user