From f05ed377cb7fa1bd1ccaa253e60ed19d848d1dba Mon Sep 17 00:00:00 2001 From: Clemens Zeidler Date: Wed, 17 Nov 2010 22:10:51 +0000 Subject: [PATCH] Add alternative code to retrieve audio meta data using the media kit. Libtag seems to work for more formats... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39468 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../audiotags/AudioTagAnalyser.cpp | 36 ++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/src/add-ons/index_server/audiotags/AudioTagAnalyser.cpp b/src/add-ons/index_server/audiotags/AudioTagAnalyser.cpp index da96a64ea9..4405efbe7e 100644 --- a/src/add-ons/index_server/audiotags/AudioTagAnalyser.cpp +++ b/src/add-ons/index_server/audiotags/AudioTagAnalyser.cpp @@ -2,6 +2,7 @@ #include +#include #include #include @@ -24,7 +25,7 @@ AudioTagAnalyser::InitCheck() } -#include + void AudioTagAnalyser::AnalyseEntry(const entry_ref& ref) { @@ -41,16 +42,43 @@ AudioTagAnalyser::AnalyseEntry(const entry_ref& ref) printf("artist: %s, title: %s, album: %s\n", artist.toCString(), title.toCString(), album.toCString()); - BFile file(path.Path(), B_READ_ONLY); + BFile file(&ref, B_READ_ONLY); if (file.InitCheck() != B_OK) return; const char* cArtist = artist.toCString(true); - file.WriteAttr("Media:Artist", B_STRING_TYPE, 0, cArtist, strlen(cArtist)); + file.WriteAttr("Audio:Artist", B_STRING_TYPE, 0, cArtist, strlen(cArtist)); const char* cTitle = title.toCString(true); file.WriteAttr("Media:Title", B_STRING_TYPE, 0, cTitle, strlen(cTitle)); const char* cAlbum = album.toCString(true); - file.WriteAttr("Media:Album", B_STRING_TYPE, 0, cAlbum, strlen(cAlbum)); + file.WriteAttr("Audio:Album", B_STRING_TYPE, 0, cAlbum, strlen(cAlbum)); +/* + BMediaFile mediaFile(&ref); + if (mediaFile.InitCheck() != B_OK) + return; + + BMessage metaData; + if (mediaFile.GetMetaData(&metaData) != B_OK) + return; + + BFile file(&ref, B_READ_ONLY); + if (file.InitCheck() != B_OK) + return; + + BString dataString; + if (metaData.FindString("artist", &dataString) == B_OK) + file.WriteAttr("Audio:Artist", B_STRING_TYPE, 0, dataString.String(), + dataString.Length()); + if (metaData.FindString("title", &dataString) == B_OK) + file.WriteAttr("Media:Title", B_STRING_TYPE, 0, dataString.String(), + dataString.Length()); + if (metaData.FindString("album", &dataString) == B_OK) + file.WriteAttr("Audio:Album", B_STRING_TYPE, 0, dataString.String(), + dataString.Length()); + if (metaData.FindString("track", &dataString) == B_OK) + file.WriteAttr("Audio:Track", B_STRING_TYPE, 0, dataString.String(), + dataString.Length());*/ + }