27 #include <taglib/fileref.h>
28 #include <taglib/flacfile.h>
29 #include <taglib/oggfile.h>
30 #include <taglib/tag.h>
31 #include <taglib/taglib.h>
32 #include <taglib/xiphcomment.h>
35 #define TL_STR(string) TagLib::String ((string).c_str(), TagLib::String::UTF8)
43 AudiofileTagger::tag_file (std::string
const & filename,
SessionMetadata const & metadata)
45 TagLib::FileRef file (filename.c_str());
46 TagLib::Tag & tag (*file.tag());
48 tag_generic (tag, metadata);
52 TagLib::FLAC::File * flac_file;
53 if ((flac_file = dynamic_cast<TagLib::FLAC::File *> (file.file()))) {
54 TagLib::Ogg::XiphComment * vorbis_tag;
55 if ((vorbis_tag = dynamic_cast<TagLib::Ogg::XiphComment *> (flac_file->xiphComment (
true)))) {
56 tag_vorbis_comment (*vorbis_tag, metadata);
58 std::cerr <<
"Could not get Xiph comment for FLAC file!" << std::endl;
64 TagLib::Ogg::File * ogg_file;
65 if ((ogg_file = dynamic_cast<TagLib::Ogg::File *> (file.file()))) {
66 TagLib::Ogg::XiphComment * vorbis_tag;
67 if ((vorbis_tag = dynamic_cast<TagLib::Ogg::XiphComment *> (ogg_file->tag()))) {
68 tag_vorbis_comment (*vorbis_tag, metadata);
70 std::cerr <<
"Could not get Xiph comment for Ogg file!" << std::endl;
79 AudiofileTagger::tag_generic (TagLib::Tag & tag,
SessionMetadata const & metadata)
86 tag.setYear (metadata.
year());
93 AudiofileTagger::tag_vorbis_comment (TagLib::Ogg::XiphComment & tag,
SessionMetadata const & metadata)
96 tag.addField (
"ISRC",
TL_STR(metadata.
isrc()));
std::string to_string(T t, std::ios_base &(*f)(std::ios_base &))