person-key-to-immich-import birthday json (Day-Helper-2024-05-18)

csharp_prefer_braces = true
This commit is contained in:
2025-09-06 11:16:55 -07:00
parent 8ec89953bc
commit 6102da7266
54 changed files with 2218 additions and 1721 deletions

View File

@ -2,11 +2,21 @@ using Microsoft.Extensions.Logging;
namespace File_Folder_Helper.ADO2024.PI2;
internal static partial class Helper20240624
{
internal static partial class Helper20240624 {
private static void MoveUpOndDirectory(ILogger<Worker> logger, string sourceDirectory, string[] files)
{
internal static void MoveUpOneDirectory(ILogger<Worker> logger, List<string> args) {
string searchPattern = args[2];
string sourceDirectory = Path.GetFullPath(args[0]);
string[] deleteMatchingIdsDirectoryNames = args[3].Split(',');
string[] files = Directory.GetFiles(sourceDirectory, searchPattern, SearchOption.AllDirectories);
if (deleteMatchingIdsDirectoryNames.Length == 0) {
MoveUpOndDirectory(logger, sourceDirectory, files);
} else {
Distinct(args, sourceDirectory, deleteMatchingIdsDirectoryNames, files);
}
}
private static void MoveUpOndDirectory(ILogger<Worker> logger, string sourceDirectory, string[] files) {
string? match;
string checkFile;
FileInfo fileInfoA;
@ -14,75 +24,64 @@ internal static partial class Helper20240624
string? checkDirectory;
List<string> deleteFiles = [];
Dictionary<string, string> keyValuePairs = [];
foreach (string file in files)
{
foreach (string file in files) {
checkDirectory = Path.GetDirectoryName(Path.GetDirectoryName(file)) ?? throw new NotSupportedException();
checkFile = Path.Combine(checkDirectory, Path.GetFileName(file));
if (File.Exists(checkFile))
if (File.Exists(checkFile)) {
throw new NotSupportedException();
if (keyValuePairs.TryGetValue(checkFile, out match))
{
}
if (keyValuePairs.TryGetValue(checkFile, out match)) {
fileInfoA = new(file);
fileInfoB = new(match);
if (fileInfoA.Length != fileInfoB.Length)
if (fileInfoA.Length != fileInfoB.Length) {
throw new NotSupportedException("Files don't match!");
}
logger.LogWarning("<{file}> already exists!", file);
deleteFiles.Add(file);
continue;
}
keyValuePairs.Add(checkFile, file);
}
foreach (string file in deleteFiles)
foreach (string file in deleteFiles) {
File.Delete(file);
foreach (KeyValuePair<string, string> keyValuePair in keyValuePairs)
}
foreach (KeyValuePair<string, string> keyValuePair in keyValuePairs) {
File.Move(keyValuePair.Value, keyValuePair.Key);
}
Helpers.HelperDeleteEmptyDirectories.DeleteEmptyDirectories(logger, sourceDirectory);
}
private static void Distinct(List<string> args, string sourceDirectory, string[] deleteMatchingIdsDirectoryNames, string[] files)
{
private static void Distinct(List<string> args, string sourceDirectory, string[] deleteMatchingIdsDirectoryNames, string[] files) {
string fileName;
string directory;
List<string> distinct = [];
List<string> duplicate = [];
string[] keepMatchingIdsDirectoryNames = args[4].Split(',');
if (deleteMatchingIdsDirectoryNames.Length != keepMatchingIdsDirectoryNames.Length)
if (deleteMatchingIdsDirectoryNames.Length != keepMatchingIdsDirectoryNames.Length) {
throw new NotSupportedException("Check arg lengths!");
}
string[] keepMatchingIdsDirectories = keepMatchingIdsDirectoryNames.Select(l => Path.Combine(sourceDirectory, l)).ToArray();
string[] deleteMatchingIdsDirectories = deleteMatchingIdsDirectoryNames.Select(l => Path.Combine(sourceDirectory, l)).ToArray();
foreach (string file in files)
{
foreach (string file in files) {
fileName = Path.GetFileName(file);
if (distinct.Contains(fileName))
{
if (distinct.Contains(fileName)) {
duplicate.Add(fileName);
continue;
}
distinct.Add(Path.GetFileName(file));
}
foreach (string file in files)
{
foreach (string file in files) {
fileName = Path.GetFileName(file);
directory = Path.GetDirectoryName(file) ?? throw new NotSupportedException();
if (!duplicate.Contains(fileName))
if (!duplicate.Contains(fileName)) {
continue;
if (deleteMatchingIdsDirectories.Contains(directory))
}
if (deleteMatchingIdsDirectories.Contains(directory)) {
File.Move(file, $"{file}.del");
else if (!keepMatchingIdsDirectories.Contains(directory))
} else if (!keepMatchingIdsDirectories.Contains(directory)) {
throw new NotSupportedException($"Missing <{Path.GetFileName(directory)}> as a directory for {fileName}");
}
}
}
internal static void MoveUpOneDirectory(ILogger<Worker> logger, List<string> args)
{
string searchPattern = args[2];
string sourceDirectory = Path.GetFullPath(args[0]);
string[] deleteMatchingIdsDirectoryNames = args[3].Split(',');
string[] files = Directory.GetFiles(sourceDirectory, searchPattern, SearchOption.AllDirectories);
if (deleteMatchingIdsDirectoryNames.Length == 0)
MoveUpOndDirectory(logger, sourceDirectory, files);
else
Distinct(args, sourceDirectory, deleteMatchingIdsDirectoryNames, files);
}
}