tags: mp3: write IDv2.4 tags only
This commit is contained in:
1
NEWS
1
NEWS
@@ -1,6 +1,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)
|
||||||
|
|
||||||
|
|||||||
26
src/tags.cpp
26
src/tags.cpp
@@ -117,17 +117,6 @@ void readXiphComments(MPD::MutableSong &s, TagLib::Ogg::XiphComment *tag)
|
|||||||
readField(fields["COMMENT"], &MPD::MutableSong::setComment);
|
readField(fields["COMMENT"], &MPD::MutableSong::setComment);
|
||||||
}
|
}
|
||||||
|
|
||||||
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()));
|
||||||
@@ -293,10 +282,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()))
|
||||||
{
|
{
|
||||||
@@ -309,9 +303,9 @@ 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())
|
||||||
{
|
{
|
||||||
std::string new_name;
|
std::string new_name;
|
||||||
|
|||||||
Reference in New Issue
Block a user