#93: Making some changes to how the file extension is determined

This commit is contained in:
kdeng00
2024-07-18 15:26:59 -04:00
parent 470b7a953a
commit 45c2bd9572
5 changed files with 49 additions and 13 deletions
+1
View File
@@ -2,6 +2,7 @@ namespace Icarus.Constants;
public class FileExtensions
{
public static string DEFAULT_AUDIO_EXTENSION = WAV_EXTENSION;
// Contains file extension with period at the beginning
public static string MP3_EXTENSION = ".mp3";
+11 -8
View File
@@ -308,28 +308,31 @@ public class SongManager : BaseManager
Data = uncompressedSong
};
}
private async Task<Song> SaveSongTemp(IFormFile songFile)
public async Task<Song> SaveSongTemp(IFormFile songFile)
{
var song = new Song();
_logger.Info("Assigning song filename");
song.SongDirectory = _tempDirectoryRoot;
var filename = song.GenerateFilename(1);
var song = new Song { SongDirectory = this._tempDirectoryRoot };
var filename = await song.GenerateFilenameAsync(0) + "-" + songFile.FileName;
song.Filename = filename;
var songPath = song.SongPath();
using (var filestream = new FileStream(song.SongPath(), FileMode.Create))
using (var filestream = new FileStream(songPath, FileMode.Create))
{
_logger.Info("Saving temp song: {0}", song.SongPath());
_logger.Info("Saving temp song: {0}", songPath);
await songFile.CopyToAsync(filestream);
}
// For audio files that already contain embedded metadata
/*
await Task.Run(() =>
{
MetadataRetriever meta = new MetadataRetriever();
song = meta.RetrieveMetaData(song.SongPath());
});
*/
song.SongDirectory = _tempDirectoryRoot;
// song.SongDirectory = _tempDirectoryRoot;
song.DateCreated = DateTime.Now;
song.Filename = filename;
// song.Filename = filename;
return song;
}
@@ -100,6 +100,7 @@ public class MetadataRetriever
}
var fileType = FileTypeChecker.FileTypeValidator.GetFileType(fileStream);
Console.WriteLine($"Filetype: {fileType}");
Console.WriteLine($"Extension: {fileType.Extension}");
@@ -108,6 +109,20 @@ public class MetadataRetriever
}
}
public string FileExtensionType(string path)
{
var extensionRaw = System.IO.Path.GetExtension(path);
if (extensionRaw[0] == '.')
{
return extensionRaw.Substring(1);
}
else
{
return extensionRaw;
}
}
public bool IsSupportedFile(IFormFile file)
{
var supportedTypes = this._supportedAudioFileTypes;
@@ -124,6 +139,22 @@ public class MetadataRetriever
return supportedTypes.Contains(extensionType);
}
public bool IsSupportedFile(string path)
{
var supportedTypes = this._supportedAudioFileTypes;
this._supportedImageFileTypes.ForEach(t =>
{
if (!supportedTypes.Contains(t))
{
supportedTypes.Add(t);
}
});
var extensionType = this.FileExtensionType(path).ToLower();
return supportedTypes.Contains(extensionType);
}
public Song RetrieveMetaData(string filePath)
{
Song song = new Song();
+4 -3
View File
@@ -104,11 +104,12 @@ public class SongDataController : BaseController
if (up.SongData.Length > 0 && up.CoverArtData.Length > 0 && !string.IsNullOrEmpty(up.SongFile))
{
var meta = new Utilities.MetadataRetriever();
if (!meta.IsSupportedFile(up.SongData) && !meta.IsSupportedFile(up.CoverArtData))
var tmpSong = this._songMgr.SaveSongTemp(up.SongData).Result;
if (!meta.IsSupportedFile(tmpSong.SongPath()) && !meta.IsSupportedFile(up.CoverArtData))
{
return BadRequest("Media is not supported");
}
else if (!meta.IsSupportedFile(up.SongData))
else if (!meta.IsSupportedFile(tmpSong.SongPath()))
{
return BadRequest("Song is not supported");
}
@@ -129,7 +130,7 @@ public class SongDataController : BaseController
_logger.LogInformation($"Song title: {song.Title}");
var fileType = meta.FileExtensionType(up.SongData);
var fileType = meta.FileExtensionType(tmpSong.SongPath());
switch (fileType)
{
+2 -2
View File
@@ -75,7 +75,7 @@ public class Song
int length = Constants.DirectoryPaths.FILENAME_LENGTH;
string chars = Constants.DirectoryPaths.FILENAME_CHARACTERS;
var filename = this.Generate(length, chars);
var extension = Icarus.Constants.FileExtensions.WAV_EXTENSION;
var extension = Icarus.Constants.FileExtensions.DEFAULT_AUDIO_EXTENSION;
return flag == 0 ? filename : $"{filename}{extension}";
}
@@ -83,7 +83,7 @@ public class Song
{
int length = Constants.DirectoryPaths.FILENAME_LENGTH;
string chars = Constants.DirectoryPaths.FILENAME_CHARACTERS;
var extension = Icarus.Constants.FileExtensions.WAV_EXTENSION;
var extension = Icarus.Constants.FileExtensions.DEFAULT_AUDIO_EXTENSION;
var filename = await Task.Run(() =>
{
return this.Generate(length, chars);