From 5b19cdaa46a6a263172c30f01eb21a0d29cdc8e6 Mon Sep 17 00:00:00 2001 From: kdeng00 Date: Sat, 10 Aug 2019 01:03:52 -0400 Subject: [PATCH] Working on #56 --- Controllers/Utilities/MetadataRetriever.cs | 5 ++++- Libs/src/metadata_retriever.cpp | 24 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/Controllers/Utilities/MetadataRetriever.cs b/Controllers/Utilities/MetadataRetriever.cs index 0a0aa5d..f4fb81f 100644 --- a/Controllers/Utilities/MetadataRetriever.cs +++ b/Controllers/Utilities/MetadataRetriever.cs @@ -7,6 +7,7 @@ using NLog; using TagLib; using Icarus.Models; +using Icarus.Controllers.Managers; namespace Icarus.Controllers.Utilities { @@ -63,7 +64,9 @@ namespace Icarus.Controllers.Utilities #region C++ Libs [DllImport("libicarus.so")] - public static extern void retrieve_metadata(ref Icarus.Controllers.Managers.SongManager.Sng sng, string file_path); + public static extern void retrieve_metadata(ref SongManager.Sng sng, string file_path); + [DllImport("libicarus.so")] + public static extern void update_metadata(ref SongManager.Sng sng_updated, ref SongManager.Sng sng_old); #endregion public byte[] RetrieveCoverArtBytes(Song song) diff --git a/Libs/src/metadata_retriever.cpp b/Libs/src/metadata_retriever.cpp index ca458cd..679ef0b 100644 --- a/Libs/src/metadata_retriever.cpp +++ b/Libs/src/metadata_retriever.cpp @@ -10,6 +10,7 @@ extern "C" { void retrieve_metadata(Song*, char*); +void update_metadata(Song*, Song*); void retrieve_metadata(Song *sng, char* song_path) { @@ -24,5 +25,28 @@ void retrieve_metadata(Song *sng, char* song_path) sng->Duration = file.audioProperties()->lengthInSeconds(); strcpy(sng->SongPath, song_path); } +void update_metadata(Song *sng_updated, Song *sng_old) +{ + std::cout<<"updating metadata"<SongPath); + + if (strlen(sng_updated->Title) > 0) { + file.tag()->setTitle(sng_updated->Title); + } + if (strlen(sng_updated->Artist) > 0) { + file.tag()->setArtist(sng_updated->Artist); + } + if (strlen(sng_updated->Album) > 0) { + file.tag()->setAlbum(sng_updated->Album); + } + if (strlen(sng_updated->Genre) > 0) { + file.tag()->setGenre(sng_updated->Genre); + } + if (sng_updated->Year > 0) { + file.tag()->setYear(sng_updated->Year); + } + + file.save(); +} }