Don't clean already cleaned images & restructure project
This commit is contained in:
parent
bb7d563a08
commit
9bd612cde3
4 changed files with 37 additions and 24 deletions
|
@ -1,5 +1,6 @@
|
||||||
using CommandLine;
|
using CommandLine;
|
||||||
using Image.Files;
|
using Image.Files;
|
||||||
|
using Image.Tasks;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
using Microsoft.Extensions.Logging.Abstractions;
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using System;
|
using System.IO;
|
||||||
using System.IO;
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
using Microsoft.Extensions.Logging.Abstractions;
|
||||||
|
|
||||||
|
@ -12,20 +11,26 @@ namespace Image.Files
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates the directory if it doesn't exist.
|
/// Creates the directory if it doesn't exist.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="destinationDirectory">The destination directory.</param>
|
/// <param name="directoryPath">The destination directory's path.</param>
|
||||||
public static void CreateDestinationDirectory(string destinationDirectory)
|
public static void CreateDestinationDirectory(string directoryPath)
|
||||||
{
|
{
|
||||||
#if NETSTANDARD2_1
|
if (Directory.Exists(directoryPath)) return;
|
||||||
Console.WriteLine("");
|
Logger.LogWarning("Output directory does not exist. Creating.");
|
||||||
#elif NETSTANDARD2_0
|
Directory.CreateDirectory(directoryPath);
|
||||||
Console.WriteLine("");
|
}
|
||||||
#elif NET5_0
|
|
||||||
if (Directory.Exists(destinationDirectory)) return;
|
|
||||||
//Logger.LogWarning("Output directory does not exist. Creating.");
|
|
||||||
Directory.CreateDirectory(destinationDirectory);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CheckIfFileExists checks if file exists.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filePath">The path of the file to be checked.</param>
|
||||||
|
/// <returns>Returns true if file exists, False otherwise.</returns>
|
||||||
|
public static bool CheckIfFileExists(string filePath)
|
||||||
|
{
|
||||||
|
var result = File.Exists(filePath);
|
||||||
|
Logger.LogDebug(result
|
||||||
|
? $"CheckIfFileExists - {filePath} exists."
|
||||||
|
: $"CheckIfFileExists - {filePath} doesn't exists.");
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -3,11 +3,12 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Image.Core;
|
using Image.Core;
|
||||||
|
using Image.Files;
|
||||||
using ImageMagick;
|
using ImageMagick;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
using Microsoft.Extensions.Logging.Abstractions;
|
||||||
|
|
||||||
namespace ConsoleInterface
|
namespace Image.Tasks
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// TaskExecutor is a helper class for executing tasks in parallel.
|
/// TaskExecutor is a helper class for executing tasks in parallel.
|
||||||
|
@ -39,21 +40,27 @@ namespace ConsoleInterface
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Cleans an image. Errors are silenced by default.
|
/// Cleans an image. Errors are silenced by default.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="fileName">The file name of the image to be cleaned.</param>
|
/// <param name="filePath">The file path of the image to be cleaned.</param>
|
||||||
/// <param name="newFilename">The new file name of the cleaned image.</param>
|
/// <param name="newFilePath">The new file path of the cleaned image.</param>
|
||||||
/// <returns>True of the image was cleaned, false otherwise.</returns>
|
/// <returns>True of the image was cleaned, false otherwise.</returns>
|
||||||
public bool CleanImage(string fileName, string newFilename)
|
public bool CleanImage(string filePath, string newFilePath)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
var fileExists = FileSystemHelpers.CheckIfFileExists(newFilePath);
|
||||||
|
if (fileExists)
|
||||||
|
{
|
||||||
|
Logger.LogWarning($"File {newFilePath} exists, skipping");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
ICompressor compressor = NullCompressor.Instance;
|
ICompressor compressor = NullCompressor.Instance;
|
||||||
var imageMagick = new MagickImage(fileName);
|
var imageMagick = new MagickImage(filePath);
|
||||||
if (_options.EnableCompression) compressor = LosslessCompressor.Instance;
|
if (_options.EnableCompression) compressor = LosslessCompressor.Instance;
|
||||||
|
|
||||||
Logger.LogDebug(
|
Logger.LogDebug(
|
||||||
$"Cleaning {fileName}, compression {_options.EnableCompression}, outputFormatter {nameof(_options.FileOutputFormatter)}.");
|
$"Cleaning {filePath}, compression {_options.EnableCompression}, outputFormatter {nameof(_options.FileOutputFormatter)}.");
|
||||||
IMetadataRemover metadataRemover = new ExifMetadataRemoverAndCompressor(imageMagick, compressor);
|
IMetadataRemover metadataRemover = new ExifMetadataRemoverAndCompressor(imageMagick, compressor);
|
||||||
metadataRemover.CleanImage(newFilename);
|
metadataRemover.CleanImage(newFilePath);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -89,9 +96,9 @@ namespace ConsoleInterface
|
||||||
var result = Task.WhenAll(tasks);
|
var result = Task.WhenAll(tasks);
|
||||||
result.Wait();
|
result.Wait();
|
||||||
|
|
||||||
var successTasks = tasks.Count(t => t.IsCompletedSuccessfully && t.Result);
|
var successTasks = tasks.Count(t => t.IsCompleted && t.Result);
|
||||||
var errorTasks = tasks.Count - successTasks;
|
var errorTasks = tasks.Count - successTasks;
|
||||||
Logger.LogInformation($"All tasks completed. Success: {successTasks}, Errors: {errorTasks}");
|
Logger.LogInformation($"All tasks completed. Success: {successTasks}, Failures: {errorTasks}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using Image.Files;
|
using Image.Files;
|
||||||
|
|
||||||
namespace ConsoleInterface
|
namespace Image.Tasks
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// TaskExecutorOptions is a class containing various parameters for the <see cref="TaskExecutor" /> class.
|
/// TaskExecutorOptions is a class containing various parameters for the <see cref="TaskExecutor" /> class.
|
Loading…
Reference in a new issue