#93: Add flac support (#101)

* Added script shell to convert wav files to flac

* #93: Minor change to script to convert wav files to flac

* #93: Added more code to for the music file conversion

* #93: Script to convert wav files to flac files is done

* #93: Clean up

* #93: Starting work to implement flac support

* #93: Minor update to conversion script

* #93: Added dotnet manifest file

Includes the dotnet-ef tool

* #93: Updated README and migration script

* #93: Created skeleton for saving flac files

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

* #93: Updated gitignore

* #93: Another gitignore update

* #93: Making some changes to the process of saving a song to the filesystem

* #93: Adding SQL script to drop and create database

* #93: Saving uploaded song to a temporary location for processing

* #93: Initializing some properties in the song model earlier

* #93: Uploading wav songs works. Moving on to flac support

* #93: Added more code to save flac files

* #93: Updated some code that affects filename generation for audio files

* #93: Song Model changes and support for different file types

* #93: Working on build errors, removed DotnetZip dependency, and added new Ionic.Zlip.Netstandard dependency

* #93: Reduce build errors

* #93: Removed ID3 dependency

* #93: Cleanup
This commit was merged in pull request #101.
This commit is contained in:
KD
2024-07-27 13:19:12 -04:00
committed by GitHub
parent 4b3fa78336
commit 8900afdfd2
50 changed files with 787 additions and 493 deletions
+15 -12
View File
@@ -1,5 +1,3 @@
using Ionic.Zip;
using Icarus.Models;
namespace Icarus.Controllers.Utilities;
@@ -7,14 +5,14 @@ namespace Icarus.Controllers.Utilities;
public class SongCompression
{
#region Fields
string _compressedSongFilename;
string _tempDirectory;
byte[] _uncompressedSong;
string? _compressedSongFilename;
string? _tempDirectory;
byte[]? _uncompressedSong;
#endregion
#region Propterties
public string CompressedSongFilename
public string? CompressedSongFilename
{
get => _compressedSongFilename;
set => _compressedSongFilename = value;
@@ -63,10 +61,15 @@ public class SongCompression
try
{
using (ZipFile zip = new ZipFile())
using (var fi = new FileStream(songDetails.SongPath(), FileMode.Open))
{
zip.AddFile(songDetails.SongPath());
zip.Save(tmpZipFilePath);
using (var z = new Ionic.Zlib.ZlibStream(fi, Ionic.Zlib.CompressionMode.Compress))
{
using (var tr = new FileStream(tmpZipFilePath, FileMode.CreateNew))
{
z.CopyTo(tr);
}
}
}
Console.WriteLine("Successfully compressed");
@@ -78,7 +81,7 @@ public class SongCompression
Console.WriteLine(exMsg);
}
if (songDetails.Filename.Contains(Constants.FileExtensions.WAV_EXTENSION))
if (songDetails.Filename!.Contains(Constants.FileExtensions.WAV_EXTENSION))
{
_compressedSongFilename = StripExtension(songDetails.Filename);
}
@@ -89,7 +92,7 @@ public class SongCompression
// Method not being used
public byte[] CompressedSong(byte[] uncompressedSong)
{
byte[] compressedSong = null;
byte[]? compressedSong = null;
try
{
Console.WriteLine("Song has been successfully compressed");
@@ -101,7 +104,7 @@ public class SongCompression
Console.WriteLine(exMsg);
}
return compressedSong;
return compressedSong!;
}