Add functions to return only tags which have actually been parsed
This commit is contained in:
parent
e095c7d87d
commit
3f5d5e3098
|
@ -9,8 +9,8 @@ set(META_APP_AUTHOR "Martchus")
|
|||
set(META_APP_URL "https://github.com/${META_APP_AUTHOR}/${META_PROJECT_NAME}")
|
||||
set(META_APP_DESCRIPTION "C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags")
|
||||
set(META_VERSION_MAJOR 10)
|
||||
set(META_VERSION_MINOR 0)
|
||||
set(META_VERSION_PATCH 1)
|
||||
set(META_VERSION_MINOR 1)
|
||||
set(META_VERSION_PATCH 0)
|
||||
set(META_REQUIRED_CPP_UNIT_VERSION 1.14.0)
|
||||
set(META_ADD_DEFAULT_CPP_UNIT_TEST_APPLICATION ON)
|
||||
|
||||
|
|
|
@ -1463,13 +1463,14 @@ bool MediaFileInfo::removeVorbisComment()
|
|||
|
||||
/*!
|
||||
* \brief Stores all tags assigned to the current file in the specified vector.
|
||||
*
|
||||
* Previous elements of the vector will not be cleared.
|
||||
*
|
||||
* \remarks The MediaFileInfo keeps the ownership over the tags which will be
|
||||
* destroyed when the MediaFileInfo is invalidated.
|
||||
* \remarks
|
||||
* - Previous elements of the vector will not be cleared.
|
||||
* - Includes tags which have only been assigned, e.g. via createAppropriateTags(), even if
|
||||
* those tags have not been stored to disk yet via applyChanges().
|
||||
* - The MediaFileInfo keeps the ownership over the tags which will be
|
||||
* destroyed when the MediaFileInfo is invalidated.
|
||||
*/
|
||||
void MediaFileInfo::tags(vector<Tag *> &tags) const
|
||||
void MediaFileInfo::tags(std::vector<Tag *> &tags) const
|
||||
{
|
||||
if (hasId3v1Tag()) {
|
||||
tags.push_back(m_id3v1Tag.get());
|
||||
|
@ -1489,8 +1490,26 @@ void MediaFileInfo::tags(vector<Tag *> &tags) const
|
|||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Returns all tags assigned to the current file.
|
||||
* \remarks
|
||||
* - Includes tags which have only been assigned, e.g. via createAppropriateTags(), even if
|
||||
* those tags have not been stored to disk yet via applyChanges().
|
||||
* - The MediaFileInfo keeps the ownership over the tags which will be
|
||||
* destroyed when the MediaFileInfo is invalidated.
|
||||
*/
|
||||
vector<Tag *> MediaFileInfo::tags() const
|
||||
{
|
||||
auto res = vector<Tag *>();
|
||||
tags(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Returns an indication whether a tag of any format is assigned.
|
||||
* \remarks
|
||||
* - Includes tags which have only been assigned, e.g. via createAppropriateTags(), even if
|
||||
* those tags have not been stored to disk yet via applyChanges().
|
||||
*/
|
||||
bool MediaFileInfo::hasAnyTag() const
|
||||
{
|
||||
|
@ -1499,15 +1518,52 @@ bool MediaFileInfo::hasAnyTag() const
|
|||
}
|
||||
|
||||
/*!
|
||||
* \brief Returns all tags assigned to the current file.
|
||||
*
|
||||
* \remarks The MediaFileInfo keeps the ownership over the tags which will be
|
||||
* destroyed when the MediaFileInfo is invalidated.
|
||||
* \brief Returns all tags parsed from the current file.
|
||||
* \remarks
|
||||
* - Previous elements of the vector will not be cleared.
|
||||
* - Does **not** include tags which have been assigned, e.g. via createAppropriateTags() but
|
||||
* have not been stored to disk yet via applyChanges().
|
||||
* - The MediaFileInfo keeps the ownership over the tags which will be
|
||||
* destroyed when the MediaFileInfo is invalidated.
|
||||
*/
|
||||
vector<Tag *> MediaFileInfo::tags() const
|
||||
void MediaFileInfo::parsedTags(std::vector<Tag *> &tags) const
|
||||
{
|
||||
vector<Tag *> res;
|
||||
tags(res);
|
||||
if (hasId3v1Tag() && m_id3v1Tag->size()) {
|
||||
tags.push_back(m_id3v1Tag.get());
|
||||
}
|
||||
for (const unique_ptr<Id3v2Tag> &tag : m_id3v2Tags) {
|
||||
if (tag->size()) {
|
||||
tags.push_back(tag.get());
|
||||
}
|
||||
}
|
||||
if (m_containerFormat == ContainerFormat::Flac && m_singleTrack) {
|
||||
if (auto *const vorbisComment = static_cast<const FlacStream *>(m_singleTrack.get())->vorbisComment()) {
|
||||
if (vorbisComment->size()) {
|
||||
tags.push_back(vorbisComment);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (m_container) {
|
||||
for (size_t i = 0, count = m_container->tagCount(); i < count; ++i) {
|
||||
if (auto *const tag = m_container->tag(i); tag->size()) {
|
||||
tags.push_back(tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Returns all tags parsed from the current file.
|
||||
* \remarks
|
||||
* - Does **not** include tags which have been assigned, e.g. via createAppropriateTags() but
|
||||
* have not been stored to disk yet via applyChanges().
|
||||
* - The MediaFileInfo keeps the ownership over the tags which will be
|
||||
* destroyed when the MediaFileInfo is invalidated.
|
||||
*/
|
||||
std::vector<Tag *> MediaFileInfo::parsedTags() const
|
||||
{
|
||||
auto res = vector<Tag *>();
|
||||
parsedTags(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -130,6 +130,8 @@ public:
|
|||
const std::vector<std::unique_ptr<Id3v2Tag>> &id3v2Tags() const;
|
||||
void tags(std::vector<Tag *> &tags) const;
|
||||
std::vector<Tag *> tags() const;
|
||||
void parsedTags(std::vector<Tag *> &tags) const;
|
||||
std::vector<Tag *> parsedTags() const;
|
||||
Mp4Tag *mp4Tag() const;
|
||||
const std::vector<std::unique_ptr<MatroskaTag>> &matroskaTags() const;
|
||||
VorbisComment *vorbisComment() const;
|
||||
|
|
Loading…
Reference in New Issue