Added filter for Robert to Save Shortcuts

This commit is contained in:
Mike Phares 2022-09-26 17:36:47 -07:00
parent 27a4a1cfb4
commit abe6c80d82
4 changed files with 68 additions and 83 deletions

1
.vscode/launch.json vendored
View File

@ -145,3 +145,4 @@
// https://scontent-lax3-2.xx.fbcdn.net/v/t39.30808-6/280689051_10209840036394561_8737214584492733274_n.jpg?_nc_cat=101&ccb=1-7&_nc_sid=8bfeb9&_nc_ohc=iMAAHqNekCgAX8fvEAm&_nc_ht=scontent-lax3-2.xx&oh=00_AT8b7_ODsDN7lNgTKr7JZiUE65R7WWYxENl1vOUGeobpBw&oe=6336E678 // https://scontent-lax3-2.xx.fbcdn.net/v/t39.30808-6/280689051_10209840036394561_8737214584492733274_n.jpg?_nc_cat=101&ccb=1-7&_nc_sid=8bfeb9&_nc_ohc=iMAAHqNekCgAX8fvEAm&_nc_ht=scontent-lax3-2.xx&oh=00_AT8b7_ODsDN7lNgTKr7JZiUE65R7WWYxENl1vOUGeobpBw&oe=6336E678
// https://scontent-lax3-1.xx.fbcdn.net/v/t1.18169-9/25110_107749419250772_1842086_n.jpg?_nc_cat=104&ccb=1-7&_nc_sid=09cbfe&_nc_ohc=xPyRCvImlaoAX9Z_UTs&_nc_ht=scontent-lax3-1.xx&oh=00_AT85xffhHDJlhzyFTBvWs8j3Gd4GyDCte_Pnd7hNM006sw&oe=635880C2 // https://scontent-lax3-1.xx.fbcdn.net/v/t1.18169-9/25110_107749419250772_1842086_n.jpg?_nc_cat=104&ccb=1-7&_nc_sid=09cbfe&_nc_ohc=xPyRCvImlaoAX9Z_UTs&_nc_ht=scontent-lax3-1.xx&oh=00_AT85xffhHDJlhzyFTBvWs8j3Gd4GyDCte_Pnd7hNM006sw&oe=635880C2
// https://scontent-lax3-2.xx.fbcdn.net/v/t1.18169-9/10259940_10153561109653458_6837681277740526675_n.jpg?_nc_cat=100&ccb=1-7&_nc_sid=8bfeb9&_nc_ohc=T1v9Wfqz8rUAX8y6bxq&tn=D0unuoVdv--xjhpM&_nc_ht=scontent-lax3-2.xx&oh=00_AT9Y9j5s19n0EzgO_dZMom8tAweFYIrJLOEsrsr4HAWHkQ&oe=63588CAE // https://scontent-lax3-2.xx.fbcdn.net/v/t1.18169-9/10259940_10153561109653458_6837681277740526675_n.jpg?_nc_cat=100&ccb=1-7&_nc_sid=8bfeb9&_nc_ohc=T1v9Wfqz8rUAX8y6bxq&tn=D0unuoVdv--xjhpM&_nc_ht=scontent-lax3-2.xx&oh=00_AT9Y9j5s19n0EzgO_dZMom8tAweFYIrJLOEsrsr4HAWHkQ&oe=63588CAE
// https://scontent-lax3-1.xx.fbcdn.net/v/t31.18172-8/17621858_10154253751886426_3939148233753829194_o.jpg?_nc_cat=104&ccb=1-7&_nc_sid=ad2b24&_nc_ohc=yMOqJQQBV80AX8Xlzr-&_nc_ht=scontent-lax3-1.xx&oh=00_AT_z0oeHJ0fqKhVA4WdgGE2cZSgL0bIKNXzPsY0zeLipAg&oe=6356AF4C

View File

@ -201,47 +201,29 @@ public class MapLogic
{ {
if (_Configuration is null) if (_Configuration is null)
throw new NullReferenceException(nameof(_Configuration)); throw new NullReferenceException(nameof(_Configuration));
string fileName; List<(Face, List<(string?, string, string?, string?, string)>)> facesToCollection = GetCollection(distinctFilteredFaces);
string fullName; foreach ((Face face, List<(string? PersonKeyFormatted, string, string?, string?, string)> collection) in facesToCollection)
string personKeyFormatted;
PersonBirthday personBirthday;
WindowsShortcut windowsShortcut;
PersonContainer? personContainer;
List<(Face, long?, (string, string, string, string))> collection = GetCollection(distinctFilteredFaces);
foreach ((Face face, long? personKey, (string directory, string copyDirectory, string copyFileName, string shortcutFileName)) in collection)
{ {
if (personKey is null) if (collection.Any(l => l.PersonKeyFormatted is not null and "1501-04-10_00"))
continue; continue;
if (face.Mapping is null) foreach ((string? personKeyFormatted, string directory, string? copyDirectory, string? copyFileName, string _) in collection)
throw new NotSupportedException();
personBirthday = IPersonBirthday.GetPersonBirthday(personKey.Value);
personKeyFormatted = IPersonBirthday.GetFormatted(_Configuration.PersonBirthdayFormat, personBirthday);
if (juliePhares.Contains(personKeyFormatted) && !string.IsNullOrEmpty(copyDirectory))
{ {
if (face.Mapping is null)
throw new NotSupportedException();
if (personKeyFormatted is null)
continue;
if (!Directory.Exists(directory))
_ = Directory.CreateDirectory(directory);
if (string.IsNullOrEmpty(copyDirectory) || string.IsNullOrEmpty(copyFileName))
continue;
if (!juliePhares.Contains(personKeyFormatted))
continue;
if (!Directory.Exists(copyDirectory)) if (!Directory.Exists(copyDirectory))
_ = Directory.CreateDirectory(copyDirectory); _ = Directory.CreateDirectory(copyDirectory);
fileName = Path.Combine(copyDirectory, $"{face.Mapping.MappingFromItem.Id}{face.Mapping.MappingFromItem.ResizedFileHolder.ExtensionLowered}"); if (!File.Exists(copyFileName))
if (!File.Exists(fileName)) File.Copy(face.Mapping.MappingFromItem.ResizedFileHolder.FullName, copyFileName);
File.Copy(face.Mapping.MappingFromItem.ResizedFileHolder.FullName, fileName); break;
} }
if (!Directory.Exists(directory))
{
_ = Directory.CreateDirectory(directory);
if (personKey is not null && _PersonKeyToPersonContainer.TryGetValue(personKey.Value, out personContainer))
{
fullName = string.Concat(personContainer.DisplayDirectoryName, ".txt");
File.WriteAllText(Path.Combine(directory, fullName), string.Empty);
}
}
fileName = Path.Combine(directory, $"{face.Mapping.MappingFromItem.Id}.lnk");
if (File.Exists(fileName))
continue;
windowsShortcut = new() { Path = face.Mapping.MappingFromItem.ResizedFileHolder.FullName };
windowsShortcut.Save(fileName);
windowsShortcut.Dispose();
if (!File.Exists(fileName))
continue;
File.SetLastWriteTime(fileName, face.Mapping.MappingFromItem.MinimumDateTime);
} }
} }
@ -423,83 +405,88 @@ public class MapLogic
SaveContainers(totalNotMapped, updated, saveContainers); SaveContainers(totalNotMapped, updated, saveContainers);
} }
public List<(Face, long?, (string, string, string, string))> GetCollection(List<Face> distinctFilteredFaces) private List<(Face, List<(string?, string, string?, string?, string)>)> GetCollection(List<Face> distinctFilteredFaces)
{ {
if (_Configuration is null) if (_Configuration is null)
throw new NullReferenceException(nameof(_Configuration)); throw new NullReferenceException(nameof(_Configuration));
List<(Face, long?, (string, string, string, string))> results = new(); List<(Face, List<(string?, string, string?, string?, string)>)> results = new();
int years; int years;
long? personKey;
string directory; string directory;
const int zero = 0;
TimeSpan? timeSpan; TimeSpan? timeSpan;
string copyFileName; string? copyFileName;
string copyDirectory;
string? relativePath; string? relativePath;
string? copyDirectory;
string isWrongYearFlag; string isWrongYearFlag;
string shortcutFileName; string shortcutFileName;
string subDirectoryName; string subDirectoryName;
string personKeyFormatted; string personKeyFormatted;
PersonBirthday personBirthday;
DateTime dateTime = DateTime.Now; DateTime dateTime = DateTime.Now;
PersonContainer[] personContainers; PersonContainer[] personContainers;
Dictionary<int, PersonContainer[]>? keyValuePairs; Dictionary<int, PersonContainer[]>? idToPersonContainers;
List<(string?, string, string?, string?, string)> collection;
foreach (Face face in distinctFilteredFaces) foreach (Face face in distinctFilteredFaces)
{ {
if (face.Mapping is null) if (face.Mapping is null)
throw new NotSupportedException(); throw new NotSupportedException();
copyFileName = string.Empty; collection = new();
copyDirectory = string.Empty; copyFileName = null;
copyDirectory = null;
relativePath = Path.GetDirectoryName($"C:{face.RelativePath}"); relativePath = Path.GetDirectoryName($"C:{face.RelativePath}");
if (string.IsNullOrEmpty(relativePath) || relativePath.Length < 3) if (string.IsNullOrEmpty(relativePath) || relativePath.Length < 3)
continue; continue;
if (!_IdThenNormalizedPixelPercentageToPersonContainers.TryGetValue(face.Mapping.MappingFromItem.Id, out keyValuePairs)) if (!_IdThenNormalizedPixelPercentageToPersonContainers.TryGetValue(face.Mapping.MappingFromItem.Id, out idToPersonContainers))
{ {
personKey = null;
directory = Path.Combine(_EDistanceContentTicksDirectory, $"Unnamed{relativePath[2..]}"); directory = Path.Combine(_EDistanceContentTicksDirectory, $"Unnamed{relativePath[2..]}");
shortcutFileName = Path.Combine(directory, $"{face.Mapping.MappingFromItem.Id}.lnk");
collection.Add(new(null, directory, copyDirectory, copyFileName, shortcutFileName));
} }
else else
{ {
if (!keyValuePairs.ContainsKey(face.Mapping.MappingFromLocation.NormalizedPixelPercentage)) if (!idToPersonContainers.ContainsKey(face.Mapping.MappingFromLocation.NormalizedPixelPercentage))
continue; continue;
personKey = null;
isWrongYearFlag = IItem.GetWrongYearFlag(face.Mapping.MappingFromItem.IsWrongYear); isWrongYearFlag = IItem.GetWrongYearFlag(face.Mapping.MappingFromItem.IsWrongYear);
subDirectoryName = $"{isWrongYearFlag}{face.Mapping.MappingFromItem.MinimumDateTime:yyyy}"; subDirectoryName = $"{isWrongYearFlag}{face.Mapping.MappingFromItem.MinimumDateTime:yyyy}";
personContainers = keyValuePairs[face.Mapping.MappingFromLocation.NormalizedPixelPercentage]; personContainers = idToPersonContainers[face.Mapping.MappingFromLocation.NormalizedPixelPercentage];
directory = Path.Combine(_EDistanceContentTicksDirectory, $"Not Supported{relativePath[2..]}", subDirectoryName);
foreach (PersonContainer personContainer in personContainers) foreach (PersonContainer personContainer in personContainers)
{ {
if (personContainers.Length != 1) if (personContainers.Length != 1)
break; break;
if (personContainer.Key is null || personContainer.Birthdays is null || !personContainer.Birthdays.Any()) if (personContainer.Key is null || personContainer.Birthdays is null || !personContainer.Birthdays.Any())
continue; continue;
personKey = personContainer.Key.Value; foreach (PersonBirthday personBirthday in personContainer.Birthdays)
personBirthday = personContainer.Birthdays[zero];
timeSpan = IPersonBirthday.GetTimeSpan(face.Mapping.MappingFromItem.MinimumDateTime, face.Mapping.MappingFromItem.IsWrongYear, personBirthday);
if (timeSpan.HasValue)
{ {
if (timeSpan.Value.Ticks < 0) timeSpan = IPersonBirthday.GetTimeSpan(face.Mapping.MappingFromItem.MinimumDateTime, face.Mapping.MappingFromItem.IsWrongYear, personBirthday);
subDirectoryName = "!---"; if (timeSpan.HasValue)
else
{ {
(years, _) = IPersonBirthday.GetAge(dateTime, personBirthday); if (timeSpan.Value.Ticks < 0)
subDirectoryName = $"^{years:000}"; subDirectoryName = "!---";
else
{
(years, _) = IPersonBirthday.GetAge(dateTime, personBirthday);
subDirectoryName = $"^{years:000}";
}
} }
personKeyFormatted = IPersonBirthday.GetFormatted(_Configuration.PersonBirthdayFormat, personBirthday);
directory = Path.Combine(_EDistanceContentTicksDirectory, "Shortcuts", personKeyFormatted, subDirectoryName);
if (face.FaceEncoding is not null)
copyDirectory = Path.Combine(_EDistanceContentTicksDirectory, "Images", personKeyFormatted, subDirectoryName);
else
copyDirectory = Path.Combine(_EDistanceContentTicksDirectory, "ImagesBut", personKeyFormatted, subDirectoryName);
copyFileName = Path.Combine(copyDirectory, $"{face.Mapping.MappingFromItem.Id}{face.Mapping.MappingFromItem.ResizedFileHolder.ExtensionLowered}");
shortcutFileName = Path.Combine(directory, $"{face.Mapping.MappingFromItem.Id}.lnk");
collection.Add(new(personKeyFormatted, directory, copyDirectory, copyFileName, shortcutFileName));
} }
personKeyFormatted = IPersonBirthday.GetFormatted(_Configuration.PersonBirthdayFormat, personBirthday); }
directory = Path.Combine(_EDistanceContentTicksDirectory, "Shortcuts", personKeyFormatted, subDirectoryName); if (!collection.Any())
if (face.FaceEncoding is not null) {
copyDirectory = Path.Combine(_EDistanceContentTicksDirectory, "Images", personKeyFormatted, subDirectoryName); copyFileName = null;
else copyDirectory = null;
copyDirectory = Path.Combine(_EDistanceContentTicksDirectory, "ImagesBut", personKeyFormatted, subDirectoryName); directory = Path.Combine(_EDistanceContentTicksDirectory, $"Not Supported{relativePath[2..]}", subDirectoryName);
copyFileName = Path.Combine(copyDirectory, $"{face.Mapping.MappingFromItem.Id}{face.Mapping.MappingFromItem.ResizedFileHolder.ExtensionLowered}"); shortcutFileName = Path.Combine(directory, $"{face.Mapping.MappingFromItem.Id}.lnk");
collection.Add(new(null, directory, copyDirectory, copyFileName, shortcutFileName));
} }
} }
shortcutFileName = Path.Combine(directory, $"{face.Mapping.MappingFromItem.Id}.lnk"); results.Add(new(face, collection));
if (personKey is null)
results.Add(new(face, null, (directory, copyDirectory, copyFileName, shortcutFileName)));
else
results.Add(new(face, personKey, (directory, copyDirectory, copyFileName, shortcutFileName)));
} }
return results; return results;
} }

View File

@ -126,14 +126,7 @@ internal abstract class MapLogic
personDisplayDirectoryNames = IPath.GetDirectoryNames(personNameDirectory); personDisplayDirectoryNames = IPath.GetDirectoryNames(personNameDirectory);
if (!personDisplayDirectoryNames.Any()) if (!personDisplayDirectoryNames.Any())
continue; continue;
if (personDisplayDirectoryNames[^1].Length == 1 || personDisplayDirectoryNames[^1] == configuration.MappingDefaultName || !personKeyFormattedCollection.Contains(personKeyFormatted)) files = Directory.GetFiles(personNameDirectory, "*", SearchOption.TopDirectoryOnly);
personFirstInitialDirectory = personNameDirectory;
else
{
personFirstInitial = personDisplayDirectoryNames[^1][..1];
personFirstInitialDirectory = Path.Combine(yearDirectory, personFirstInitial.ToString());
}
files = Directory.GetFiles(personFirstInitialDirectory, "*", SearchOption.TopDirectoryOnly);
if (personKeyFormatted == nameof(IMapLogic.Sorting) && files.Any()) if (personKeyFormatted == nameof(IMapLogic.Sorting) && files.Any())
throw new Exception($"Move personKey directories up one from {nameof(IMapLogic.Sorting)} and delete {nameof(IMapLogic.Sorting)} directory!"); throw new Exception($"Move personKey directories up one from {nameof(IMapLogic.Sorting)} and delete {nameof(IMapLogic.Sorting)} directory!");
if (personKeyFormatted == manualCopyHumanized && files.Any()) if (personKeyFormatted == manualCopyHumanized && files.Any())
@ -142,8 +135,12 @@ internal abstract class MapLogic
throw new Exception($"Move personKey directories up one from {forceSingleImageHumanized} and delete {forceSingleImageHumanized} directory!"); throw new Exception($"Move personKey directories up one from {forceSingleImageHumanized} and delete {forceSingleImageHumanized} directory!");
if (personKeyFormatted.Length != configuration.PersonBirthdayFormat.Length) if (personKeyFormatted.Length != configuration.PersonBirthdayFormat.Length)
continue; continue;
if (personNameDirectory != personFirstInitialDirectory && !Directory.Exists(personFirstInitialDirectory)) if (personDisplayDirectoryNames[^1].Length == 1 || personDisplayDirectoryNames[^1] == configuration.MappingDefaultName || !personKeyFormattedCollection.Contains(personKeyFormatted))
personFirstInitialDirectory = personNameDirectory;
else
{ {
personFirstInitial = personDisplayDirectoryNames[^1][..1];
personFirstInitialDirectory = Path.Combine(yearDirectory, personFirstInitial.ToString());
Directory.Move(personNameDirectory, personFirstInitialDirectory); Directory.Move(personNameDirectory, personFirstInitialDirectory);
files = Directory.GetFiles(personFirstInitialDirectory, "*", SearchOption.TopDirectoryOnly); files = Directory.GetFiles(personFirstInitialDirectory, "*", SearchOption.TopDirectoryOnly);
} }

View File

@ -122,7 +122,7 @@ internal abstract class PersonBirthday
personBirthday = IPersonBirthday.GetPersonBirthday(personBirthdayFormat, personKeyFormatted); personBirthday = IPersonBirthday.GetPersonBirthday(personBirthdayFormat, personKeyFormatted);
else else
(personBirthday, personKeyFormatted) = Person.Get(personBirthdayFormat, personDisplayDirectory, personKeyDirectory, birthday); (personBirthday, personKeyFormatted) = Person.Get(personBirthdayFormat, personDisplayDirectory, personKeyDirectory, birthday);
if (personBirthday is null) if (personBirthday is null || personKeyFormatted.Contains('#'))
continue; continue;
results.Add(personBirthday); results.Add(personBirthday);
files = Directory.GetFiles(personKeyDirectory, "*", SearchOption.TopDirectoryOnly); files = Directory.GetFiles(personKeyDirectory, "*", SearchOption.TopDirectoryOnly);