From 983b4348237225e96e8f9d7198b24adbdd717700 Mon Sep 17 00:00:00 2001 From: kdeng00 Date: Thu, 25 Jul 2024 19:33:05 -0400 Subject: [PATCH] #93: Song Model changes and support for different file types --- Controllers/Managers/SongManager.cs | 13 ++++++++++++- Controllers/v1/SongDataController.cs | 23 ++++++++++++++++++++--- Models/Song.cs | 2 ++ 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/Controllers/Managers/SongManager.cs b/Controllers/Managers/SongManager.cs index b9ed3ae..b23b012 100644 --- a/Controllers/Managers/SongManager.cs +++ b/Controllers/Managers/SongManager.cs @@ -205,7 +205,18 @@ public class SongManager : BaseManager if (string.IsNullOrEmpty(song.Filename)) { - song.Filename = song.GenerateFilename(true, AudioFileExtensionsType.WAV); + switch (song.AudioType) + { + case "wav": + song.Filename = song.GenerateFilename(true, AudioFileExtensionsType.WAV); + break; + case "flac": + song.Filename = song.GenerateFilename(true, AudioFileExtensionsType.FLAC); + break; + default: + song.Filename = song.GenerateFilename(true, AudioFileExtensionsType.Default); + break; + } } _logger.Info($"Temporary directory: {_tempDirectoryRoot}"); diff --git a/Controllers/v1/SongDataController.cs b/Controllers/v1/SongDataController.cs index 9431c9a..3fd9a29 100644 --- a/Controllers/v1/SongDataController.cs +++ b/Controllers/v1/SongDataController.cs @@ -43,7 +43,23 @@ public class SongDataController : BaseController var songMetaData = songContext.RetrieveRecord(new Song { Id = id}); var song = _songMgr.RetrieveSong(songMetaData).Result; - var filename = DirectoryManager.GenerateDownloadFilename(10, Constants.FileExtensions.WAV_EXTENSION, songMetaData.Title, randomizeFilename); + string filename; + + switch (songMetaData.AudioType) + { + case "wav": + filename = DirectoryManager.GenerateDownloadFilename(10, Constants.FileExtensions.WAV_EXTENSION, + songMetaData.Title, randomizeFilename); + break; + case "flac": + filename = DirectoryManager.GenerateDownloadFilename(10, Constants.FileExtensions.FLAC_EXTENSION, + songMetaData.Title, randomizeFilename); + break; + default: + filename = DirectoryManager.GenerateDownloadFilename(10, Constants.FileExtensions.DEFAULT_AUDIO_EXTENSION, + songMetaData.Title, randomizeFilename); + break; + } return File(song.Data, "application/x-msdownload", filename); } @@ -130,12 +146,13 @@ public class SongDataController : BaseController _logger.LogInformation($"Song title: {song.Title}"); - var fileType = meta.FileExtensionType(tmpSong.SongPath()); + // var fileType = song.Filename = tmpSong.Filename; song.SongDirectory = tmpSong.SongDirectory; song.DateCreated = tmpSong.DateCreated; + song.AudioType = meta.FileExtensionType(tmpSong.SongPath()); - switch (fileType) + switch (song.AudioType) { case "wav": // TODO: Identify the song file type. Then save the media. diff --git a/Models/Song.cs b/Models/Song.cs index d0d7a8b..20d7cb0 100644 --- a/Models/Song.cs +++ b/Models/Song.cs @@ -28,6 +28,8 @@ public class Song public string Filename { get; set; } [JsonIgnore] public string SongDirectory { get; set; } + [JsonProperty("audio_type")] + public string? AudioType { get; set; } [JsonProperty("track")] public int Track { get; set; } = 0; [JsonProperty("track_count")]