259 lines
14 KiB
C#
259 lines
14 KiB
C#
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace View_by_Distance.Instance.Models;
|
|
|
|
public class Configuration
|
|
{
|
|
|
|
protected Property.Models.Configuration _PropertyConfiguration;
|
|
public Property.Models.Configuration PropertyConfiguration => _PropertyConfiguration;
|
|
|
|
public bool CheckDFaceAndUpWriteDates { init; get; }
|
|
public bool CheckJsonForDistanceResults { init; get; }
|
|
public string[] CopyFacesAndSaveFaceLandmarkForOutputResolutions { init; get; }
|
|
public int CrossDirectoryMaxItemsInDistanceCollection { init; get; }
|
|
public bool DeletePossibleDuplicates { get; internal set; }
|
|
public int DistanceFactor { init; get; }
|
|
public bool DistanceMoveUnableToMatch { init; get; }
|
|
public int DistancePixelDistanceTolerance { init; get; }
|
|
public bool DistanceRenameToMatch { init; get; }
|
|
public int FaceAreaPermyriad { init; get; }
|
|
public int FaceDistanceHiddenImageFactor { init; get; }
|
|
public int FaceConfidencePercent { init; get; }
|
|
public int FaceDistancePermyriad { init; get; }
|
|
public string FocusDirectory { init; get; }
|
|
public string FocusModel { init; get; }
|
|
public bool ForceFaceLastWriteTimeToCreationTime { init; get; }
|
|
public bool ForceMetadataLastWriteTimeToCreationTime { init; get; }
|
|
public bool ForceResizeLastWriteTimeToCreationTime { init; get; }
|
|
public string GenealogicalDataCommunicationFile { init; get; }
|
|
public string[] IgnoreExtensions { init; get; }
|
|
public string[] IgnoreRelativePaths { init; get; }
|
|
public string[] JLinks { init; get; }
|
|
public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { init; get; }
|
|
public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { init; get; }
|
|
public int LocationDigits { init; get; }
|
|
public int LocationFactor { init; get; }
|
|
public bool LookForAbandoned { init; get; }
|
|
public string MappingDefaultName { init; get; }
|
|
public bool MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping { init; get; }
|
|
public bool MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping { init; get; }
|
|
public string[] MixedYearRelativePaths { init; get; }
|
|
public string ModelDirectory { init; get; }
|
|
public string ModelName { init; get; }
|
|
public string OutputExtension { init; get; }
|
|
public int OutputQuality { init; get; }
|
|
public string[] OutputResolutions { init; get; }
|
|
public bool OverrideForFaceImages { init; get; }
|
|
public bool OverrideForFaceLandmarkImages { init; get; }
|
|
public bool OverrideForResizeImages { init; get; }
|
|
public int PersonBirthdayFirstYear { init; get; }
|
|
public string PersonBirthdayFormat { init; get; }
|
|
public string PersonCharacters { init; get; }
|
|
public int PersonCharactersCopyCount { init; get; }
|
|
public string PersonKeyFormat { init; get; }
|
|
public string PredictorModelName { init; get; }
|
|
public bool PropertiesChangedForDistance { init; get; }
|
|
public bool PropertiesChangedForFaces { init; get; }
|
|
public bool PropertiesChangedForIndex { init; get; }
|
|
public bool PropertiesChangedForMetadata { init; get; }
|
|
public bool PropertiesChangedForResize { init; get; }
|
|
public int[] RangeDaysDeltaTolerance { init; get; }
|
|
public float[] RangeDistanceTolerance { init; get; }
|
|
public float[] RangeFaceAreaTolerance { init; get; }
|
|
public float[] RangeFaceConfidence { init; get; }
|
|
public float[] RectangleIntersectMinimums { init; get; }
|
|
public bool Reverse { init; get; }
|
|
public string[] SaveBlurHashForOutputResolutions { init; get; }
|
|
public string[] SaveFaceDistancesForOutputResolutions { init; get; }
|
|
public string[] SaveFaceLandmarkForOutputResolutions { init; get; }
|
|
public string[] SaveFilteredOriginalImagesFromJLinksForOutputResolutions { init; get; }
|
|
public bool SaveIndividually { init; get; }
|
|
public bool SaveFullYearOfRandomFiles { init; get; }
|
|
public string[] SaveMappedForOutputResolutions { init; get; }
|
|
public string[] SaveRandomForOutputResolutions { init; get; }
|
|
public bool SaveResizedSubfiles { init; get; }
|
|
public string[] SaveShortcutsForOutputResolutions { init; get; }
|
|
public bool SaveSortingWithoutPerson { init; get; }
|
|
public string[] SkipNotSkipDirectories { init; get; }
|
|
public bool SkipSearch { init; get; }
|
|
public int? SkipOlderThanDays { init; get; }
|
|
public int SortingMaximumPerFaceShouldBeHigh { init; get; }
|
|
public int SortingMaximumPerKey { init; get; }
|
|
public int SortingMinimumToUseSigma { init; get; }
|
|
public bool TestDistanceResults { init; get; }
|
|
public int UseFilterTries { init; get; }
|
|
public string[] ValidResolutions { init; get; }
|
|
|
|
[JsonConstructor]
|
|
public Configuration(Property.Models.Configuration propertyConfiguration,
|
|
bool checkDFaceAndUpWriteDates,
|
|
bool checkJsonForDistanceResults,
|
|
string[] copyFacesAndSaveFaceLandmarkForOutputResolutions,
|
|
int crossDirectoryMaxItemsInDistanceCollection,
|
|
bool deletePossibleDuplicates,
|
|
int distanceFactor,
|
|
bool distanceMoveUnableToMatch,
|
|
int distancePixelDistanceTolerance,
|
|
bool distanceRenameToMatch,
|
|
int faceAreaPermyriad,
|
|
int faceConfidencePercent,
|
|
int faceDistanceHiddenImageFactor,
|
|
int faceDistancePermyriad,
|
|
string focusDirectory,
|
|
string focusModel,
|
|
bool forceFaceLastWriteTimeToCreationTime,
|
|
bool forceMetadataLastWriteTimeToCreationTime,
|
|
bool forceResizeLastWriteTimeToCreationTime,
|
|
string genealogicalDataCommunicationFile,
|
|
string[] ignoreExtensions,
|
|
string[] ignoreRelativePaths,
|
|
string[] jLinks,
|
|
string[] loadOrCreateThenSaveDistanceResultsForOutputResolutions,
|
|
string[] loadOrCreateThenSaveImageFacesResultsForOutputResolutions,
|
|
int locationDigits,
|
|
int locationFactor,
|
|
bool lookForAbandoned,
|
|
string mappingDefaultName,
|
|
bool mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping,
|
|
bool mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping,
|
|
string[] mixedYearRelativePaths,
|
|
string modelDirectory,
|
|
string modelName,
|
|
string outputExtension,
|
|
int outputQuality,
|
|
string[] outputResolutions,
|
|
bool overrideForFaceImages,
|
|
bool overrideForFaceLandmarkImages,
|
|
bool overrideForResizeImages,
|
|
int personBirthdayFirstYear,
|
|
string personBirthdayFormat,
|
|
string personCharacters,
|
|
int personCharactersCopyCount,
|
|
string personKeyFormat,
|
|
string predictorModelName,
|
|
bool propertiesChangedForDistance,
|
|
bool propertiesChangedForFaces,
|
|
bool propertiesChangedForIndex,
|
|
bool propertiesChangedForMetadata,
|
|
bool propertiesChangedForResize,
|
|
int[] rangeDaysDeltaTolerance,
|
|
float[] rangeDistanceTolerance,
|
|
float[] rangeFaceAreaPermyriadTolerance,
|
|
float[] rangeFaceConfidence,
|
|
float[] rectangleIntersectMinimums,
|
|
bool reverse,
|
|
string[] saveBlurHashForOutputResolutions,
|
|
string[] saveFaceDistancesForOutputResolutions,
|
|
string[] saveFaceLandmarkForOutputResolutions,
|
|
string[] saveFilteredOriginalImagesFromJLinksForOutputResolutions,
|
|
bool saveIndividually,
|
|
bool saveFullYearOfRandomFiles,
|
|
string[] saveMappedForOutputResolutions,
|
|
string[] saveRandomForOutputResolutions,
|
|
bool saveResizedSubfiles,
|
|
string[] saveShortcutsForOutputResolutions,
|
|
bool saveSortingWithoutPerson,
|
|
string[] skipNotSkipDirectories,
|
|
int? skipOlderThanDays,
|
|
bool skipSearch,
|
|
int sortingMaximumPerFaceShouldBeHigh,
|
|
int sortingMaximumPerKey,
|
|
int sortingSigma,
|
|
bool testDistanceResults,
|
|
int useFilterTries,
|
|
string[] validResolutions)
|
|
{
|
|
_PropertyConfiguration = propertyConfiguration;
|
|
CheckDFaceAndUpWriteDates = checkDFaceAndUpWriteDates;
|
|
CheckJsonForDistanceResults = checkJsonForDistanceResults;
|
|
CopyFacesAndSaveFaceLandmarkForOutputResolutions = copyFacesAndSaveFaceLandmarkForOutputResolutions;
|
|
CrossDirectoryMaxItemsInDistanceCollection = crossDirectoryMaxItemsInDistanceCollection;
|
|
DeletePossibleDuplicates = deletePossibleDuplicates;
|
|
DistanceFactor = distanceFactor;
|
|
DistanceMoveUnableToMatch = distanceMoveUnableToMatch;
|
|
DistancePixelDistanceTolerance = distancePixelDistanceTolerance;
|
|
DistanceRenameToMatch = distanceRenameToMatch;
|
|
FaceAreaPermyriad = faceAreaPermyriad;
|
|
FaceDistanceHiddenImageFactor = faceDistanceHiddenImageFactor;
|
|
FaceConfidencePercent = faceConfidencePercent;
|
|
FaceDistancePermyriad = faceDistancePermyriad;
|
|
FocusDirectory = focusDirectory;
|
|
FocusModel = focusModel;
|
|
ForceFaceLastWriteTimeToCreationTime = forceFaceLastWriteTimeToCreationTime;
|
|
ForceMetadataLastWriteTimeToCreationTime = forceMetadataLastWriteTimeToCreationTime;
|
|
ForceResizeLastWriteTimeToCreationTime = forceResizeLastWriteTimeToCreationTime;
|
|
GenealogicalDataCommunicationFile = genealogicalDataCommunicationFile;
|
|
IgnoreExtensions = ignoreExtensions;
|
|
IgnoreRelativePaths = ignoreRelativePaths;
|
|
JLinks = jLinks;
|
|
LoadOrCreateThenSaveDistanceResultsForOutputResolutions = loadOrCreateThenSaveDistanceResultsForOutputResolutions;
|
|
LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = loadOrCreateThenSaveImageFacesResultsForOutputResolutions;
|
|
LocationDigits = locationDigits;
|
|
LocationFactor = locationFactor;
|
|
LookForAbandoned = lookForAbandoned;
|
|
MappingDefaultName = mappingDefaultName;
|
|
MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping = mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping;
|
|
MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping = mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping;
|
|
MixedYearRelativePaths = mixedYearRelativePaths;
|
|
ModelDirectory = modelDirectory;
|
|
ModelName = modelName;
|
|
OutputExtension = outputExtension;
|
|
OutputQuality = outputQuality;
|
|
OutputResolutions = outputResolutions;
|
|
OverrideForFaceImages = overrideForFaceImages;
|
|
OverrideForFaceLandmarkImages = overrideForFaceLandmarkImages;
|
|
OverrideForResizeImages = overrideForResizeImages;
|
|
PersonBirthdayFirstYear = personBirthdayFirstYear;
|
|
PersonBirthdayFormat = personBirthdayFormat;
|
|
PersonCharacters = personCharacters;
|
|
PersonCharactersCopyCount = personCharactersCopyCount;
|
|
PersonKeyFormat = personKeyFormat;
|
|
PredictorModelName = predictorModelName;
|
|
PropertiesChangedForDistance = propertiesChangedForDistance;
|
|
PropertiesChangedForFaces = propertiesChangedForFaces;
|
|
PropertiesChangedForIndex = propertiesChangedForIndex;
|
|
PropertiesChangedForMetadata = propertiesChangedForMetadata;
|
|
PropertiesChangedForResize = propertiesChangedForResize;
|
|
RangeDaysDeltaTolerance = rangeDaysDeltaTolerance;
|
|
RangeDistanceTolerance = rangeDistanceTolerance;
|
|
RangeFaceAreaTolerance = rangeFaceAreaPermyriadTolerance;
|
|
RangeFaceConfidence = rangeFaceConfidence;
|
|
RectangleIntersectMinimums = rectangleIntersectMinimums;
|
|
Reverse = reverse;
|
|
SaveBlurHashForOutputResolutions = saveBlurHashForOutputResolutions;
|
|
SaveFaceDistancesForOutputResolutions = saveFaceDistancesForOutputResolutions;
|
|
SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions;
|
|
SaveFilteredOriginalImagesFromJLinksForOutputResolutions = saveFilteredOriginalImagesFromJLinksForOutputResolutions;
|
|
SaveIndividually = saveIndividually;
|
|
SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles;
|
|
SaveMappedForOutputResolutions = saveMappedForOutputResolutions;
|
|
SaveRandomForOutputResolutions = saveRandomForOutputResolutions;
|
|
SaveResizedSubfiles = saveResizedSubfiles;
|
|
SaveShortcutsForOutputResolutions = saveShortcutsForOutputResolutions;
|
|
SaveSortingWithoutPerson = saveSortingWithoutPerson;
|
|
SkipNotSkipDirectories = skipNotSkipDirectories;
|
|
SkipOlderThanDays = skipOlderThanDays;
|
|
SkipSearch = skipSearch;
|
|
SortingMaximumPerFaceShouldBeHigh = sortingMaximumPerFaceShouldBeHigh;
|
|
SortingMaximumPerKey = sortingMaximumPerKey;
|
|
SortingMinimumToUseSigma = sortingSigma;
|
|
TestDistanceResults = testDistanceResults;
|
|
UseFilterTries = useFilterTries;
|
|
ValidResolutions = validResolutions;
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
|
|
return result;
|
|
}
|
|
|
|
public void SetAndUpdate(Property.Models.Configuration configuration, int? numberOfJitters, int? numberOfTimesToUpsample, string? modelName, string? predictorModelName)
|
|
{
|
|
_PropertyConfiguration = configuration;
|
|
_PropertyConfiguration.Update(numberOfJitters, numberOfTimesToUpsample, modelName, predictorModelName);
|
|
}
|
|
|
|
} |