From 4cddb949f75fdc7960de52dd11971a4e07dd6c0a Mon Sep 17 00:00:00 2001 From: CodeConscious <50596087+codeconscious@users.noreply.github.com> Date: Fri, 11 Sep 2026 21:19:50 +0900 Subject: [PATCH 1/3] Include operation names in printing --- src/AudioTagger.Console/Operations/MediaFileRenamer.cs | 2 ++ src/AudioTagger.Console/Operations/Normalization.cs | 2 ++ src/AudioTagger.Console/Operations/TagArtworkExtractor.cs | 2 ++ src/AudioTagger.Console/Operations/TagArtworkRemover.cs | 2 ++ src/AudioTagger.Console/Operations/TagCacher.cs | 4 ++++ src/AudioTagger.Console/Operations/TagDuplicateFinder.cs | 4 ++++ src/AudioTagger.Console/Operations/TagGenreExtractor.cs | 4 ++++ src/AudioTagger.Console/Operations/TagParser.cs | 2 ++ src/AudioTagger.Console/Operations/TagRewriter.cs | 2 ++ src/AudioTagger.Console/Operations/TagScanner.cs | 2 ++ src/AudioTagger.Console/Operations/TagStats.cs | 2 ++ src/AudioTagger.Console/Operations/TagUpdater.cs | 2 ++ src/AudioTagger.Console/Operations/TagUpdaterGenreOnly.cs | 2 ++ src/AudioTagger.Console/Operations/TagUpdaterMultiple.cs | 2 ++ .../Operations/TagUpdaterReverseTrackNumbers.cs | 2 ++ src/AudioTagger.Console/Operations/TagUpdaterSingle.cs | 2 ++ src/AudioTagger.Console/Operations/TagUpdaterYearOnly.cs | 2 ++ src/AudioTagger.Console/Operations/TagViewer.cs | 2 ++ src/AudioTagger.Console/Operations/TagViewerSummary.cs | 2 ++ src/AudioTagger.Console/Program.cs | 1 + src/AudioTagger.Library/IPathOperation.cs | 6 ++++++ 21 files changed, 51 insertions(+) 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..ff6c088 100644 --- a/src/AudioTagger.Console/Operations/TagCacher.cs +++ b/src/AudioTagger.Console/Operations/TagCacher.cs @@ -5,8 +5,12 @@ namespace AudioTagger.Console.Operations; +// This has been replaced with my AudioTagTool application instead. +// It will likely no longer be updated. 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..448b945 100644 --- a/src/AudioTagger.Console/Operations/TagDuplicateFinder.cs +++ b/src/AudioTagger.Console/Operations/TagDuplicateFinder.cs @@ -3,8 +3,12 @@ namespace AudioTagger.Console.Operations; +// This has been replaced with my AudioTagTool application instead. +// It will likely no longer be updated. 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..471f708 100644 --- a/src/AudioTagger.Console/Operations/TagGenreExtractor.cs +++ b/src/AudioTagger.Console/Operations/TagGenreExtractor.cs @@ -3,8 +3,12 @@ namespace AudioTagger.Console.Operations; +// This has been replaced with my AudioTagTool application instead. +// It will likely no longer be updated. 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..2f28fa4 100644 --- a/src/AudioTagger.Console/Program.cs +++ b/src/AudioTagger.Console/Program.cs @@ -131,6 +131,7 @@ private static void ProcessPath( { foreach (IPathOperation operation in operations) { + printer.Print($"▪︎ Starting {operation.Name()}"); operation.Start(mediaFiles, new DirectoryInfo(path), settings, printer); } } 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(); } From 460593bd339e545055688c7cc12772733f4a1144 Mon Sep 17 00:00:00 2001 From: CodeConscious <50596087+codeconscious@users.noreply.github.com> Date: Fri, 11 Sep 2026 22:09:46 +0900 Subject: [PATCH 2/3] Fix wording --- src/AudioTagger.Console/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AudioTagger.Console/Program.cs b/src/AudioTagger.Console/Program.cs index 2f28fa4..584791e 100644 --- a/src/AudioTagger.Console/Program.cs +++ b/src/AudioTagger.Console/Program.cs @@ -137,7 +137,7 @@ private static void ProcessPath( } 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); } } From 4de03d154a63248004ba24ba7c999d6e1c823bff Mon Sep 17 00:00:00 2001 From: CodeConscious <50596087+codeconscious@users.noreply.github.com> Date: Sat, 12 Sep 2026 11:02:41 +0900 Subject: [PATCH 3/3] Update comments --- src/AudioTagger.Console/Operations/TagCacher.cs | 4 ++-- src/AudioTagger.Console/Operations/TagDuplicateFinder.cs | 4 ++-- src/AudioTagger.Console/Operations/TagGenreExtractor.cs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/AudioTagger.Console/Operations/TagCacher.cs b/src/AudioTagger.Console/Operations/TagCacher.cs index ff6c088..fbcf625 100644 --- a/src/AudioTagger.Console/Operations/TagCacher.cs +++ b/src/AudioTagger.Console/Operations/TagCacher.cs @@ -5,8 +5,8 @@ namespace AudioTagger.Console.Operations; -// This has been replaced with my AudioTagTool application instead. -// It will likely no longer be updated. +// 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"; diff --git a/src/AudioTagger.Console/Operations/TagDuplicateFinder.cs b/src/AudioTagger.Console/Operations/TagDuplicateFinder.cs index 448b945..74df414 100644 --- a/src/AudioTagger.Console/Operations/TagDuplicateFinder.cs +++ b/src/AudioTagger.Console/Operations/TagDuplicateFinder.cs @@ -3,8 +3,8 @@ namespace AudioTagger.Console.Operations; -// This has been replaced with my AudioTagTool application instead. -// It will likely no longer be updated. +// 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"; diff --git a/src/AudioTagger.Console/Operations/TagGenreExtractor.cs b/src/AudioTagger.Console/Operations/TagGenreExtractor.cs index 471f708..e1b63cd 100644 --- a/src/AudioTagger.Console/Operations/TagGenreExtractor.cs +++ b/src/AudioTagger.Console/Operations/TagGenreExtractor.cs @@ -3,8 +3,8 @@ namespace AudioTagger.Console.Operations; -// This has been replaced with my AudioTagTool application instead. -// It will likely no longer be updated. +// 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";