#95: Resolving merge conflict

This commit is contained in:
kdeng00
2024-06-21 20:29:21 -04:00
8 changed files with 112 additions and 35 deletions
+2 -2
View File
@@ -2,8 +2,8 @@ namespace Icarus.Constants;
public class DirectoryPaths public class DirectoryPaths
{ {
public static string CoverArtPath => public static string CoverArtDirectory => Directory.GetCurrentDirectory() + "/Images/Stock/";
Directory.GetCurrentDirectory() + "/Images/Stock/CoverArt.png"; public static string CoverArtFilename => "CoverArt.png";
public static string FILENAME_CHARACTERS = "ABCDEF0123456789"; public static string FILENAME_CHARACTERS = "ABCDEF0123456789";
public static int FILENAME_LENGTH = 25; public static int FILENAME_LENGTH = 25;
} }
+27 -14
View File
@@ -47,11 +47,11 @@ public class CoverArtManager : BaseManager
try try
{ {
var stockCoverArtPath = _rootCoverArtPath + "CoverArt.png"; var stockCoverArtPath = _rootCoverArtPath + "CoverArt.png";
if (!string.Equals(stockCoverArtPath, coverArt.ImagePath, if (!string.Equals(stockCoverArtPath, coverArt.ImagePath(),
StringComparison.CurrentCultureIgnoreCase)) StringComparison.CurrentCultureIgnoreCase))
{ {
_logger.Info("Song does not contain the stock cover art"); _logger.Info("Song does not contain the stock cover art");
File.Delete(coverArt.ImagePath); File.Delete(coverArt.ImagePath());
_logger.Info("Cover art deleted from the filesystem"); _logger.Info("Cover art deleted from the filesystem");
} }
else else
@@ -81,9 +81,8 @@ public class CoverArtManager : BaseManager
}; };
var segment = coverArt.GenerateFilename(0); var segment = coverArt.GenerateFilename(0);
var imagePath = dirMgr.SongDirectory + segment + defaultExtension; coverArt.Directory = dirMgr.SongDirectory;
coverArt.Filename = segment + defaultExtension;
coverArt.ImagePath = imagePath;
var metaData = new MetadataRetriever(); var metaData = new MetadataRetriever();
var imgBytes = metaData.RetrieveCoverArtBytes(song); var imgBytes = metaData.RetrieveCoverArtBytes(song);
@@ -91,17 +90,27 @@ public class CoverArtManager : BaseManager
if (imgBytes != null) if (imgBytes != null)
{ {
_logger.Info("Saving cover art to the filesystem"); _logger.Info("Saving cover art to the filesystem");
File.WriteAllBytes(coverArt.ImagePath, imgBytes); File.WriteAllBytes(coverArt.ImagePath(), imgBytes);
} }
else else
{ {
_logger.Info("Song has no cover art, applying stock cover art"); _logger.Info("Song has no cover art, applying stock cover art");
var coverArtFilePath = _rootCoverArtPath + $"{segment}{defaultExtension}"; var coverArtFilePath = _rootCoverArtPath + $"{segment}{defaultExtension}";
coverArt.ImagePath = DirectoryPaths.CoverArtPath; coverArt.Directory = DirectoryPaths.CoverArtDirectory;
coverArt.Filename = DirectoryPaths.CoverArtFilename;
metaData.UpdateCoverArt(song, coverArt); metaData.UpdateCoverArt(song, coverArt);
coverArt.ImagePath = coverArtFilePath; coverArt.Directory = this._rootCoverArtPath;
File.WriteAllBytes(coverArt.ImagePath, _stockCoverArt); coverArt.Filename = $"{segment}{defaultExtension}";
File.WriteAllBytes(coverArt.ImagePath(), _stockCoverArt);
}
coverArt.Type = metaData.CoverArtFileExtensionType(coverArt);
if (string.IsNullOrEmpty(coverArt.Type))
{
Console.WriteLine("File type is empty");
Console.WriteLine($"Directory: {coverArt.Directory}");
Console.WriteLine($"Filename: {coverArt.Filename}");
} }
return coverArt; return coverArt;
@@ -121,16 +130,19 @@ public class CoverArtManager : BaseManager
try try
{ {
MetadataRetriever metaData = new MetadataRetriever();
var dirMgr = new DirectoryManager(_rootCoverArtPath); var dirMgr = new DirectoryManager(_rootCoverArtPath);
var defaultExtension = ".png"; cover.Type = metaData.FileExtensionType(data);
var defaultExtension = "." + cover.Type;
dirMgr.CreateDirectory(song); dirMgr.CreateDirectory(song);
var segment = cover.GenerateFilename(0); var segment = cover.GenerateFilename(0);
var imagePath = dirMgr.SongDirectory + segment + defaultExtension; var imagePath = dirMgr.SongDirectory + segment + defaultExtension;
cover.ImagePath = imagePath; cover.Directory = dirMgr.SongDirectory;
cover.Filename = segment + defaultExtension;
using (var fileStream = new FileStream(imagePath, FileMode.Create)) using (var fileStream = new FileStream(cover.ImagePath(), FileMode.Create))
{ {
data.CopyTo(fileStream); data.CopyTo(fileStream);
} }
@@ -151,9 +163,10 @@ public class CoverArtManager : BaseManager
private void Initialize() private void Initialize()
{ {
_coverArtContext = new CoverArtContext(_connectionString); _coverArtContext = new CoverArtContext(_connectionString);
var path = DirectoryPaths.CoverArtDirectory + DirectoryPaths.CoverArtFilename;
if (System.IO.File.Exists(DirectoryPaths.CoverArtPath)) if (System.IO.File.Exists(path))
_stockCoverArt = File.ReadAllBytes(DirectoryPaths.CoverArtPath); _stockCoverArt = File.ReadAllBytes(path);
if (!File.Exists(_rootCoverArtPath + "CoverArt.png")) if (!File.Exists(_rootCoverArtPath + "CoverArt.png"))
{ {
+43 -1
View File
@@ -64,6 +64,48 @@ public class MetadataRetriever
_logger.Info($"Year: {song.Year}"); _logger.Info($"Year: {song.Year}");
_logger.Info($"Duration: {song.Duration}"); _logger.Info($"Duration: {song.Duration}");
} }
public string CoverArtFileExtensionType(CoverArt cover)
{
Console.WriteLine("Retrieving CoverArt file extension type");
using (var fileStream = System.IO.File.OpenRead(cover.ImagePath()))
{
var isRecognizableType = FileTypeChecker.FileTypeValidator.IsTypeRecognizable(fileStream);
if (!isRecognizableType)
{
return string.Empty;
}
var fileType = FileTypeChecker.FileTypeValidator.GetFileType(fileStream);
Console.WriteLine($"Filetype: {fileType}");
return fileType.Extension;
}
}
public string FileExtensionType(IFormFile file)
{
using (var fileStream = file.OpenReadStream())
{
var isRecognizableType = FileTypeChecker.FileTypeValidator.IsTypeRecognizable(fileStream);
if (!isRecognizableType)
{
return string.Empty;
}
var fileType = FileTypeChecker.FileTypeValidator.GetFileType(fileStream);
Console.WriteLine($"Filetype: {fileType}");
Console.WriteLine($"Extension: {fileType.Extension}");
return fileType.Extension;
}
}
public Song RetrieveMetaData(string filePath) public Song RetrieveMetaData(string filePath)
{ {
Song song = new Song(); Song song = new Song();
@@ -158,7 +200,7 @@ public class MetadataRetriever
var pics = tag.Tag.Pictures; var pics = tag.Tag.Pictures;
Array.Resize(ref pics, 1); Array.Resize(ref pics, 1);
pics[0] = new Picture(coverArt.ImagePath) pics[0] = new Picture(coverArt.ImagePath())
{ {
Description = "Cover Art" Description = "Cover Art"
}; };
+1 -1
View File
@@ -61,7 +61,7 @@ public class CoverArtController : BaseController
{ {
_logger.LogInformation("Found cover art record"); _logger.LogInformation("Found cover art record");
var coverArtBytes = System.IO.File.ReadAllBytes( var coverArtBytes = System.IO.File.ReadAllBytes(
coverArt.ImagePath); coverArt.ImagePath());
return File(coverArtBytes, "application/x-msdownload", return File(coverArtBytes, "application/x-msdownload",
coverArt.SongTitle); coverArt.SongTitle);
+1
View File
@@ -12,6 +12,7 @@
<PackageReference Include="BouncyCastle.Cryptography" Version="2.4.0" /> <PackageReference Include="BouncyCastle.Cryptography" Version="2.4.0" />
<PackageReference Include="DotNetZip" Version="1.15.0" /> <PackageReference Include="DotNetZip" Version="1.15.0" />
<PackageReference Include="EntityFramework" Version="6.4.4" /> <PackageReference Include="EntityFramework" Version="6.4.4" />
<PackageReference Include="File.TypeChecker" Version="4.1.1" />
<PackageReference Include="ID3" Version="0.6.0" /> <PackageReference Include="ID3" Version="0.6.0" />
<PackageReference Include="JWT" Version="10.1.1" /> <PackageReference Include="JWT" Version="10.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.6" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.6" />
+20 -2
View File
@@ -10,11 +10,29 @@ public class CoverArt
[JsonProperty("title")] [JsonProperty("title")]
public string SongTitle { get; set; } public string SongTitle { get; set; }
[JsonIgnore] [JsonIgnore]
public string ImagePath { get; set; } public string Directory { get; set; }
[JsonProperty("filename")]
public string Filename { get; set; }
[JsonProperty("type")]
public string Type { get; set; }
#endregion #endregion
#region Methods #region Methods
public string ImagePath()
{
var fullPath = this.Directory;
if (fullPath[fullPath.Length -1] != '/')
{
fullPath += "/";
}
fullPath += Filename;
return fullPath;
}
public string GenerateFilename(int flag) public string GenerateFilename(int flag)
{ {
int length = Constants.DirectoryPaths.FILENAME_LENGTH; int length = Constants.DirectoryPaths.FILENAME_LENGTH;
@@ -27,6 +45,6 @@ public class CoverArt
return (flag == 0) ? filename : $"{filename}{extension}"; return (flag == 0) ? filename : $"{filename}{extension}";
} }
public async Task<byte[]> GetData() => await File.ReadAllBytesAsync(this.ImagePath); public async Task<byte[]> GetData() => await File.ReadAllBytesAsync(this.ImagePath());
#endregion #endregion
} }
+15 -14
View File
@@ -1,27 +1,28 @@
echo "Adding migrations..." echo "Adding migrations..."
echo "Adding User migration" echo "Adding User migration"
dotnet-ef migrations add User --context UserContext ~/.dotnet/tools/dotnet-ef migrations add User --context UserContext
echo "Adding Album migration" echo "Adding Album migration"
dotnet-ef migrations add Album --context AlbumContext ~/.dotnet/tools/dotnet-ef migrations add Album --context AlbumContext
echo "Adding Artist migration" echo "Adding Artist migration"
dotnet-ef migrations add Artist --context ArtistContext ~/.dotnet/tools/dotnet-ef migrations add Artist --context ArtistContext
echo "Adding Cover art migration"
dotnet-ef migrations add CoverArt --context CoverArtContext
echo "Adding Genre migration" echo "Adding Genre migration"
dotnet-ef migrations add Genre --context GenreContext ~/.dotnet/tools/dotnet-ef migrations add Genre --context GenreContext
echo "Adding Cover art migration"
~/.dotnet/tools/dotnet-ef migrations add CoverArt --context CoverArtContext
echo "Adding Song migration" echo "Adding Song migration"
dotnet-ef migrations add Song --context SongContext ~/.dotnet/tools/dotnet-ef migrations add Song --context SongContext
echo "Updating migrations.." echo "Updating migrations.."
echo "Updating User migration" echo "Updating User migration"
dotnet-ef database update --context UserContext ~/.dotnet/tools/dotnet-ef database update --context UserContext
echo "Updating Album migration" echo "Updating Album migration"
dotnet-ef database update --context AlbumContext ~/.dotnet/tools/dotnet-ef database update --context AlbumContext
echo "Updating Artist migration" echo "Updating Artist migration"
dotnet-ef database update --context ArtistContext ~/.dotnet/tools/dotnet-ef database update --context ArtistContext
echo "Updating Cover art migration"
dotnet-ef database update --context CoverArtContext
echo "Updating Genre migration" echo "Updating Genre migration"
dotnet-ef database update --context GenreContext ~/.dotnet/tools/dotnet-ef database update --context GenreContext
echo "Updating Cover art migration"
~/.dotnet/tools/dotnet-ef database update --context CoverArtContext
echo "Updating Song migration" echo "Updating Song migration"
dotnet-ef database update --context SongContext ~/.dotnet/tools/dotnet-ef database update --context SongContext
+3 -1
View File
@@ -1,5 +1,7 @@
delete from Song;
delete from Album; delete from Album;
delete from Artist; delete from Artist;
delete from CoverArt;
delete from Genre; delete from Genre;
delete from CoverArt; delete from CoverArt;
delete from Song;
delete from User;