diff --git a/Controllers/Managers/SongManager.cs b/Controllers/Managers/SongManager.cs index b743d8c..b9ed3ae 100644 --- a/Controllers/Managers/SongManager.cs +++ b/Controllers/Managers/SongManager.cs @@ -170,7 +170,7 @@ public class SongManager : BaseManager dirMgr.CreateDirectory(); var tempPath = song.SongPath(); - song.Filename = song.GenerateFilename(1); + song.Filename = song.GenerateFilename(true, AudioFileExtensionsType.WAV); var filePath = $"{dirMgr.SongDirectory}{song.Filename}"; _logger.Info($"Absolute song path: {filePath}"); @@ -205,7 +205,7 @@ public class SongManager : BaseManager if (string.IsNullOrEmpty(song.Filename)) { - song.Filename = song.GenerateFilename(1); + song.Filename = song.GenerateFilename(true, AudioFileExtensionsType.WAV); } _logger.Info($"Temporary directory: {_tempDirectoryRoot}"); @@ -254,7 +254,6 @@ public class SongManager : BaseManager var coverMgr = new CoverArtManager(_config); var coverArt = coverMgr.SaveCoverArt(coverArtData, song); - var meta = new Utilities.MetadataRetriever(); meta.UpdateMetadata(song, song); @@ -264,6 +263,7 @@ public class SongManager : BaseManager var tempPath = song.SongPath(); song.SongDirectory = dirMgr.SongDirectory; + song.Filename = song.GenerateFilename(true, AudioFileExtensionsType.FLAC); var filePath = song.SongPath(); _logger.Info($"Absolute song path: {filePath}"); @@ -340,7 +340,7 @@ public class SongManager : BaseManager { _logger.Info("Assigning song filename"); var song = new Song { SongDirectory = this._tempDirectoryRoot }; - var filename = await song.GenerateFilenameAsync(0) + "-" + songFile.FileName; + var filename = await song.GenerateFilenameAsync(false) + "-" + songFile.FileName; song.Filename = filename; var songPath = song.SongPath(); diff --git a/Models/Song.cs b/Models/Song.cs index fd303a8..d0d7a8b 100644 --- a/Models/Song.cs +++ b/Models/Song.cs @@ -88,26 +88,43 @@ public class Song return fullPath; } - public string GenerateFilename(int flag = 0) + public string GenerateFilename(bool includeExtension = false, AudioFileExtensionsType flag = AudioFileExtensionsType.Default) { int length = Constants.DirectoryPaths.FILENAME_LENGTH; string chars = Constants.DirectoryPaths.FILENAME_CHARACTERS; var filename = this.Generate(length, chars); - var extension = Icarus.Constants.FileExtensions.DEFAULT_AUDIO_EXTENSION; + // var extension = Icarus.Constants.FileExtensions.DEFAULT_AUDIO_EXTENSION; + var extension = this.DetermineFileExtension(flag); - return flag == 0 ? filename : $"{filename}{extension}"; + return includeExtension ? $"{filename}{extension}" : filename; } - public async Task GenerateFilenameAsync(int flag = 0) + public async Task GenerateFilenameAsync(bool includeExtension = false, AudioFileExtensionsType flag = AudioFileExtensionsType.Default) { int length = Constants.DirectoryPaths.FILENAME_LENGTH; string chars = Constants.DirectoryPaths.FILENAME_CHARACTERS; - var extension = Icarus.Constants.FileExtensions.DEFAULT_AUDIO_EXTENSION; + // var extension = Icarus.Constants.FileExtensions.DEFAULT_AUDIO_EXTENSION; + var extension = this.DetermineFileExtension(flag); var filename = await Task.Run(() => { return this.Generate(length, chars); }); - return flag == 0 ? filename : $"{filename}{extension}"; + return includeExtension ? $"{filename}{extension}" : filename; + } + + private string DetermineFileExtension(AudioFileExtensionsType flag) + { + switch (flag) + { + case AudioFileExtensionsType.Default: + return Constants.FileExtensions.DEFAULT_AUDIO_EXTENSION; + case AudioFileExtensionsType.WAV: + return Constants.FileExtensions.WAV_EXTENSION; + case AudioFileExtensionsType.FLAC: + return Constants.FileExtensions.FLAC_EXTENSION; + default: + return ""; + } } private string Generate(int length, string chars) @@ -119,3 +136,10 @@ public class Song } #endregion } + +public enum AudioFileExtensionsType +{ + Default = 0, + WAV = 1, + FLAC = 2 +}