InSkipCollection and MakeHiddenIfAllItemsAreHidden
This commit is contained in:
parent
bea7a172c5
commit
7b33fbe050
@ -340,6 +340,11 @@ public class D2_FaceParts
|
|||||||
if (File.Exists(checkFile))
|
if (File.Exists(checkFile))
|
||||||
File.Delete(checkFile);
|
File.Delete(checkFile);
|
||||||
}
|
}
|
||||||
|
else if (face.Mapping?.MappingFromFilter.InSkipCollection is not null && face.Mapping.MappingFromFilter.InSkipCollection.Value)
|
||||||
|
{
|
||||||
|
if (File.Exists(checkFile))
|
||||||
|
File.Delete(checkFile);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!hasNotMapped)
|
if (!hasNotMapped)
|
||||||
|
@ -268,6 +268,7 @@ public partial class DlibDotNet
|
|||||||
bool? isFocusModel;
|
bool? isFocusModel;
|
||||||
int faceAreaPermyriad;
|
int faceAreaPermyriad;
|
||||||
int confidencePercent;
|
int confidencePercent;
|
||||||
|
bool? inSkipCollection;
|
||||||
int normalizedRectangle;
|
int normalizedRectangle;
|
||||||
string deterministicHashCodeKey;
|
string deterministicHashCodeKey;
|
||||||
MappingFromFilter mappingFromFilter;
|
MappingFromFilter mappingFromFilter;
|
||||||
@ -292,11 +293,14 @@ public partial class DlibDotNet
|
|||||||
isFocusModel = true;
|
isFocusModel = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mappingFromFilter = new(isFocusModel, isFocusRelativePath, isIgnoreRelativePath);
|
|
||||||
foreach (Shared.Models.Face face in faces)
|
foreach (Shared.Models.Face face in faces)
|
||||||
{
|
{
|
||||||
if (item.Property?.Id is null || face.FaceEncoding is null || face.Location is null || face.OutputResolution is null)
|
if (item.Property?.Id is null || face.FaceEncoding is null || face.Location is null || face.OutputResolution is null)
|
||||||
|
{
|
||||||
|
inSkipCollection = null;
|
||||||
mappingFromLocation = null;
|
mappingFromLocation = null;
|
||||||
|
mappingFromFilter = new(isFocusModel, isFocusRelativePath, isIgnoreRelativePath, inSkipCollection);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
confidencePercent = Shared.Models.Stateless.Methods.ILocation.GetConfidencePercent(_Configuration.FaceConfidencePercent, _Configuration.RangeFaceConfidence, face.Location.Confidence);
|
confidencePercent = Shared.Models.Stateless.Methods.ILocation.GetConfidencePercent(_Configuration.FaceConfidencePercent, _Configuration.RangeFaceConfidence, face.Location.Confidence);
|
||||||
@ -304,6 +308,8 @@ public partial class DlibDotNet
|
|||||||
normalizedRectangle = Shared.Models.Stateless.Methods.ILocation.GetNormalizedRectangle(face.Location, Shared.Models.Stateless.ILocation.Digits, face.OutputResolution);
|
normalizedRectangle = Shared.Models.Stateless.Methods.ILocation.GetNormalizedRectangle(face.Location, Shared.Models.Stateless.ILocation.Digits, face.OutputResolution);
|
||||||
deterministicHashCodeKey = Shared.Models.Stateless.Methods.IMapping.GetDeterministicHashCodeKey(item.Property.Id.Value, face.Location, Shared.Models.Stateless.ILocation.Digits, face.OutputResolution);
|
deterministicHashCodeKey = Shared.Models.Stateless.Methods.IMapping.GetDeterministicHashCodeKey(item.Property.Id.Value, face.Location, Shared.Models.Stateless.ILocation.Digits, face.OutputResolution);
|
||||||
mappingFromLocation = new(faceAreaPermyriad, confidencePercent, deterministicHashCodeKey, normalizedRectangle);
|
mappingFromLocation = new(faceAreaPermyriad, confidencePercent, deterministicHashCodeKey, normalizedRectangle);
|
||||||
|
inSkipCollection = mapLogic.InSkipCollection(item.Property.Id.Value, mappingFromLocation);
|
||||||
|
mappingFromFilter = new(isFocusModel, isFocusRelativePath, isIgnoreRelativePath, inSkipCollection);
|
||||||
}
|
}
|
||||||
mapping = new(mappingFromItem, mappingFromFilter, mappingFromLocation, mappingFromPhotoPrismCollection);
|
mapping = new(mappingFromItem, mappingFromFilter, mappingFromLocation, mappingFromPhotoPrismCollection);
|
||||||
_ = mapLogic.UpdateMappingFromPerson(mapping);
|
_ = mapLogic.UpdateMappingFromPerson(mapping);
|
||||||
@ -770,7 +776,9 @@ public partial class DlibDotNet
|
|||||||
{
|
{
|
||||||
string dFacesContentDirectory = Path.Combine(dResultsFullGroupDirectory, "()");
|
string dFacesContentDirectory = Path.Combine(dResultsFullGroupDirectory, "()");
|
||||||
string d2FacePartsContentDirectory = Path.Combine(d2ResultsFullGroupDirectory, "()");
|
string d2FacePartsContentDirectory = Path.Combine(d2ResultsFullGroupDirectory, "()");
|
||||||
|
string d2FacePartsContentCollectionDirectory = Path.Combine(d2ResultsFullGroupDirectory, "[()]");
|
||||||
Shared.Models.Stateless.Methods.IPath.ChangeDateForEmptyDirectories(d2FacePartsContentDirectory, ticks);
|
Shared.Models.Stateless.Methods.IPath.ChangeDateForEmptyDirectories(d2FacePartsContentDirectory, ticks);
|
||||||
|
Shared.Models.Stateless.Methods.IPath.MakeHiddenIfAllItemsAreHidden(d2FacePartsContentCollectionDirectory);
|
||||||
string dFacesCollectionDirectory = Path.Combine(dResultsFullGroupDirectory, "[]", _Configuration.PropertyConfiguration.ResultAllInOne);
|
string dFacesCollectionDirectory = Path.Combine(dResultsFullGroupDirectory, "[]", _Configuration.PropertyConfiguration.ResultAllInOne);
|
||||||
Dictionary<int, Dictionary<int, Mapping>> idToNormalizedRectangleToMapping = Map.Models.Stateless.Methods.IMapLogic.GetIdToNormalizedRectangleToFace(mappingCollection);
|
Dictionary<int, Dictionary<int, Mapping>> idToNormalizedRectangleToMapping = Map.Models.Stateless.Methods.IMapLogic.GetIdToNormalizedRectangleToFace(mappingCollection);
|
||||||
if (Directory.Exists(fPhotoPrismContentDirectory))
|
if (Directory.Exists(fPhotoPrismContentDirectory))
|
||||||
|
@ -180,7 +180,6 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
|||||||
const int zero = 0;
|
const int zero = 0;
|
||||||
string mappingSegmentB;
|
string mappingSegmentB;
|
||||||
PersonBirthday personBirthday;
|
PersonBirthday personBirthday;
|
||||||
List<int>? normalizedRectangles;
|
|
||||||
PersonContainer[]? personContainers;
|
PersonContainer[]? personContainers;
|
||||||
Dictionary<int, PersonContainer[]>? normalizedRectangleToPersonContainers;
|
Dictionary<int, PersonContainer[]>? normalizedRectangleToPersonContainers;
|
||||||
for (int i = 1; i < 2; i++)
|
for (int i = 1; i < 2; i++)
|
||||||
@ -189,14 +188,14 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
|||||||
continue;
|
continue;
|
||||||
if (!_IdThenNormalizedRectangleToPersonContainers.TryGetValue(mapping.MappingFromItem.Id, out normalizedRectangleToPersonContainers))
|
if (!_IdThenNormalizedRectangleToPersonContainers.TryGetValue(mapping.MappingFromItem.Id, out normalizedRectangleToPersonContainers))
|
||||||
{
|
{
|
||||||
if (_SkipCollection.TryGetValue(mapping.MappingFromItem.Id, out normalizedRectangles) && normalizedRectangles.Contains(mapping.MappingFromLocation.NormalizedRectangle))
|
if (mapping.MappingFromFilter.InSkipCollection is not null && mapping.MappingFromFilter.InSkipCollection.Value)
|
||||||
continue;
|
continue;
|
||||||
result += 1;
|
result += 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!normalizedRectangleToPersonContainers.TryGetValue(mapping.MappingFromLocation.NormalizedRectangle, out personContainers))
|
if (!normalizedRectangleToPersonContainers.TryGetValue(mapping.MappingFromLocation.NormalizedRectangle, out personContainers))
|
||||||
{
|
{
|
||||||
if (_SkipCollection.TryGetValue(mapping.MappingFromItem.Id, out normalizedRectangles) && normalizedRectangles.Contains(mapping.MappingFromLocation.NormalizedRectangle))
|
if (mapping.MappingFromFilter.InSkipCollection is not null && mapping.MappingFromFilter.InSkipCollection.Value)
|
||||||
continue;
|
continue;
|
||||||
result += 1;
|
result += 1;
|
||||||
continue;
|
continue;
|
||||||
@ -455,9 +454,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
|||||||
SaveContainer? saveContainer;
|
SaveContainer? saveContainer;
|
||||||
FileHolder facePartsFileHolder;
|
FileHolder facePartsFileHolder;
|
||||||
FileHolder hiddenFaceFileHolder;
|
FileHolder hiddenFaceFileHolder;
|
||||||
List<int>? normalizedRectangles;
|
|
||||||
Dictionary<int, Mapping>? normalizedRectangleToMapping;
|
Dictionary<int, Mapping>? normalizedRectangleToMapping;
|
||||||
bool skipNotSkipDirectoriesAny = _Configuration.SkipNotSkipDirectories.Any();
|
|
||||||
string forceSingleImageHumanized = nameof(Shared.Models.Stateless.IMapLogic.ForceSingleImage).Humanize(LetterCasing.Title);
|
string forceSingleImageHumanized = nameof(Shared.Models.Stateless.IMapLogic.ForceSingleImage).Humanize(LetterCasing.Title);
|
||||||
foreach (Mapping mapping in mappingCollection)
|
foreach (Mapping mapping in mappingCollection)
|
||||||
{
|
{
|
||||||
@ -466,9 +463,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
|||||||
directoryName = Path.GetDirectoryName(mapping.MappingFromItem.RelativePath);
|
directoryName = Path.GetDirectoryName(mapping.MappingFromItem.RelativePath);
|
||||||
if (directoryName is null)
|
if (directoryName is null)
|
||||||
throw new NotSupportedException();
|
throw new NotSupportedException();
|
||||||
if (_SkipCollection.TryGetValue(mapping.MappingFromItem.Id, out normalizedRectangles) && normalizedRectangles.Contains(mapping.MappingFromLocation.NormalizedRectangle))
|
if (mapping.MappingFromFilter.InSkipCollection is not null && mapping.MappingFromFilter.InSkipCollection.Value)
|
||||||
continue;
|
|
||||||
if (mapping.By is null && skipNotSkipDirectoriesAny)
|
|
||||||
continue;
|
continue;
|
||||||
(by, isByMapping, isBySorting) = Get(useFiltersCounter, sortingContainersAny, forceSingleImageHumanized, mapping);
|
(by, isByMapping, isBySorting) = Get(useFiltersCounter, sortingContainersAny, forceSingleImageHumanized, mapping);
|
||||||
if (isByMapping && !saveMapped)
|
if (isByMapping && !saveMapped)
|
||||||
@ -1350,4 +1345,11 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool InSkipCollection(int id, MappingFromLocation mappingFromLocation)
|
||||||
|
{
|
||||||
|
bool result;
|
||||||
|
result = _SkipCollection.TryGetValue(id, out List<int>? normalizedRectangles) && normalizedRectangles.Contains(mappingFromLocation.NormalizedRectangle);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -80,13 +80,15 @@ public class MappingFromFilter : Properties.IMappingFromFilter
|
|||||||
public bool? IsFocusModel { init; get; }
|
public bool? IsFocusModel { init; get; }
|
||||||
public bool? IsFocusRelativePath { init; get; }
|
public bool? IsFocusRelativePath { init; get; }
|
||||||
public bool? IsIgnoreRelativePath { init; get; }
|
public bool? IsIgnoreRelativePath { init; get; }
|
||||||
|
public bool? InSkipCollection { init; get; }
|
||||||
|
|
||||||
[JsonConstructor]
|
[JsonConstructor]
|
||||||
public MappingFromFilter(bool? isFocusModel, bool? isFocusRelativePath, bool? isIgnoreRelativePath)
|
public MappingFromFilter(bool? isFocusModel, bool? isFocusRelativePath, bool? isIgnoreRelativePath, bool? inSkipCollection)
|
||||||
{
|
{
|
||||||
IsFocusModel = isFocusModel;
|
IsFocusModel = isFocusModel;
|
||||||
IsFocusRelativePath = isFocusRelativePath;
|
IsFocusRelativePath = isFocusRelativePath;
|
||||||
IsIgnoreRelativePath = isIgnoreRelativePath;
|
IsIgnoreRelativePath = isIgnoreRelativePath;
|
||||||
|
InSkipCollection = inSkipCollection;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
|
@ -19,6 +19,7 @@ public interface IMappingFromFilter
|
|||||||
public bool? IsFocusModel { init; get; }
|
public bool? IsFocusModel { init; get; }
|
||||||
public bool? IsFocusRelativePath { init; get; }
|
public bool? IsFocusRelativePath { init; get; }
|
||||||
public bool? IsIgnoreRelativePath { init; get; }
|
public bool? IsIgnoreRelativePath { init; get; }
|
||||||
|
public bool? InSkipCollection { init; get; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,11 @@ public interface IPath
|
|||||||
static void ChangeDateForEmptyDirectories(string rootDirectory, long ticks) =>
|
static void ChangeDateForEmptyDirectories(string rootDirectory, long ticks) =>
|
||||||
XPath.ChangeDateForEmptyDirectories(rootDirectory, ticks);
|
XPath.ChangeDateForEmptyDirectories(rootDirectory, ticks);
|
||||||
|
|
||||||
|
void TestStatic_MakeHiddenIfAllItemsAreHidden(string rootDirectory) =>
|
||||||
|
MakeHiddenIfAllItemsAreHidden(rootDirectory);
|
||||||
|
static void MakeHiddenIfAllItemsAreHidden(string rootDirectory) =>
|
||||||
|
XPath.MakeHiddenIfAllItemsAreHidden(rootDirectory);
|
||||||
|
|
||||||
void TestStatic_DeleteEmptyDirectories(string rootDirectory, List<string> deletedDirectories) =>
|
void TestStatic_DeleteEmptyDirectories(string rootDirectory, List<string> deletedDirectories) =>
|
||||||
DeleteEmptyDirectories(rootDirectory, deletedDirectories);
|
DeleteEmptyDirectories(rootDirectory, deletedDirectories);
|
||||||
static void DeleteEmptyDirectories(string rootDirectory, List<string> deletedDirectories) =>
|
static void DeleteEmptyDirectories(string rootDirectory, List<string> deletedDirectories) =>
|
||||||
|
@ -190,4 +190,46 @@ internal abstract class XPath
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static void MakeHiddenIfAllItemsAreHidden(string rootDirectory)
|
||||||
|
{
|
||||||
|
bool check;
|
||||||
|
FileInfo fileInfo;
|
||||||
|
IEnumerable<string> files;
|
||||||
|
DirectoryInfo directoryInfo;
|
||||||
|
IEnumerable<string> subDirectories;
|
||||||
|
string[] directories = Directory.GetDirectories(rootDirectory, "*", SearchOption.AllDirectories);
|
||||||
|
foreach (string directory in directories)
|
||||||
|
{
|
||||||
|
directoryInfo = new(directory);
|
||||||
|
if (directoryInfo.Attributes.HasFlag(FileAttributes.Hidden))
|
||||||
|
continue;
|
||||||
|
check = true;
|
||||||
|
subDirectories = Directory.EnumerateDirectories(directory, "*", SearchOption.TopDirectoryOnly);
|
||||||
|
foreach (string subDirectory in subDirectories)
|
||||||
|
{
|
||||||
|
directoryInfo = new(subDirectory);
|
||||||
|
if (!directoryInfo.Attributes.HasFlag(FileAttributes.Hidden))
|
||||||
|
{
|
||||||
|
check = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!check)
|
||||||
|
continue;
|
||||||
|
files = Directory.EnumerateFiles(directory, "*", SearchOption.TopDirectoryOnly);
|
||||||
|
foreach (string file in files)
|
||||||
|
{
|
||||||
|
fileInfo = new(file);
|
||||||
|
if (!fileInfo.Attributes.HasFlag(FileAttributes.Hidden))
|
||||||
|
{
|
||||||
|
check = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!check)
|
||||||
|
continue;
|
||||||
|
directoryInfo.Attributes |= FileAttributes.Hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user