Add simple audio tag add-on and rename FullText dir to fulltext.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39185 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
SubDir HAIKU_TOP src add-ons index_server ;
|
SubDir HAIKU_TOP src add-ons index_server ;
|
||||||
|
|
||||||
SubInclude HAIKU_TOP src add-ons index_server FullText ;
|
SubInclude HAIKU_TOP src add-ons index_server fulltext ;
|
||||||
|
SubInclude HAIKU_TOP src add-ons index_server audiotags ;
|
||||||
|
|||||||
@@ -0,0 +1,76 @@
|
|||||||
|
#include "AudioTagAnalyser.h"
|
||||||
|
|
||||||
|
#include <new>
|
||||||
|
|
||||||
|
#include <Path.h>
|
||||||
|
|
||||||
|
#include <audioproperties.h>
|
||||||
|
#include <tag.h>
|
||||||
|
#include <fileref.h>
|
||||||
|
|
||||||
|
|
||||||
|
AudioTagAnalyser::AudioTagAnalyser(BString name, const BVolume& volume)
|
||||||
|
:
|
||||||
|
FileAnalyser(name, volume)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
status_t
|
||||||
|
AudioTagAnalyser::InitCheck()
|
||||||
|
{
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
void
|
||||||
|
AudioTagAnalyser::AnalyseEntry(const entry_ref& ref)
|
||||||
|
{
|
||||||
|
BPath path(&ref);
|
||||||
|
|
||||||
|
TagLib::FileRef tagFile(path.Path());
|
||||||
|
TagLib::Tag* tag = tagFile.tag();
|
||||||
|
if (!tag)
|
||||||
|
return;
|
||||||
|
|
||||||
|
TagLib::String artist = tag->artist();
|
||||||
|
TagLib::String title = tag->title();
|
||||||
|
TagLib::String album = tag->album();
|
||||||
|
printf("artist: %s, title: %s, album: %s\n", artist.toCString(),
|
||||||
|
title.toCString(), album.toCString());
|
||||||
|
|
||||||
|
BFile file(path.Path(), 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));
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
AudioTagAddOn::AudioTagAddOn(image_id id, const char* name)
|
||||||
|
:
|
||||||
|
IndexServerAddOn(id, name)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FileAnalyser*
|
||||||
|
AudioTagAddOn::CreateFileAnalyser(const BVolume& volume)
|
||||||
|
{
|
||||||
|
return new (std::nothrow)AudioTagAnalyser(Name(), volume);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extern "C" IndexServerAddOn* (instantiate_index_server_addon)(image_id id,
|
||||||
|
const char* name)
|
||||||
|
{
|
||||||
|
return new (std::nothrow)AudioTagAddOn(id, name);
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
#ifndef AUDIO_TAG_ANALYSER_H
|
||||||
|
#define AUDIO_TAG_ANALYSER_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "IndexServerAddOn.h"
|
||||||
|
|
||||||
|
|
||||||
|
class AudioTagAnalyser : public FileAnalyser {
|
||||||
|
public:
|
||||||
|
AudioTagAnalyser(BString name,
|
||||||
|
const BVolume& volume);
|
||||||
|
|
||||||
|
status_t InitCheck();
|
||||||
|
|
||||||
|
void AnalyseEntry(const entry_ref& ref);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class AudioTagAddOn : public IndexServerAddOn {
|
||||||
|
public:
|
||||||
|
AudioTagAddOn(image_id id, const char* name);
|
||||||
|
|
||||||
|
FileAnalyser* CreateFileAnalyser(const BVolume& volume);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
SubDir HAIKU_TOP src add-ons index_server audiotags ;
|
||||||
|
|
||||||
|
UsePrivateHeaders index_server shared ;
|
||||||
|
|
||||||
|
local sources =
|
||||||
|
AudioTagAnalyser.cpp
|
||||||
|
|
||||||
|
IndexServerAddOn.cpp
|
||||||
|
;
|
||||||
|
|
||||||
|
SubDirSysHdrs $(HAIKU_TAGLIB_HEADERS) ;
|
||||||
|
Includes [ FGristFiles $(sources) ] : $(HAIKU_TAGLIB_HEADERS_DEPENDENCY) ;
|
||||||
|
# Dependency needed to trigger downloading/unzipping the package before
|
||||||
|
# compiling the files.
|
||||||
|
|
||||||
|
Addon AudioTagAnalyser :
|
||||||
|
$(sources)
|
||||||
|
:
|
||||||
|
be $(HAIKU_TAGLIB_LIBS) $(TARGET_LIBSTDC++)
|
||||||
|
;
|
||||||
|
|
||||||
|
SEARCH on [ FGristFiles IndexServerAddOn.cpp ]
|
||||||
|
+= [ FDirName $(SUBDIR) $(DOTDOT) ] ;
|
||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
SubDir HAIKU_TOP src add-ons index_server FullText ;
|
SubDir HAIKU_TOP src add-ons index_server fulltext ;
|
||||||
|
|
||||||
UsePrivateHeaders index_server shared ;
|
UsePrivateHeaders index_server shared ;
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@ Includes [ FGristFiles $(sources) ] : $(HAIKU_CLUCENE_HEADERS_DEPENDENCY) ;
|
|||||||
Addon FullTextAnalyser :
|
Addon FullTextAnalyser :
|
||||||
$(sources)
|
$(sources)
|
||||||
:
|
:
|
||||||
be translation $(HAIKU_CLUCENE_LIBS) $(TARGET_LIBSTDC++)
|
be $(HAIKU_CLUCENE_LIBS) $(TARGET_LIBSTDC++)
|
||||||
;
|
;
|
||||||
|
|
||||||
SEARCH on [ FGristFiles IndexServerAddOn.cpp ]
|
SEARCH on [ FGristFiles IndexServerAddOn.cpp ]
|
||||||
Reference in New Issue
Block a user