@ -289,7 +289,7 @@ public partial class DlibDotNet
return result ;
}
private int GetNotMappedCountAndSetMapping ( MapLogic mapLogic , Item item , bool? isFocusRelativePath , bool? isIgnoreRelativePath , ReadOnlyCollection < LocationContainer < MetadataExtractor . Directory > > locationContainers , MappingFromItem mappingFromItem , List < MappingFromPhotoPrism > ? mappingFromPhotoPrismCollection , List < Shared . Models . Face > faces )
private int GetNotMappedCountAndSetMapping ( MapLogic mapLogic , Item item , bool? isFocusRelativePath , ReadOnlyCollection < LocationContainer < MetadataExtractor . Directory > > locationContainers , MappingFromItem mappingFromItem , List < MappingFromPhotoPrism > ? mappingFromPhotoPrismCollection , List < Shared . Models . Face > faces )
{
int result ;
double? α ;
@ -319,7 +319,7 @@ public partial class DlibDotNet
isFocusPerson = null ;
inSkipCollection = null ;
mappingFromLocation = null ;
mappingFromFilter = new ( isFocusModel , isFocusPerson , isFocusRelativePath , isIgnoreRelativePath , inSkipCollection , isUsed ) ;
mappingFromFilter = new ( isFocusModel , isFocusPerson , isFocusRelativePath , inSkipCollection , isUsed ) ;
}
else
{
@ -338,7 +338,7 @@ public partial class DlibDotNet
isUsed = mapLogic . IsUsed ( ignoreXMatches , item . Property . Id . Value , wholePercentagesToPersonContainers , mappingFromLocation ) ;
inSkipCollection = mapLogic . InSkipCollection ( item . Property . Id . Value , mappingFromLocation ) ;
isFocusPerson = mapLogic . IsFocusPerson ( _Configuration . SkipPersonWithMoreThen , _JLinkResolvedDirectories , wholePercentagesToPersonContainers , mappingFromLocation ) ;
mappingFromFilter = new ( isFocusModel , isFocusPerson , isFocusRelativePath , isIgnoreRelativePath , inSkipCollection , isUsed ) ;
mappingFromFilter = new ( isFocusModel , isFocusPerson , isFocusRelativePath , inSkipCollection , isUsed ) ;
}
mapping = new ( mappingFromItem , mappingFromFilter , mappingFromLocation , mappingFromPhotoPrismCollection ) ;
notMapped + = mapLogic . UpdateMappingFromPerson ( locationContainersFiles , wholePercentagesToPersonContainers , mapping ) ;
@ -348,7 +348,7 @@ public partial class DlibDotNet
return result ;
}
private ( Mapping , int ) GetMapping ( MapLogic mapLogic , ReadOnlyCollection < string > ? locationContainersFiles , Item item , bool? isFocusRelativePath , bool? isIgnoreRelativePath , MappingFromItem mappingFromItem )
private ( Mapping , int ) GetMapping ( MapLogic mapLogic , ReadOnlyCollection < string > ? locationContainersFiles , Item item , bool? isFocusRelativePath , MappingFromItem mappingFromItem )
{
Mapping result ;
bool? isUsed ;
@ -371,7 +371,7 @@ public partial class DlibDotNet
isFocusPerson = null ;
inSkipCollection = null ;
mappingFromLocation = null ;
mappingFromFilter = new ( isFocusModel , isFocusPerson , isFocusRelativePath , isIgnoreRelativePath , inSkipCollection , isUsed ) ;
mappingFromFilter = new ( isFocusModel , isFocusPerson , isFocusRelativePath , inSkipCollection , isUsed ) ;
}
else
{
@ -381,7 +381,7 @@ public partial class DlibDotNet
isUsed = mapLogic . IsUsed ( ignoreXMatches , item . Property . Id . Value , wholePercentagesToPersonContainers , mappingFromLocation ) ;
inSkipCollection = mapLogic . InSkipCollection ( item . Property . Id . Value , mappingFromLocation ) ;
isFocusPerson = mapLogic . IsFocusPerson ( _Configuration . SkipPersonWithMoreThen , _JLinkResolvedDirectories , wholePercentagesToPersonContainers , mappingFromLocation ) ;
mappingFromFilter = new ( isFocusModel , isFocusPerson , isFocusRelativePath , isIgnoreRelativePath , inSkipCollection , isUsed ) ;
mappingFromFilter = new ( isFocusModel , isFocusPerson , isFocusRelativePath , inSkipCollection , isUsed ) ;
}
result = new ( mappingFromItem , mappingFromFilter , mappingFromLocation , mappingFromPhotoPrismCollection : null ) ;
int notMapped = mapLogic . UpdateMappingFromPerson ( locationContainersFiles , wholePercentagesToPersonContainers , result ) ;
@ -425,7 +425,6 @@ public partial class DlibDotNet
Item item ,
DateTime [ ] containerDateTimes ,
bool? isFocusRelativePath ,
bool? isIgnoreRelativePath ,
string facePartsCollectionDirectory )
{
int result = 0 ;
@ -505,7 +504,7 @@ public partial class DlibDotNet
faces = _Faces . GetFaces ( outputResolution , dResultsFullGroupDirectory , subFileTuples , parseExceptions , property , mappingFromItem , outputResolutionToResize , locationContainers , mappingFromPhotoPrismCollection ) ;
if ( _AppSettings . MaxDegreeOfParallelism < 2 )
ticks = LogDelta ( ticks , nameof ( D_Face . GetFaces ) ) ;
result = GetNotMappedCountAndSetMapping ( mapLogic , item , isFocusRelativePath , isIgnoreRelativePath , locationContainers , mappingFromItem , mappingFromPhotoPrismCollection , faces ) ;
result = GetNotMappedCountAndSetMapping ( mapLogic , item , isFocusRelativePath , locationContainers , mappingFromItem , mappingFromPhotoPrismCollection , faces ) ;
List < ( Shared . Models . Face , FileInfo ? , string , bool Saved ) > faceCollection = _Faces . SaveFaces ( _FaceParts . FileNameExtension , dResultsFullGroupDirectory , subFileTuples , parseExceptions , mappingFromItem , faces ) ;
if ( _Configuration . CopyFacesAndSaveFaceLandmarkForOutputResolutions . Contains ( outputResolution ) )
_FaceParts . CopyFacesAndSaveFaceLandmarkImage ( facePartsCollectionDirectory , mappingFromItem , faceCollection ) ;
@ -559,29 +558,27 @@ public partial class DlibDotNet
string focusRelativePath = Path . GetFullPath ( string . Concat ( _Configuration . PropertyConfiguration . RootDirectory , _Configuration . FocusDirectory ) ) ;
bool? isFocusRelativePath = string . IsNullOrEmpty ( _Configuration . FocusDirectory ) ? null : container . SourceDirectory . StartsWith ( focusRelativePath ) ;
string facePartsCollectionDirectory = _Configuration . CopyFacesAndSaveFaceLandmarkForOutputResolutions . Contains ( outputResolution ) ? _FaceParts . GetFacePartsDirectory ( _Configuration . PropertyConfiguration , d2ResultsFullGroupDirectory , item : filteredItems . First ( ) , includeNameWithoutExtension : false ) : string . Empty ;
bool? isIgnoreRelativePath = _Configuration . IgnoreRelativePaths . Length = = 0 ? null : _Configuration . IgnoreRelativePaths . Any ( l = > container . SourceDirectory . Contains ( l ) ) & & Shared . Models . Stateless . Methods . IContainer . IsIgnoreRelativePath ( _Configuration . PropertyConfiguration , _Configuration . IgnoreRelativePaths , container . SourceDirectory ) ;
using ProgressBar progressBar = new ( filteredItems . Length , message , options ) ;
_ = Parallel . For ( 0 , filteredItems . Length , parallelOptions , ( i , state ) = >
{
try
{
result + = FullParallelForWork ( propertyLogic ,
metadata ,
mapLogic ,
outputResolution ,
outputResolutionHasNumber ,
cResultsFullGroupDirectory ,
dResultsFullGroupDirectory ,
d2ResultsFullGroupDirectory ,
sourceDirectoryChanges ,
fileNameToCollection ,
container ,
index : i ,
filteredItems [ i ] ,
containerDateTimes ,
isFocusRelativePath ,
isIgnoreRelativePath ,
facePartsCollectionDirectory ) ;
metadata ,
mapLogic ,
outputResolution ,
outputResolutionHasNumber ,
cResultsFullGroupDirectory ,
dResultsFullGroupDirectory ,
d2ResultsFullGroupDirectory ,
sourceDirectoryChanges ,
fileNameToCollection ,
container ,
index : i ,
filteredItems [ i ] ,
containerDateTimes ,
isFocusRelativePath ,
facePartsCollectionDirectory ) ;
if ( i = = 0 | | sourceDirectoryChanges . Count > 0 )
progressBar . Tick ( ) ;
}
@ -908,7 +905,6 @@ public partial class DlibDotNet
bool anyValidFaces ;
string focusRelativePath ;
bool? isFocusRelativePath ;
bool? isIgnoreRelativePath ;
List < int > distinct = new ( ) ;
DateTime [ ] containerDateTimes ;
IEnumerable < Item > filteredItems ;
@ -925,7 +921,6 @@ public partial class DlibDotNet
containerDateTimes = Shared . Models . Stateless . Methods . IContainer . GetContainerDateTimes ( filteredItems ) ;
focusRelativePath = Path . GetFullPath ( string . Concat ( _Configuration . PropertyConfiguration . RootDirectory , _Configuration . FocusDirectory ) ) ;
isFocusRelativePath = string . IsNullOrEmpty ( _Configuration . FocusDirectory ) ? null : container . SourceDirectory . StartsWith ( focusRelativePath ) ;
isIgnoreRelativePath = _Configuration . IgnoreRelativePaths . Length = = 0 ? null : _Configuration . IgnoreRelativePaths . Any ( l = > container . SourceDirectory . Contains ( l ) ) & & Shared . Models . Stateless . Methods . IContainer . IsIgnoreRelativePath ( _Configuration . PropertyConfiguration , _Configuration . IgnoreRelativePaths , container . SourceDirectory ) ;
foreach ( Item item in filteredItems )
{
if ( item . Property ? . Id is null | | item . ResizedFileHolder is null )
@ -952,7 +947,7 @@ public partial class DlibDotNet
}
if ( ! anyValidFaces )
{
( mapping , notMapped ) = GetMapping ( mapLogic , locationContainersFiles , item , isFocusRelativePath , isIgnoreRelativePath , mappingFromItem ) ;
( mapping , notMapped ) = GetMapping ( mapLogic , locationContainersFiles , item , isFocusRelativePath , mappingFromItem ) ;
mappingCollection . Add ( mapping ) ;
}
}
@ -1199,7 +1194,7 @@ public partial class DlibDotNet
fileNameToCollection = ! Directory . Exists ( fPhotoPrismSingletonDirectory ) ? fileNameToCollection = new ( ) : F_PhotoPrism . GetFileNameToCollection ( fPhotoPrismSingletonDirectory ) ;
B_Metadata metadata = new ( _Configuration . PropertyConfiguration , _Configuration . ForceMetadataLastWriteTimeToCreationTime , _Configuration . PropertiesChangedForMetadata , bResultsFullGroupDirectory ) ;
mapLogic ? ? = new ( _AppSettings . MaxDegreeOfParallelism , _Configuration . PropertyConfiguration , _MapConfiguration , _Distance , personContainers , ticks , a2PeopleSingletonDirectory , eDistanceContentDirectory ) ;
containers = Shared . Models . Stateless . Methods . IContainer . SortContainers ( _Configuration . PropertyConfiguration , _Configuration . IgnoreRelativePaths , _ ArgZeroIsConfigurationRootDirectory , argZero , containers ) ;
containers = Shared . Models . Stateless . Methods . IContainer . SortContainers ( _ArgZeroIsConfigurationRootDirectory , argZero , containers ) ;
FullDoWork ( argZero , propertyRoot , ticks , aResultsFullGroupDirectory , bResultsFullGroupDirectory , t , containers , propertyLogic , metadata , fileNameToCollection , mapLogic ) ;
ReadOnlyCollection < Item > distinctFilteredItems = Shared . Models . Stateless . Methods . IContainer . GetItems ( _Configuration . PropertyConfiguration , new ( containers ) , distinctItems : true , filterItems : true ) ;
if ( _Configuration . LookForAbandoned )