tags: mp3: write IDv2.4 tags only

master
Andrzej Rybczak 12 years ago
parent d51f52633f
commit 044bbc3777
  1. 1
      NEWS
  2. 24
      src/tags.cpp

@ -7,6 +7,7 @@ ncmpcpp-0.7 (????-??-??)
ncmpcpp-0.6.1 (????-??-??) ncmpcpp-0.6.1 (????-??-??)
* Comment tag is now properly written to mp3 files. * Comment tag is now properly written to mp3 files.
* Only ID3v2.4 tags are now saved to mp3 files.
ncmpcpp-0.6 (2014-10-25) ncmpcpp-0.6 (2014-10-25)

@ -115,17 +115,6 @@ void readXiphComments(mpd_song *s, TagLib::Ogg::XiphComment *tag)
readField(fields["COMMENT"], "Comment"); readField(fields["COMMENT"], "Comment");
} }
void clearID3v1Tags(TagLib::ID3v1::Tag *tag)
{
tag->setTitle(TagLib::String::null);
tag->setArtist(TagLib::String::null);
tag->setAlbum(TagLib::String::null);
tag->setYear(0);
tag->setTrack(0);
tag->setGenre(TagLib::String::null);
tag->setComment(TagLib::String::null);
}
void writeCommonTags(const MPD::MutableSong &s, TagLib::Tag *tag) void writeCommonTags(const MPD::MutableSong &s, TagLib::Tag *tag)
{ {
tag->setTitle(ToWString(s.getTitle())); tag->setTitle(ToWString(s.getTitle()));
@ -298,10 +287,15 @@ bool write(MPD::MutableSong &s)
if (f.isNull()) if (f.isNull())
return false; return false;
if (auto mp3_file = dynamic_cast<TagLib::MPEG::File *>(f.file())) bool saved = false;
if (auto mpeg_file = dynamic_cast<TagLib::MPEG::File *>(f.file()))
{ {
clearID3v1Tags(mp3_file->ID3v1Tag()); writeID3v2Tags(s, mpeg_file->ID3v2Tag(true));
writeID3v2Tags(s, mp3_file->ID3v2Tag(true)); // write id3v2.4 tags only
if (!mpeg_file->save(TagLib::MPEG::File::ID3v2, true, 4, false))
return false;
// do not call generic save() as it will duplicate tags
saved = true;
} }
else if (auto ogg_file = dynamic_cast<TagLib::Ogg::Vorbis::File *>(f.file())) else if (auto ogg_file = dynamic_cast<TagLib::Ogg::Vorbis::File *>(f.file()))
{ {
@ -314,7 +308,7 @@ bool write(MPD::MutableSong &s)
else else
writeCommonTags(s, f.tag()); writeCommonTags(s, f.tag());
if (!f.save()) if (!saved && !f.save())
return false; return false;
if (!s.getNewName().empty()) if (!s.getNewName().empty())

Loading…
Cancel
Save