diff --git a/src/AudioTagger.Console/Operations/MediaFileRenamer.cs b/src/AudioTagger.Console/Operations/MediaFileRenamer.cs index 729d60d..48fb431 100644 --- a/src/AudioTagger.Console/Operations/MediaFileRenamer.cs +++ b/src/AudioTagger.Console/Operations/MediaFileRenamer.cs @@ -7,6 +7,8 @@ namespace AudioTagger.Console.Operations; public sealed class MediaFileRenamer : IPathOperation { + public string Name() => "media file renamer"; + private static readonly Regex TagFinderRegex = new(@"(?<=%)\w+(?=%)"); private static readonly List SafeToDeleteFileExtensions = [".DS_Store"]; diff --git a/src/AudioTagger.Console/Operations/Normalization.cs b/src/AudioTagger.Console/Operations/Normalization.cs index 9c945ad..18ff1a1 100644 --- a/src/AudioTagger.Console/Operations/Normalization.cs +++ b/src/AudioTagger.Console/Operations/Normalization.cs @@ -8,6 +8,8 @@ namespace AudioTagger.Console.Operations; /// public sealed class Normalization : IPathOperation { + public string Name() => "normalization"; + public void Start(IReadOnlyCollection mediaFiles, DirectoryInfo workingDirectory, Settings settings, diff --git a/src/AudioTagger.Console/Operations/TagArtworkExtractor.cs b/src/AudioTagger.Console/Operations/TagArtworkExtractor.cs index 1fd0d48..e7c6b4b 100644 --- a/src/AudioTagger.Console/Operations/TagArtworkExtractor.cs +++ b/src/AudioTagger.Console/Operations/TagArtworkExtractor.cs @@ -6,6 +6,8 @@ namespace AudioTagger.Console.Operations; public sealed class TagArtworkExtractor : IPathOperation { + public string Name() => "tag artwork extractor"; + private const string ArtworkFileName = "cover.jpg"; private static bool AreAllSame(IEnumerable items) => diff --git a/src/AudioTagger.Console/Operations/TagArtworkRemover.cs b/src/AudioTagger.Console/Operations/TagArtworkRemover.cs index c178032..f9e3b33 100644 --- a/src/AudioTagger.Console/Operations/TagArtworkRemover.cs +++ b/src/AudioTagger.Console/Operations/TagArtworkRemover.cs @@ -4,6 +4,8 @@ namespace AudioTagger.Console.Operations; public sealed class TagArtworkRemover : IPathOperation { + public string Name() => "tag artwork remover"; + public void Start( IReadOnlyCollection mediaFiles, DirectoryInfo workingDirectory, diff --git a/src/AudioTagger.Console/Operations/TagCacher.cs b/src/AudioTagger.Console/Operations/TagCacher.cs index 5fbdbdf..fbcf625 100644 --- a/src/AudioTagger.Console/Operations/TagCacher.cs +++ b/src/AudioTagger.Console/Operations/TagCacher.cs @@ -5,8 +5,12 @@ namespace AudioTagger.Console.Operations; +// This functionality has been replaced with my AudioTagTools application instead. +// It will likely no longer be updated and might be removed later. public sealed class TagCacher : IPathOperation { + public string Name() => "tag cacher"; + public void Start( IReadOnlyCollection mediaFiles, DirectoryInfo workingDirectory, diff --git a/src/AudioTagger.Console/Operations/TagDuplicateFinder.cs b/src/AudioTagger.Console/Operations/TagDuplicateFinder.cs index 1b4395a..74df414 100644 --- a/src/AudioTagger.Console/Operations/TagDuplicateFinder.cs +++ b/src/AudioTagger.Console/Operations/TagDuplicateFinder.cs @@ -3,8 +3,12 @@ namespace AudioTagger.Console.Operations; +// This functionality has been replaced with my AudioTagTools application instead. +// It will likely no longer be updated and might be removed later. public sealed class TagDuplicateFinder : IPathOperation { + public string Name() => "tag duplicate finder"; + public void Start( IReadOnlyCollection mediaFiles, DirectoryInfo workingDirectory, diff --git a/src/AudioTagger.Console/Operations/TagGenreExtractor.cs b/src/AudioTagger.Console/Operations/TagGenreExtractor.cs index 68d6556..e1b63cd 100644 --- a/src/AudioTagger.Console/Operations/TagGenreExtractor.cs +++ b/src/AudioTagger.Console/Operations/TagGenreExtractor.cs @@ -3,8 +3,12 @@ namespace AudioTagger.Console.Operations; +// This functionality has been replaced with my AudioTagTools application instead. +// It will likely no longer be updated and might be removed later. public sealed class TagGenreExtractor : IPathOperation { + public string Name() => "tag genre extractor"; + private static bool HasGenresAndArtists(MediaFile file) => file.Genres.Length != 0 && file.Artists.Length != 0; diff --git a/src/AudioTagger.Console/Operations/TagParser.cs b/src/AudioTagger.Console/Operations/TagParser.cs index 83a8542..ca138fc 100644 --- a/src/AudioTagger.Console/Operations/TagParser.cs +++ b/src/AudioTagger.Console/Operations/TagParser.cs @@ -5,6 +5,8 @@ namespace AudioTagger.Console.Operations; public sealed class TagParser : IPathOperation { + public string Name() => "tag parser"; + public void Start(IReadOnlyCollection mediaFiles, DirectoryInfo workingDirectory, Settings settings, diff --git a/src/AudioTagger.Console/Operations/TagRewriter.cs b/src/AudioTagger.Console/Operations/TagRewriter.cs index 5c5a55c..986d038 100644 --- a/src/AudioTagger.Console/Operations/TagRewriter.cs +++ b/src/AudioTagger.Console/Operations/TagRewriter.cs @@ -4,6 +4,8 @@ namespace AudioTagger.Console.Operations; public sealed class TagRewriter : IPathOperation { + public string Name() => "tag rewriter"; + public void Start( IReadOnlyCollection mediaFiles, DirectoryInfo workingDirectory, diff --git a/src/AudioTagger.Console/Operations/TagScanner.cs b/src/AudioTagger.Console/Operations/TagScanner.cs index 70e890e..1782a54 100644 --- a/src/AudioTagger.Console/Operations/TagScanner.cs +++ b/src/AudioTagger.Console/Operations/TagScanner.cs @@ -6,6 +6,8 @@ namespace AudioTagger.Console.Operations; public sealed class TagScanner : IPathOperation { + public string Name() => "tag scanner"; + public void Start(IReadOnlyCollection mediaFiles, DirectoryInfo workingDirectory, Settings settings, diff --git a/src/AudioTagger.Console/Operations/TagStats.cs b/src/AudioTagger.Console/Operations/TagStats.cs index ba4cfe9..514e62c 100644 --- a/src/AudioTagger.Console/Operations/TagStats.cs +++ b/src/AudioTagger.Console/Operations/TagStats.cs @@ -6,6 +6,8 @@ namespace AudioTagger.Console.Operations; public sealed class TagStats : IPathOperation { + public string Name() => "tag stats"; + public void Start( IReadOnlyCollection mediaFiles, DirectoryInfo workingDirectory, diff --git a/src/AudioTagger.Console/Operations/TagUpdater.cs b/src/AudioTagger.Console/Operations/TagUpdater.cs index 272b90d..60affc9 100644 --- a/src/AudioTagger.Console/Operations/TagUpdater.cs +++ b/src/AudioTagger.Console/Operations/TagUpdater.cs @@ -7,6 +7,8 @@ namespace AudioTagger.Console.Operations; public sealed class TagUpdater : IPathOperation { + public string Name() => "tag updater"; + public void Start( IReadOnlyCollection mediaFiles, DirectoryInfo workingDirectory, diff --git a/src/AudioTagger.Console/Operations/TagUpdaterGenreOnly.cs b/src/AudioTagger.Console/Operations/TagUpdaterGenreOnly.cs index 7e2194c..629f2af 100644 --- a/src/AudioTagger.Console/Operations/TagUpdaterGenreOnly.cs +++ b/src/AudioTagger.Console/Operations/TagUpdaterGenreOnly.cs @@ -5,6 +5,8 @@ namespace AudioTagger.Console.Operations; public sealed class TagUpdaterGenreOnly : IPathOperation { + public string Name() => "tag updater for genre only"; + public void Start(IReadOnlyCollection mediaFiles, DirectoryInfo workingDirectory, Settings settings, diff --git a/src/AudioTagger.Console/Operations/TagUpdaterMultiple.cs b/src/AudioTagger.Console/Operations/TagUpdaterMultiple.cs index dd9ab8e..87619fe 100644 --- a/src/AudioTagger.Console/Operations/TagUpdaterMultiple.cs +++ b/src/AudioTagger.Console/Operations/TagUpdaterMultiple.cs @@ -8,6 +8,8 @@ namespace AudioTagger.Console.Operations; /// public sealed class TagUpdaterMultiple : IPathOperation { + public string Name() => "single tag updater for multiple files"; + private const string InputFile = "input.txt"; private enum TagUpdateType { Overwrite, Prepend, Append } diff --git a/src/AudioTagger.Console/Operations/TagUpdaterReverseTrackNumbers.cs b/src/AudioTagger.Console/Operations/TagUpdaterReverseTrackNumbers.cs index f76a595..02fe55c 100644 --- a/src/AudioTagger.Console/Operations/TagUpdaterReverseTrackNumbers.cs +++ b/src/AudioTagger.Console/Operations/TagUpdaterReverseTrackNumbers.cs @@ -8,6 +8,8 @@ namespace AudioTagger.Console.Operations; /// public sealed class TagUpdaterReverseTrackNumbers : IPathOperation { + public string Name() => "track number reversal"; + public void Start(IReadOnlyCollection mediaFiles, DirectoryInfo workingDirectory, Settings settings, diff --git a/src/AudioTagger.Console/Operations/TagUpdaterSingle.cs b/src/AudioTagger.Console/Operations/TagUpdaterSingle.cs index 5dba98c..ec197d6 100644 --- a/src/AudioTagger.Console/Operations/TagUpdaterSingle.cs +++ b/src/AudioTagger.Console/Operations/TagUpdaterSingle.cs @@ -8,6 +8,8 @@ namespace AudioTagger.Console.Operations; /// public sealed class TagUpdaterSingle : IPathOperation { + public string Name() => "single-value tag updater"; + private enum TagUpdateType { Overwrite, Prepend, Append, Clear } public void Start(IReadOnlyCollection mediaFiles, diff --git a/src/AudioTagger.Console/Operations/TagUpdaterYearOnly.cs b/src/AudioTagger.Console/Operations/TagUpdaterYearOnly.cs index 7938bfe..93d701b 100644 --- a/src/AudioTagger.Console/Operations/TagUpdaterYearOnly.cs +++ b/src/AudioTagger.Console/Operations/TagUpdaterYearOnly.cs @@ -5,6 +5,8 @@ namespace AudioTagger.Console.Operations; public sealed class TagUpdaterYearOnly : IPathOperation { + public string Name() => "tag year-only updater"; + public void Start(IReadOnlyCollection mediaFiles, DirectoryInfo workingDirectory, Settings settings, diff --git a/src/AudioTagger.Console/Operations/TagViewer.cs b/src/AudioTagger.Console/Operations/TagViewer.cs index be7c27f..616d5c2 100644 --- a/src/AudioTagger.Console/Operations/TagViewer.cs +++ b/src/AudioTagger.Console/Operations/TagViewer.cs @@ -4,6 +4,8 @@ namespace AudioTagger.Console.Operations; public sealed class TagViewer : IPathOperation { + public string Name() => "tag viewer"; + public void Start(IReadOnlyCollection mediaFiles, DirectoryInfo workingDirectory, Settings settings, diff --git a/src/AudioTagger.Console/Operations/TagViewerSummary.cs b/src/AudioTagger.Console/Operations/TagViewerSummary.cs index 7a2b811..dada4e5 100644 --- a/src/AudioTagger.Console/Operations/TagViewerSummary.cs +++ b/src/AudioTagger.Console/Operations/TagViewerSummary.cs @@ -5,6 +5,8 @@ namespace AudioTagger.Console.Operations; public sealed class TagViewerSummary : IPathOperation { + public string Name() => "tag summary viewer"; + public void Start(IReadOnlyCollection mediaFiles, DirectoryInfo workingDirectory, Settings settings, diff --git a/src/AudioTagger.Console/Program.cs b/src/AudioTagger.Console/Program.cs index cc175f4..584791e 100644 --- a/src/AudioTagger.Console/Program.cs +++ b/src/AudioTagger.Console/Program.cs @@ -131,12 +131,13 @@ private static void ProcessPath( { foreach (IPathOperation operation in operations) { + printer.Print($"▪︎ Starting {operation.Name()}"); operation.Start(mediaFiles, new DirectoryInfo(path), settings, printer); } } catch (Exception ex) { - printer.Error($"Error in while processing path \"{path}\": {ex.Message}"); + printer.Error($"Error while processing path \"{path}\": {ex.Message}"); printer.PrintException(ex); } } diff --git a/src/AudioTagger.Library/IPathOperation.cs b/src/AudioTagger.Library/IPathOperation.cs index 91b9627..a93c885 100644 --- a/src/AudioTagger.Library/IPathOperation.cs +++ b/src/AudioTagger.Library/IPathOperation.cs @@ -10,4 +10,10 @@ public void Start(IReadOnlyCollection mediaFiles, DirectoryInfo workingDirectory, Settings settings, IPrinter printer); + + /// + /// The name of the operation. It should be grammatically able to follow + /// the word "starting" -- e.g., "starting tag updater". + /// + public abstract string Name(); }