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.Controllers.Utilities;
|
||||||
using Icarus.Database.Repositories;
|
using Icarus.Database.Repositories;
|
||||||
using Icarus.Models;
|
using Icarus.Models;
|
||||||
|
using Icarus.Types;
|
||||||
|
|
||||||
namespace Icarus.Controllers.Managers
|
namespace Icarus.Controllers.Managers
|
||||||
{
|
{
|
||||||
@@ -27,8 +28,12 @@ namespace Icarus.Controllers.Managers
|
|||||||
public void SaveCoverArtToDatabase(ref Song song, ref CoverArt coverArt,
|
public void SaveCoverArtToDatabase(ref Song song, ref CoverArt coverArt,
|
||||||
CoverArtRepository coverArtRepository)
|
CoverArtRepository coverArtRepository)
|
||||||
{
|
{
|
||||||
// TODO: Implement saving Cover Art record to
|
coverArtRepository.SaveCoverArt(coverArt);
|
||||||
// the database.
|
|
||||||
|
coverArt = coverArtRepository.GetCoverArt(CoverArtField.SongTitle,
|
||||||
|
coverArt);
|
||||||
|
|
||||||
|
song.CoverArtId = coverArt.CoverArtId;
|
||||||
}
|
}
|
||||||
public CoverArt SaveCoverArt(Song song)
|
public CoverArt SaveCoverArt(Song song)
|
||||||
{
|
{
|
||||||
@@ -43,11 +48,9 @@ namespace Icarus.Controllers.Managers
|
|||||||
ImagePath = imagePath
|
ImagePath = imagePath
|
||||||
};
|
};
|
||||||
|
|
||||||
Console.WriteLine($"Cover path {imagePath}");
|
|
||||||
var metaData = new MetadataRetriever();
|
var metaData = new MetadataRetriever();
|
||||||
var imgBytes = metaData.RetrieveCoverArtBytes(song);
|
var imgBytes = metaData.RetrieveCoverArtBytes(song);
|
||||||
|
|
||||||
Console.WriteLine("Saving image");
|
|
||||||
File.WriteAllBytes(imagePath, imgBytes);
|
File.WriteAllBytes(imagePath, imgBytes);
|
||||||
|
|
||||||
return coverArt;
|
return coverArt;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.Collections.Generic;
|
|||||||
using MySql.Data.MySqlClient;
|
using MySql.Data.MySqlClient;
|
||||||
|
|
||||||
using Icarus.Models;
|
using Icarus.Models;
|
||||||
|
using Icarus.Types;
|
||||||
|
|
||||||
namespace Icarus.Database.Repositories
|
namespace Icarus.Database.Repositories
|
||||||
{
|
{
|
||||||
@@ -74,6 +75,41 @@ namespace Icarus.Database.Repositories
|
|||||||
|
|
||||||
return null;
|
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)
|
public bool DoesCoverArtExist(CoverArt cover)
|
||||||
{
|
{
|
||||||
@@ -165,13 +201,27 @@ namespace Icarus.Database.Repositories
|
|||||||
{
|
{
|
||||||
CoverArtId = Convert.ToInt32(reader["CoverArtId"]),
|
CoverArtId = Convert.ToInt32(reader["CoverArtId"]),
|
||||||
SongTitle = reader["SongTitle"].ToString(),
|
SongTitle = reader["SongTitle"].ToString(),
|
||||||
ImagePath = reader["ImagePath}"].ToString()
|
ImagePath = reader["ImagePath"].ToString()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
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()
|
private bool? AnyCoverArt()
|
||||||
{
|
{
|
||||||
using (var conn = GetConnection())
|
using (var conn = GetConnection())
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ namespace Icarus.Database.Repositories
|
|||||||
cmd.Parameters.AddWithValue("@ArtistId", song.ArtistId);
|
cmd.Parameters.AddWithValue("@ArtistId", song.ArtistId);
|
||||||
cmd.Parameters.AddWithValue("@GenreId", song.GenreId);
|
cmd.Parameters.AddWithValue("@GenreId", song.GenreId);
|
||||||
cmd.Parameters.AddWithValue("@YearId", song.YearId);
|
cmd.Parameters.AddWithValue("@YearId", song.YearId);
|
||||||
|
cmd.Parameters.AddWithValue("@CoverArtId", song.CoverArtId);
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
cmd.ExecuteNonQuery();
|
||||||
}
|
}
|
||||||
@@ -284,7 +285,8 @@ namespace Icarus.Database.Repositories
|
|||||||
AlbumId = Convert.ToInt32(reader["AlbumId"].ToString()),
|
AlbumId = Convert.ToInt32(reader["AlbumId"].ToString()),
|
||||||
ArtistId = Convert.ToInt32(reader["ArtistId"].ToString()),
|
ArtistId = Convert.ToInt32(reader["ArtistId"].ToString()),
|
||||||
GenreId = Convert.ToInt32(reader["GenreId"].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.ArtistId = Convert.ToInt32(reader["ArtistId"].ToString());
|
||||||
song.GenreId = Convert.ToInt32(reader["GenreId"].ToString());
|
song.GenreId = Convert.ToInt32(reader["GenreId"].ToString());
|
||||||
song.YearId = Convert.ToInt32(reader["YearId"].ToString());
|
song.YearId = Convert.ToInt32(reader["YearId"].ToString());
|
||||||
|
song.CoverArtId = Convert.ToInt32(reader["CoverArtId"].ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
return song;
|
return song;
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
delete from Song where Id>0;
|
delete from Song;
|
||||||
delete from Album where AlbumId>0;
|
delete from Album;
|
||||||
delete from Artist where ArtistId>0;
|
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