Added filter for Robert to Save Shortcuts
This commit is contained in:
parent
27a4a1cfb4
commit
abe6c80d82
3
.vscode/launch.json
vendored
3
.vscode/launch.json
vendored
@ -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
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user