Ignore bug

This commit is contained in:
Mike Phares 2023-04-10 17:26:04 -07:00
parent 4d0739dee6
commit 0a553c50ff
5 changed files with 92 additions and 8 deletions

View File

@ -256,7 +256,6 @@ public partial class DlibDotNet
configuration.PersonBirthdayFirstYear,
configuration.PersonBirthdayFormat,
configuration.PersonCharacters.ToArray(),
configuration.PersonCharactersCopyCount,
configuration.RangeDaysDeltaTolerance,
configuration.RangeDistanceTolerance,
configuration.SaveSortingWithoutPerson,
@ -802,8 +801,12 @@ public partial class DlibDotNet
List<Item> filteredItems = GetItems(argZero, containers);
mapLogic.SaveShortcutsForOutputResolutionsDuringMapLogic(personKeyToIds, dFacesContentDirectory, filteredItems, mappingCollection);
}
if (_Configuration.PersonCharactersCopyCount > 0 && !string.IsNullOrEmpty(_Configuration.PersonCharacters))
mapLogic.CopyAtLeastOneMappedFiles(dFacesContentDirectory, a2PeopleSingletonDirectory, mappingCollection);
if (!string.IsNullOrEmpty(_Configuration.PersonCharacters))
{
if (_Configuration.PersonCharactersCopyCount > 0)
mapLogic.CopyAtLeastOneMappedFiles(_Configuration.PersonCharactersCopyCount, dFacesContentDirectory, a2PeopleSingletonDirectory, mappingCollection);
mapLogic.SavePersonKeyToCount(dFacesContentDirectory, a2PeopleSingletonDirectory, mappingCollection);
}
mapLogic.CopyManualFiles(dFacesContentDirectory, idToNormalizedRectangleToMapping);
if (_Configuration.SaveMappedForOutputResolutions.Contains(outputResolution))
mapLogic.SaveMapped(dFacesContentDirectory, d2FacePartsContentDirectory, d2FacePartsContentCollectionDirectory, personKeyToIds, mappingCollection, idToNormalizedRectangleToMapping, totalNotMapped);

View File

@ -15,7 +15,6 @@ public class Configuration
public int PersonBirthdayFirstYear { init; get; }
public string PersonBirthdayFormat { init; get; }
public char[] PersonCharacters { init; get; }
public int PersonCharactersCopyCount { init; get; }
public int RangeDaysDeltaTolerance { init; get; }
public double RangeDistanceTolerance { init; get; }
public bool SaveSortingWithoutPerson { init; get; }
@ -30,7 +29,6 @@ public class Configuration
int personBirthdayFirstYear,
string personBirthdayFormat,
char[] personCharacters,
int personCharactersCopyCount,
int[] rangeDaysDeltaTolerance,
float[] rangeDistanceTolerance,
bool saveSortingWithoutPerson,
@ -54,7 +52,6 @@ public class Configuration
SaveSortingWithoutPerson = saveSortingWithoutPerson;
SortingMinimumToUseSigma = sortingMinimumToUseSigma;
RangeDaysDeltaTolerance = rangeDaysDeltaTolerance[1];
PersonCharactersCopyCount = personCharactersCopyCount;
FacePartsFileNameExtension = facePartsFileNameExtension;
FacesHiddenFileNameExtension = facesHiddenFileNameExtension;
}

View File

@ -800,7 +800,80 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
}
}
public void CopyAtLeastOneMappedFiles(string dFacesContentDirectory, string a2PeopleSingletonDirectory, Mapping[] mappingCollection)
private List<string> GetDirectories(string a2PeopleSingletonDirectory, Mapping[] mappingCollection)
{
if (_Configuration is null)
throw new NullReferenceException(nameof(_Configuration));
List<string> results = new();
long personKey;
string directory;
string? directoryName;
PersonContainer? personContainer;
Dictionary<long, int> personKeyToCount = new();
for (int i = 1; i < 3; i++)
{
foreach (Mapping mapping in mappingCollection)
{
if (mapping.MappingFromLocation is null || mapping.MappingFromPerson is null)
continue;
if (mapping.By is null or Shared.Models.Stateless.IMapLogic.Sorting)
continue;
if (string.IsNullOrEmpty(mapping.MappingFromPerson.SegmentB))
throw new NotSupportedException();
if (string.IsNullOrEmpty(mapping.MappingFromPerson.DisplayDirectoryName))
throw new NotSupportedException();
personKey = mapping.MappingFromPerson.PersonBirthday.Value.Ticks;
if (mapping.MappingFromItem.ResizedFileHolder.DirectoryName is null || !mapping.MappingFromItem.ResizedFileHolder.Exists)
continue;
directoryName = Path.GetDirectoryName(mapping.MappingFromItem.RelativePath);
if (directoryName is null)
throw new NotSupportedException();
if (!_PersonKeyToPersonContainer.TryGetValue(personKey, out personContainer))
continue;
if (personContainer.Char is null || !_Configuration.PersonCharacters.Contains(personContainer.Char.Value))
continue;
if (i == 1)
{
if (!personKeyToCount.ContainsKey(personKey))
personKeyToCount.Add(personKey, 0);
personKeyToCount[personKey]++;
}
else if (i == 2)
{
directory = Path.Combine(a2PeopleSingletonDirectory, personContainer.Char.Value.ToString(), personContainer.DisplayDirectoryName, personKeyToCount[personKey].ToString("0000"));
if (results.Contains(directory))
continue;
results.Add(directory);
}
else
throw new NotSupportedException();
}
}
return results;
}
public void SavePersonKeyToCount(string dFacesContentDirectory, string a2PeopleSingletonDirectory, Mapping[] mappingCollection)
{
List<string> directories = GetDirectories(a2PeopleSingletonDirectory, mappingCollection);
string directoryName;
string? personNameDirectory;
DateTime dateTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day).AddDays(1);
foreach (string directory in directories)
{
if (Directory.Exists(directory))
continue;
_ = Directory.CreateDirectory(directory);
directoryName = Path.GetFileName(directory);
personNameDirectory = Path.GetDirectoryName(directory);
if (string.IsNullOrEmpty(personNameDirectory))
continue;
if (!int.TryParse(directoryName, out int count))
continue;
Directory.SetLastWriteTime(personNameDirectory, dateTime.AddMinutes(count));
}
}
public void CopyAtLeastOneMappedFiles(int personCharactersCopyCount, string dFacesContentDirectory, string a2PeopleSingletonDirectory, Mapping[] mappingCollection)
{
if (_Configuration is null)
throw new NullReferenceException(nameof(_Configuration));
@ -836,7 +909,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
personKey = mapping.MappingFromPerson.PersonBirthday.Value.Ticks;
if (!personKeyToCount.ContainsKey(personKey))
personKeyToCount.Add(personKey, 0);
if (personKeyToCount[personKey] > _Configuration.PersonCharactersCopyCount)
if (personKeyToCount[personKey] > personCharactersCopyCount)
continue;
if (!_PersonKeyToPersonContainer.TryGetValue(personKey, out personContainer))
continue;

View File

@ -184,6 +184,7 @@ internal abstract class MapLogic
List<(string, string[], string)> results = new();
int? id;
string[] files;
string fileName;
const int zero = 0;
string[] yearDirectories;
int? normalizedRectangle;
@ -191,6 +192,7 @@ internal abstract class MapLogic
string ticksDirectoryName;
string? personFirstInitial;
bool isReservedDirectoryName;
List<string> distinct = new();
string[] personKeyDirectories;
string[] personNameDirectories;
string[] personNameLinkDirectories;
@ -265,6 +267,14 @@ internal abstract class MapLogic
(id, normalizedRectangle) = IMapping.GetConverted(configuration.FacesFileNameExtension, file);
if (id is null || normalizedRectangle is null)
continue;
fileName = Path.GetFileName(file);
if (distinct.Contains(fileName))
{
if (!File.Exists($"{file}.dup"))
File.Move(file, $"{file}.dup");
continue;
}
distinct.Add(fileName);
results.Add(new(personKeyFormatted, personDisplayDirectoryNames, file));
}
personNameLinkDirectories = Directory.GetDirectories(personFirstInitialDirectory, "*", SearchOption.TopDirectoryOnly);

View File

@ -13,6 +13,7 @@ internal abstract class PersonContainer
List<string> distinct = new();
string fileNameWithoutExtension;
string personDisplayDirectoryName = Path.GetFileName(personDisplayDirectory);
results.AddRange(Directory.GetFiles(personDisplayDirectory, "*", SearchOption.TopDirectoryOnly));
string[] directories = Directory.GetDirectories(personDisplayDirectory, "*", SearchOption.TopDirectoryOnly);
foreach (string directory in directories)
{