Author: czeidler Date: 2010-11-17 23:10:51 +0100 (Wed, 17 Nov 2010) New Revision: 39468 Changeset: http://dev.haiku-os.org/changeset/39468 Modified: haiku/trunk/src/add-ons/index_server/audiotags/AudioTagAnalyser.cpp Log: Add alternative code to retrieve audio meta data using the media kit. Libtag seems to work for more formats... Modified: haiku/trunk/src/add-ons/index_server/audiotags/AudioTagAnalyser.cpp =================================================================== --- haiku/trunk/src/add-ons/index_server/audiotags/AudioTagAnalyser.cpp 2010-11-17 17:22:37 UTC (rev 39467) +++ haiku/trunk/src/add-ons/index_server/audiotags/AudioTagAnalyser.cpp 2010-11-17 22:10:51 UTC (rev 39468) @@ -2,6 +2,7 @@ #include <new> +#include <MediaFile.h> #include <Path.h> #include <audioproperties.h> @@ -24,7 +25,7 @@ } -#include <stdio.h> + void AudioTagAnalyser::AnalyseEntry(const entry_ref& ref) { @@ -41,16 +42,43 @@ 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());*/ + }