Reconstruct the artist display name if a custom artist delimiter in found in the artist tag

This commit is contained in:
emeric
2024-06-15 13:03:42 +02:00
parent 62454ed543
commit 123c142a4e
7 changed files with 4 additions and 32 deletions
@@ -172,15 +172,6 @@ namespace lms::metadata
}
}
size_t AvFormatTagReader::countTagValues(TagType tag) const
{
size_t count{};
visitTagValues(tag, [&](std::string_view) {
count++;
});
return count;
}
void AvFormatTagReader::visitTagValues(TagType tag, TagValueVisitor visitor) const
{
auto itTagNames{ tagMapping.find(tag) };
@@ -37,7 +37,6 @@ namespace lms::metadata
AvFormatTagReader(const AvFormatTagReader&) = delete;
AvFormatTagReader& operator=(const AvFormatTagReader&) = delete;
size_t countTagValues(TagType tag) const override;
void visitTagValues(TagType tag, TagValueVisitor visitor) const override;
void visitTagValues(std::string_view tag, TagValueVisitor visitor) const override;
void visitPerformerTags(PerformerVisitor visitor) const override;
-1
View File
@@ -148,7 +148,6 @@ namespace lms::metadata
virtual ~ITagReader() = default;
using TagValueVisitor = std::function<void(std::string_view value)>;
virtual size_t countTagValues(TagType tag) const = 0;
virtual void visitTagValues(TagType tag, TagValueVisitor visitor) const = 0;
virtual void visitTagValues(std::string_view tag, TagValueVisitor visitor) const = 0;
+4 -2
View File
@@ -296,10 +296,12 @@ namespace lms::metadata
track.medium = getMedium(tagReader);
track.artists = getArtists(tagReader, { TagType::Artists, TagType::Artist }, { TagType::ArtistSortOrder }, { TagType::MusicBrainzArtistID }, _artistTagDelimiters);
// We consider the artist display name is put in the Artist tag (picard case)
// But to please most users, if we find a custom delimiter in the Artist tag, we construct the artist diplay string with a "nicer" join
if (!_artistTagDelimiters.empty()
&& track.artists.size() > 1
&& tagReader.countTagValues(TagType::Artist) <= 1
&& tagReader.countTagValues(TagType::Artists) <= 1)
&& getTagValuesAs<std::string>(tagReader, { TagType::Artist }, _artistTagDelimiters).size() > 1)
{
std::vector<std::string_view> artistNames;
std::transform(std::cbegin(track.artists), std::cend(track.artists), std::back_inserter(artistNames), [](const Artist& artist) -> std::string_view { return artist.name; });
@@ -340,15 +340,6 @@ namespace lms::metadata
#endif
}
size_t TagLibTagReader::countTagValues(TagType tag) const
{
size_t count{};
visitTagValues(tag, [&](std::string_view) {
count++;
});
return count;
}
void TagLibTagReader::visitTagValues(TagType tag, TagValueVisitor visitor) const
{
auto itTagNames{ tagMapping.find(tag) };
@@ -40,7 +40,6 @@ namespace lms::metadata
TagLibTagReader& operator=(const TagLibTagReader&) = delete;
void computeAudioProperties();
size_t countTagValues(TagType tag) const override;
void visitTagValues(TagType tag, TagValueVisitor visitor) const override;
void visitTagValues(std::string_view tag, TagValueVisitor visitor) const override;
void visitPerformerTags(PerformerVisitor visitor) const override;
-9
View File
@@ -47,15 +47,6 @@ namespace lms::metadata
{
}
size_t countTagValues(TagType tag) const
{
auto itValues{ _tags.find(tag) };
if (itValues != std::cend(_tags))
return itValues->second.size();
return 0;
}
void visitTagValues(TagType tag, TagValueVisitor visitor) const override
{
auto itValues{ _tags.find(tag) };