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

View File

@ -15,7 +15,6 @@ public class Configuration
public int PersonBirthdayFirstYear { init; get; } public int PersonBirthdayFirstYear { init; get; }
public string PersonBirthdayFormat { init; get; } public string PersonBirthdayFormat { init; get; }
public char[] PersonCharacters { init; get; } public char[] PersonCharacters { init; get; }
public int PersonCharactersCopyCount { init; get; }
public int RangeDaysDeltaTolerance { init; get; } public int RangeDaysDeltaTolerance { init; get; }
public double RangeDistanceTolerance { init; get; } public double RangeDistanceTolerance { init; get; }
public bool SaveSortingWithoutPerson { init; get; } public bool SaveSortingWithoutPerson { init; get; }
@ -30,7 +29,6 @@ public class Configuration
int personBirthdayFirstYear, int personBirthdayFirstYear,
string personBirthdayFormat, string personBirthdayFormat,
char[] personCharacters, char[] personCharacters,
int personCharactersCopyCount,
int[] rangeDaysDeltaTolerance, int[] rangeDaysDeltaTolerance,
float[] rangeDistanceTolerance, float[] rangeDistanceTolerance,
bool saveSortingWithoutPerson, bool saveSortingWithoutPerson,
@ -54,7 +52,6 @@ public class Configuration
SaveSortingWithoutPerson = saveSortingWithoutPerson; SaveSortingWithoutPerson = saveSortingWithoutPerson;
SortingMinimumToUseSigma = sortingMinimumToUseSigma; SortingMinimumToUseSigma = sortingMinimumToUseSigma;
RangeDaysDeltaTolerance = rangeDaysDeltaTolerance[1]; RangeDaysDeltaTolerance = rangeDaysDeltaTolerance[1];
PersonCharactersCopyCount = personCharactersCopyCount;
FacePartsFileNameExtension = facePartsFileNameExtension; FacePartsFileNameExtension = facePartsFileNameExtension;
FacesHiddenFileNameExtension = facesHiddenFileNameExtension; 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) if (_Configuration is null)
throw new NullReferenceException(nameof(_Configuration)); throw new NullReferenceException(nameof(_Configuration));
@ -836,7 +909,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
personKey = mapping.MappingFromPerson.PersonBirthday.Value.Ticks; personKey = mapping.MappingFromPerson.PersonBirthday.Value.Ticks;
if (!personKeyToCount.ContainsKey(personKey)) if (!personKeyToCount.ContainsKey(personKey))
personKeyToCount.Add(personKey, 0); personKeyToCount.Add(personKey, 0);
if (personKeyToCount[personKey] > _Configuration.PersonCharactersCopyCount) if (personKeyToCount[personKey] > personCharactersCopyCount)
continue; continue;
if (!_PersonKeyToPersonContainer.TryGetValue(personKey, out personContainer)) if (!_PersonKeyToPersonContainer.TryGetValue(personKey, out personContainer))
continue; continue;

View File

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

View File

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