Can successfully save the coverart record, now need to work on downloading the cover art #50
This commit is contained in:
@@ -5,6 +5,7 @@ using System.IO;
|
||||
using Icarus.Controllers.Utilities;
|
||||
using Icarus.Database.Repositories;
|
||||
using Icarus.Models;
|
||||
using Icarus.Types;
|
||||
|
||||
namespace Icarus.Controllers.Managers
|
||||
{
|
||||
@@ -27,8 +28,12 @@ namespace Icarus.Controllers.Managers
|
||||
public void SaveCoverArtToDatabase(ref Song song, ref CoverArt coverArt,
|
||||
CoverArtRepository coverArtRepository)
|
||||
{
|
||||
// TODO: Implement saving Cover Art record to
|
||||
// the database.
|
||||
coverArtRepository.SaveCoverArt(coverArt);
|
||||
|
||||
coverArt = coverArtRepository.GetCoverArt(CoverArtField.SongTitle,
|
||||
coverArt);
|
||||
|
||||
song.CoverArtId = coverArt.CoverArtId;
|
||||
}
|
||||
public CoverArt SaveCoverArt(Song song)
|
||||
{
|
||||
@@ -43,11 +48,9 @@ namespace Icarus.Controllers.Managers
|
||||
ImagePath = imagePath
|
||||
};
|
||||
|
||||
Console.WriteLine($"Cover path {imagePath}");
|
||||
var metaData = new MetadataRetriever();
|
||||
var imgBytes = metaData.RetrieveCoverArtBytes(song);
|
||||
|
||||
Console.WriteLine("Saving image");
|
||||
File.WriteAllBytes(imagePath, imgBytes);
|
||||
|
||||
return coverArt;
|
||||
|
||||
@@ -4,6 +4,7 @@ using System.Collections.Generic;
|
||||
using MySql.Data.MySqlClient;
|
||||
|
||||
using Icarus.Models;
|
||||
using Icarus.Types;
|
||||
|
||||
namespace Icarus.Database.Repositories
|
||||
{
|
||||
@@ -74,6 +75,41 @@ namespace Icarus.Database.Repositories
|
||||
|
||||
return null;
|
||||
}
|
||||
public CoverArt GetCoverArt(CoverArtField field, CoverArt cover)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var conn = GetConnection())
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
using (var cmd = new MySqlCommand(BuildQuery(field),
|
||||
conn))
|
||||
{
|
||||
switch (field)
|
||||
{
|
||||
case CoverArtField.SongTitle:
|
||||
cmd.Parameters.AddWithValue("@SongTitle",
|
||||
cover.SongTitle);
|
||||
break;
|
||||
case CoverArtField.ImagePath:
|
||||
cmd.Parameters.AddWithValue("@ImagePath",
|
||||
cover.ImagePath);
|
||||
break;
|
||||
}
|
||||
|
||||
using (var reader = cmd.ExecuteReader())
|
||||
return ParseSingleData(reader);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
var msg = ex.Message;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public bool DoesCoverArtExist(CoverArt cover)
|
||||
{
|
||||
@@ -165,13 +201,27 @@ namespace Icarus.Database.Repositories
|
||||
{
|
||||
CoverArtId = Convert.ToInt32(reader["CoverArtId"]),
|
||||
SongTitle = reader["SongTitle"].ToString(),
|
||||
ImagePath = reader["ImagePath}"].ToString()
|
||||
ImagePath = reader["ImagePath"].ToString()
|
||||
};
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private string BuildQuery(CoverArtField field)
|
||||
{
|
||||
switch (field)
|
||||
{
|
||||
case CoverArtField.SongTitle:
|
||||
return "SELECT * FROM CoverArt WHERE SongTitle=@SongTitle";
|
||||
case CoverArtField.ImagePath:
|
||||
return "SELECT * FROM CoverArt WHERE ImagePath=" +
|
||||
"@ImagePath";
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private bool? AnyCoverArt()
|
||||
{
|
||||
using (var conn = GetConnection())
|
||||
|
||||
@@ -53,6 +53,7 @@ namespace Icarus.Database.Repositories
|
||||
cmd.Parameters.AddWithValue("@ArtistId", song.ArtistId);
|
||||
cmd.Parameters.AddWithValue("@GenreId", song.GenreId);
|
||||
cmd.Parameters.AddWithValue("@YearId", song.YearId);
|
||||
cmd.Parameters.AddWithValue("@CoverArtId", song.CoverArtId);
|
||||
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
@@ -284,7 +285,8 @@ namespace Icarus.Database.Repositories
|
||||
AlbumId = Convert.ToInt32(reader["AlbumId"].ToString()),
|
||||
ArtistId = Convert.ToInt32(reader["ArtistId"].ToString()),
|
||||
GenreId = Convert.ToInt32(reader["GenreId"].ToString()),
|
||||
YearId = Convert.ToInt32(reader["YearId"].ToString())
|
||||
YearId = Convert.ToInt32(reader["YearId"].ToString()),
|
||||
CoverArtId = Convert.ToInt32(reader["CoverArtId"].ToString())
|
||||
});
|
||||
}
|
||||
|
||||
@@ -310,6 +312,7 @@ namespace Icarus.Database.Repositories
|
||||
song.ArtistId = Convert.ToInt32(reader["ArtistId"].ToString());
|
||||
song.GenreId = Convert.ToInt32(reader["GenreId"].ToString());
|
||||
song.YearId = Convert.ToInt32(reader["YearId"].ToString());
|
||||
song.CoverArtId = Convert.ToInt32(reader["CoverArtId"].ToString());
|
||||
}
|
||||
|
||||
return song;
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
delete from Song where Id>0;
|
||||
delete from Album where AlbumId>0;
|
||||
delete from Artist where ArtistId>0;
|
||||
delete from Song;
|
||||
delete from Album;
|
||||
delete from Artist;
|
||||
delete from Genre;
|
||||
delete from Year;
|
||||
delete from CoverArt;
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
using System;
|
||||
|
||||
namespace Icarus.Types
|
||||
{
|
||||
public enum CoverArtField
|
||||
{
|
||||
SongTitle = 0,
|
||||
ImagePath
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user