Tricky implementing taglib's APIC extracting/saving feature, but I got it. Left some TODO's on where to pick up #56
This commit is contained in:
@@ -67,15 +67,22 @@ namespace Icarus.Controllers.Managers
|
||||
DirectoryManager.create_directory(SongManager.ConvertSongToSng(song),
|
||||
_rootCoverArtPath, imgPath);
|
||||
|
||||
var imagePath = imgPath.ToString().Substring(0, strCount);
|
||||
imagePath += song.Title + ".png";
|
||||
var imagePath = imgPath.ToString().Substring(0, strCount) +
|
||||
song.Title + ".png";
|
||||
var coverArt = new CoverArt
|
||||
{
|
||||
SongTitle = song.Title,
|
||||
ImagePath = imagePath
|
||||
};
|
||||
|
||||
var metaData = new MetadataRetriever();
|
||||
var cov = ConvertCoverArtToCovArt(coverArt);
|
||||
var stock_path = _rootCoverArtPath + "CoverArt.png";
|
||||
|
||||
//var metaData = new MetadataRetriever();
|
||||
// TODO: Work on the function on the c++ side
|
||||
// I left some TODO's
|
||||
MetadataRetriever.update_cover_art(ref cov, stock_path, song.SongPath);
|
||||
/**
|
||||
var imgBytes = metaData.RetrieveCoverArtBytes(song);
|
||||
|
||||
if (imgBytes != null)
|
||||
@@ -89,6 +96,7 @@ namespace Icarus.Controllers.Managers
|
||||
coverArt.ImagePath = _rootCoverArtPath + "CoverArt.png";
|
||||
metaData.UpdateCoverArt(song, coverArt);
|
||||
}
|
||||
*/
|
||||
|
||||
return coverArt;
|
||||
}
|
||||
@@ -101,6 +109,23 @@ namespace Icarus.Controllers.Managers
|
||||
return null;
|
||||
}
|
||||
|
||||
public static CovArt ConvertCoverArtToCovArt(CoverArt cover)
|
||||
{
|
||||
return new CovArt
|
||||
{
|
||||
SongTitle = cover.SongTitle,
|
||||
ImagePath = cover.ImagePath
|
||||
};
|
||||
}
|
||||
public static CoverArt ConvertCovArtToCoverArt(CovArt cov)
|
||||
{
|
||||
return new CoverArt
|
||||
{
|
||||
SongTitle = cov.SongTitle,
|
||||
ImagePath = cov.ImagePath
|
||||
};
|
||||
}
|
||||
|
||||
private void Initialize()
|
||||
{
|
||||
var stockCover = _rootCoverArtPath + "CoverArt.png";
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace Icarus.Controllers.Managers
|
||||
#region Methods
|
||||
#region C++ libs
|
||||
[DllImport("libicarus.so")]
|
||||
public static extern void create_directory(SongManager.Sng song, string root_path, StringBuilder created_dir);
|
||||
public static extern void create_directory(Sng song, string root_path, StringBuilder created_dir);
|
||||
|
||||
[DllImport("libicarus.so")]
|
||||
public static extern void copy_stock_cover_art(string target_path, string source_path);
|
||||
@@ -28,10 +28,10 @@ namespace Icarus.Controllers.Managers
|
||||
public static extern void delete_cover_art(string cover_art_path, string stock_path);
|
||||
|
||||
[DllImport("libicarus.so")]
|
||||
public static extern void delete_empty_directories(SongManager.Sng song, string root_path);
|
||||
public static extern void delete_empty_directories(Sng song, string root_path);
|
||||
|
||||
[DllImport("libicarus.so")]
|
||||
public static extern void delete_song_empty_directories(SongManager.Sng song, string root_path);
|
||||
public static extern void delete_song_empty_directories(Sng song, string root_path);
|
||||
#endregion
|
||||
#endregion
|
||||
}
|
||||
|
||||
@@ -760,26 +760,5 @@ namespace Icarus.Controllers.Managers
|
||||
yearStore.DeleteYear(year);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region Structs
|
||||
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
|
||||
public struct Sng
|
||||
{
|
||||
public int Id;
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
|
||||
public string Title;
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
|
||||
public string Artist;
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
|
||||
public string Album;
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
|
||||
public string Genre;
|
||||
public int Year;
|
||||
public int Duration;
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
|
||||
public string SongPath;
|
||||
};
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user