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

3
.vscode/launch.json vendored
View File

@ -144,4 +144,5 @@
// https://scontent-lax3-1.xx.fbcdn.net/v/t1.6435-9/92554157_10158297246718523_986365937043111936_n.jpg?_nc_cat=105&ccb=1-7&_nc_sid=8bfeb9&_nc_ohc=lWhPQlbtKVoAX-4D9Ke&tn=D0unuoVdv--xjhpM&_nc_ht=scontent-lax3-1.xx&oh=00_AT_P1suJEkfnHlSL3rPoDoYW2exSg_gQyN--HoylQbt_JQ&oe=63567442
// 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-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)
throw new NullReferenceException(nameof(_Configuration));
string fileName;
string fullName;
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)
List<(Face, List<(string?, string, string?, string?, string)>)> facesToCollection = GetCollection(distinctFilteredFaces);
foreach ((Face face, List<(string? PersonKeyFormatted, string, string?, string?, string)> collection) in facesToCollection)
{
if (personKey is null)
if (collection.Any(l => l.PersonKeyFormatted is not null and "1501-04-10_00"))
continue;
if (face.Mapping is null)
throw new NotSupportedException();
personBirthday = IPersonBirthday.GetPersonBirthday(personKey.Value);
personKeyFormatted = IPersonBirthday.GetFormatted(_Configuration.PersonBirthdayFormat, personBirthday);
if (juliePhares.Contains(personKeyFormatted) && !string.IsNullOrEmpty(copyDirectory))
foreach ((string? personKeyFormatted, string directory, string? copyDirectory, string? copyFileName, string _) in collection)
{
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))
_ = Directory.CreateDirectory(copyDirectory);
fileName = Path.Combine(copyDirectory, $"{face.Mapping.MappingFromItem.Id}{face.Mapping.MappingFromItem.ResizedFileHolder.ExtensionLowered}");
if (!File.Exists(fileName))
File.Copy(face.Mapping.MappingFromItem.ResizedFileHolder.FullName, fileName);
if (!File.Exists(copyFileName))
File.Copy(face.Mapping.MappingFromItem.ResizedFileHolder.FullName, copyFileName);
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);
}
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)
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;
long? personKey;
string directory;
const int zero = 0;
TimeSpan? timeSpan;
string copyFileName;
string copyDirectory;
string? copyFileName;
string? relativePath;
string? copyDirectory;
string isWrongYearFlag;
string shortcutFileName;
string subDirectoryName;
string personKeyFormatted;
PersonBirthday personBirthday;
DateTime dateTime = DateTime.Now;
PersonContainer[] personContainers;
Dictionary<int, PersonContainer[]>? keyValuePairs;
Dictionary<int, PersonContainer[]>? idToPersonContainers;
List<(string?, string, string?, string?, string)> collection;
foreach (Face face in distinctFilteredFaces)
{
if (face.Mapping is null)
throw new NotSupportedException();
copyFileName = string.Empty;
copyDirectory = string.Empty;
collection = new();
copyFileName = null;
copyDirectory = null;
relativePath = Path.GetDirectoryName($"C:{face.RelativePath}");
if (string.IsNullOrEmpty(relativePath) || relativePath.Length < 3)
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..]}");
shortcutFileName = Path.Combine(directory, $"{face.Mapping.MappingFromItem.Id}.lnk");
collection.Add(new(null, directory, copyDirectory, copyFileName, shortcutFileName));
}
else
{
if (!keyValuePairs.ContainsKey(face.Mapping.MappingFromLocation.NormalizedPixelPercentage))
if (!idToPersonContainers.ContainsKey(face.Mapping.MappingFromLocation.NormalizedPixelPercentage))
continue;
personKey = null;
isWrongYearFlag = IItem.GetWrongYearFlag(face.Mapping.MappingFromItem.IsWrongYear);
subDirectoryName = $"{isWrongYearFlag}{face.Mapping.MappingFromItem.MinimumDateTime:yyyy}";
personContainers = keyValuePairs[face.Mapping.MappingFromLocation.NormalizedPixelPercentage];
directory = Path.Combine(_EDistanceContentTicksDirectory, $"Not Supported{relativePath[2..]}", subDirectoryName);
personContainers = idToPersonContainers[face.Mapping.MappingFromLocation.NormalizedPixelPercentage];
foreach (PersonContainer personContainer in personContainers)
{
if (personContainers.Length != 1)
break;
if (personContainer.Key is null || personContainer.Birthdays is null || !personContainer.Birthdays.Any())
continue;
personKey = personContainer.Key.Value;
personBirthday = personContainer.Birthdays[zero];
timeSpan = IPersonBirthday.GetTimeSpan(face.Mapping.MappingFromItem.MinimumDateTime, face.Mapping.MappingFromItem.IsWrongYear, personBirthday);
if (timeSpan.HasValue)
foreach (PersonBirthday personBirthday in personContainer.Birthdays)
{
if (timeSpan.Value.Ticks < 0)
subDirectoryName = "!---";
else
timeSpan = IPersonBirthday.GetTimeSpan(face.Mapping.MappingFromItem.MinimumDateTime, face.Mapping.MappingFromItem.IsWrongYear, personBirthday);
if (timeSpan.HasValue)
{
(years, _) = IPersonBirthday.GetAge(dateTime, personBirthday);
subDirectoryName = $"^{years:000}";
if (timeSpan.Value.Ticks < 0)
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 (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}");
}
if (!collection.Any())
{
copyFileName = null;
copyDirectory = null;
directory = Path.Combine(_EDistanceContentTicksDirectory, $"Not Supported{relativePath[2..]}", subDirectoryName);
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");
if (personKey is null)
results.Add(new(face, null, (directory, copyDirectory, copyFileName, shortcutFileName)));
else
results.Add(new(face, personKey, (directory, copyDirectory, copyFileName, shortcutFileName)));
results.Add(new(face, collection));
}
return results;
}

View File

@ -126,14 +126,7 @@ internal abstract class MapLogic
personDisplayDirectoryNames = IPath.GetDirectoryNames(personNameDirectory);
if (!personDisplayDirectoryNames.Any())
continue;
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());
}
files = Directory.GetFiles(personFirstInitialDirectory, "*", SearchOption.TopDirectoryOnly);
files = Directory.GetFiles(personNameDirectory, "*", SearchOption.TopDirectoryOnly);
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!");
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!");
if (personKeyFormatted.Length != configuration.PersonBirthdayFormat.Length)
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);
files = Directory.GetFiles(personFirstInitialDirectory, "*", SearchOption.TopDirectoryOnly);
}

View File

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