.config
.vscode
BlurHash
BlurHash.Core
BlurHash.System.Drawing.Common
Compare
Copy-Distinct
Date-Group
Delete-By-Distinct
Delete-By-Relative
Distance
Drag-Drop-Explorer
Drag-Drop-Move
Drag-Drop-Search
Drag-Drop-Set-Property-Item
Duplicate-Search
Face
FaceParts
FaceRecognitionDotNet
Instance
Map
Metadata
Metadata-Query
Mirror-Length
Move-By-Id
Offset-Date-Time-Original
PhotoPrism
PrepareForOld
Property
.vscode
Models
Binder
Stateless
IProperty.cs
IResult.cs
Property.cs
Result.cs
A_Property.cs
Configuration.cs
Property.csproj
Property-Compare
Rename
Resize
Set-Created-Date
Shared
Tests
TestsWithFaceRecognitionDotNet
ThumbHash
.editorconfig
.gitattributes
.gitignore
.prettierignore
.txt
View-by-Distance-MKLink-Console.sln
package-lock.json
package.json
138 lines
7.7 KiB
C#
138 lines
7.7 KiB
C#
using View_by_Distance.Shared.Models.Stateless;
|
|
|
|
namespace View_by_Distance.Property.Models.Stateless;
|
|
|
|
internal class Result
|
|
{
|
|
|
|
internal static string GetResultsDateGroupDirectory(Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, string description, string jsonGroup)
|
|
{
|
|
string result = Path.Combine(GetResultsDateGroupDirectory(propertyConfiguration, description), jsonGroup);
|
|
if (!Directory.Exists(result))
|
|
_ = Directory.CreateDirectory(result);
|
|
return result;
|
|
}
|
|
|
|
internal static string GetResultsDateGroupDirectory(Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, string description)
|
|
{
|
|
string result = Path.Combine(GetResultsGroupDirectory(propertyConfiguration, description, create: true), propertyConfiguration.DateGroup);
|
|
if (!Directory.Exists(result))
|
|
_ = Directory.CreateDirectory(result);
|
|
return result;
|
|
}
|
|
|
|
internal static string GetRelativePath(Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, string path)
|
|
{
|
|
string result = Shared.Models.Stateless.Methods.IPath.GetRelativePath(path, propertyConfiguration.RootDirectory.Length);
|
|
return result;
|
|
}
|
|
|
|
private static void CheckContent(Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, string dateGroupDirectory, string contentDescription, string result)
|
|
{
|
|
string checkDirectory;
|
|
checkDirectory = Path.Combine(dateGroupDirectory, propertyConfiguration.ResultContent, propertyConfiguration.ResultAllInOne);
|
|
if (!Directory.Exists(checkDirectory))
|
|
_ = Directory.CreateDirectory(checkDirectory);
|
|
string contentDirectory = new(result.Replace("<>", propertyConfiguration.ResultContent));
|
|
if (!Directory.Exists(contentDirectory))
|
|
_ = Directory.CreateDirectory(contentDirectory);
|
|
checkDirectory = Path.Combine(dateGroupDirectory, string.Concat("() - ", contentDescription));
|
|
if (!Directory.Exists(checkDirectory))
|
|
_ = Directory.CreateDirectory(checkDirectory);
|
|
}
|
|
|
|
private static void CheckSingleton(Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, string dateGroupDirectory, string singletonDescription, bool converted, string result)
|
|
{
|
|
string checkDirectory;
|
|
checkDirectory = Path.Combine(dateGroupDirectory, propertyConfiguration.ResultSingleton, propertyConfiguration.ResultAllInOne);
|
|
if (!Directory.Exists(checkDirectory))
|
|
_ = Directory.CreateDirectory(checkDirectory);
|
|
if (!converted)
|
|
{
|
|
string singletonDirectory = new(result.Replace("<>", propertyConfiguration.ResultSingleton));
|
|
if (!Directory.Exists(singletonDirectory))
|
|
_ = Directory.CreateDirectory(singletonDirectory);
|
|
}
|
|
checkDirectory = Path.Combine(dateGroupDirectory, string.Concat("{} - ", singletonDescription));
|
|
if (!Directory.Exists(checkDirectory))
|
|
_ = Directory.CreateDirectory(checkDirectory);
|
|
}
|
|
|
|
private static void CheckCollection(Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, string dateGroupDirectory, string collectionDescription, bool converted, string result)
|
|
{
|
|
string checkDirectory = Path.Combine(dateGroupDirectory, propertyConfiguration.ResultCollection, propertyConfiguration.ResultAllInOne);
|
|
if (!Directory.Exists(checkDirectory))
|
|
_ = Directory.CreateDirectory(checkDirectory);
|
|
if (!converted)
|
|
{
|
|
string collectionDirectory = new(result.Replace("<>", propertyConfiguration.ResultCollection));
|
|
if (!Directory.Exists(collectionDirectory))
|
|
_ = Directory.CreateDirectory(collectionDirectory);
|
|
}
|
|
checkDirectory = Path.Combine(dateGroupDirectory, string.Concat("[] - ", collectionDescription));
|
|
if (!Directory.Exists(checkDirectory))
|
|
_ = Directory.CreateDirectory(checkDirectory);
|
|
}
|
|
|
|
internal static string GetResultsFullGroupDirectory(Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, string description, string outputResolution, bool includeResizeGroup, bool includeModel, bool includePredictorModel)
|
|
{
|
|
string result = GetResultsDateGroupDirectory(propertyConfiguration, description);
|
|
if (includeResizeGroup)
|
|
result = Path.Combine(result, outputResolution);
|
|
if (includeModel && includePredictorModel)
|
|
{
|
|
string modelName;
|
|
string predictorModelName;
|
|
if (propertyConfiguration.ModelName is null)
|
|
modelName = Model.Hog.ToString();
|
|
else
|
|
modelName = propertyConfiguration.ModelName;
|
|
if (propertyConfiguration.PredictorModelName is null)
|
|
predictorModelName = PredictorModel.Large.ToString();
|
|
else
|
|
predictorModelName = propertyConfiguration.PredictorModelName;
|
|
string dateGroupDirectory = string.Concat(outputResolution.Replace(" ", string.Empty), "-", modelName, "-", predictorModelName, "-", propertyConfiguration.NumberOfJitters, "-", propertyConfiguration.NumberOfTimesToUpsample);
|
|
result = Path.Combine(result, dateGroupDirectory);
|
|
}
|
|
else if (includeModel)
|
|
throw new Exception();
|
|
else if (includePredictorModel)
|
|
throw new Exception();
|
|
if (!Directory.Exists(result))
|
|
_ = Directory.CreateDirectory(result);
|
|
return result;
|
|
}
|
|
|
|
internal static List<string> GetDirectoryInfoCollection(Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, string sourceDirectory, string dateGroupDirectory, string contentDescription, string singletonDescription, string collectionDescription, bool converted)
|
|
{
|
|
List<string> results = [];
|
|
string sourceDirectorySegment = GetRelativePath(propertyConfiguration, sourceDirectory);
|
|
string result = string.Concat(Path.Combine(dateGroupDirectory, "<>"), sourceDirectorySegment);
|
|
if (!string.IsNullOrEmpty(contentDescription))
|
|
CheckContent(propertyConfiguration, dateGroupDirectory, contentDescription, result);
|
|
if (!string.IsNullOrEmpty(singletonDescription))
|
|
CheckSingleton(propertyConfiguration, dateGroupDirectory, singletonDescription, converted, result);
|
|
if (!string.IsNullOrEmpty(collectionDescription))
|
|
CheckCollection(propertyConfiguration, dateGroupDirectory, collectionDescription, converted, result);
|
|
results.Add(result);
|
|
return results;
|
|
}
|
|
|
|
internal static string GetResultsGroupDirectory(Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, string description, bool create)
|
|
{
|
|
string result = Path.Combine($"{propertyConfiguration.RootDirectory}-Results", description.Replace('_', ')'));
|
|
if (create && !Directory.Exists(result))
|
|
_ = Directory.CreateDirectory(result);
|
|
return result;
|
|
}
|
|
|
|
internal static List<string> GetDirectoryInfoCollection(Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, string sourceDirectory, string description, string outputResolution, bool includeResizeGroup, bool includeModel, bool includePredictorModel, string contentDescription, string singletonDescription, string collectionDescription)
|
|
{
|
|
List<string> results;
|
|
bool converted = false;
|
|
string dateGroupDirectory = GetResultsFullGroupDirectory(propertyConfiguration, description, outputResolution, includeResizeGroup, includeModel, includePredictorModel);
|
|
results = GetDirectoryInfoCollection(propertyConfiguration, sourceDirectory, dateGroupDirectory, contentDescription, singletonDescription, collectionDescription, converted);
|
|
return results;
|
|
}
|
|
|
|
} |