Refactored namespaces

This commit is contained in:
emeric
2024-03-12 08:32:08 +01:00
parent 487960b413
commit 4b7c4295ec
501 changed files with 12605 additions and 12631 deletions
+7 -8
View File
@@ -24,15 +24,14 @@
#include "av/IAudioFile.hpp"
#include "metadata/Exception.hpp"
#include "utils/ILogger.hpp"
#include "utils/String.hpp"
#include "core/ILogger.hpp"
#include "core/String.hpp"
#include "Utils.hpp"
namespace MetaData
namespace lms::metadata
{
namespace
{
// Mapping to internal avformat names and/or common alternative custom names
static const std::unordered_map<TagType, std::vector<std::string>> tagMapping
{
@@ -144,19 +143,19 @@ namespace MetaData
{
try
{
const auto audioFile{ Av::parseAudioFile(p) };
const auto audioFile{ av::parseAudioFile(p) };
_containerInfo = audioFile->getContainerInfo();
_metaDataMap = audioFile->getMetaData();
_hasEmbeddedCover = audioFile->hasAttachedPictures();
if (debug && Service<ILogger>::get()->isSeverityActive(Severity::DEBUG))
if (debug && core::Service<core::logging::ILogger>::get()->isSeverityActive(core::logging::Severity::DEBUG))
{
for (const auto& [key, value] : _metaDataMap)
LMS_LOG(METADATA, DEBUG, "Key = '" << key << "', value = '" << value << "'");
}
}
catch (Av::Exception& e)
catch (av::Exception& e)
{
throw ParseException{};
}
@@ -199,4 +198,4 @@ namespace MetaData
visitor("", value);
});
}
} // namespace MetaData
} // namespace lms::metadata
+4 -4
View File
@@ -25,7 +25,7 @@
#include "metadata/IParser.hpp"
#include "ITagReader.hpp"
namespace MetaData
namespace lms::metadata
{
class AvFormatTagReader : public ITagReader
{
@@ -46,9 +46,9 @@ namespace MetaData
std::size_t getBitsPerSample() const override { return 0; }
std::size_t getSampleRate() const override { return 0; }
Av::IAudioFile::MetadataMap _metaDataMap;
Av::ContainerInfo _containerInfo;
av::IAudioFile::MetadataMap _metaDataMap;
av::ContainerInfo _containerInfo;
bool _hasEmbeddedCover{};
};
} // namespace MetaData
} // namespace lms::metadata
+2 -2
View File
@@ -22,7 +22,7 @@
#include <chrono>
#include <functional>
namespace MetaData
namespace lms::metadata
{
// using picard internal names
// see https://picard-docs.musicbrainz.org/en/appendices/tag_mapping.html
@@ -159,4 +159,4 @@ namespace MetaData
virtual std::size_t getBitsPerSample() const = 0;
virtual std::size_t getSampleRate() const = 0;
};
} // namespace MetaData
} // namespace lms::metadata
+30 -30
View File
@@ -22,14 +22,14 @@
#include <span>
#include "metadata/Exception.hpp"
#include "utils/ILogger.hpp"
#include "utils/String.hpp"
#include "core/ILogger.hpp"
#include "core/String.hpp"
#include "AvFormatTagReader.hpp"
#include "TagLibTagReader.hpp"
#include "Utils.hpp"
namespace MetaData
namespace lms::metadata
{
namespace
{
@@ -39,7 +39,7 @@ namespace MetaData
{
auto visitTagIfNonEmpty{ [&](std::string_view tag)
{
tag = StringUtils::stringTrim(tag);
tag = core::stringUtils::stringTrim(tag);
if (!tag.empty())
visitor(tag);
} };
@@ -48,7 +48,7 @@ namespace MetaData
{
if (value.find(tagDelimiter) != std::string_view::npos)
{
for (std::string_view splitTag : StringUtils::splitString(value, tagDelimiter))
for (std::string_view splitTag : core::stringUtils::splitString(value, tagDelimiter))
visitTagIfNonEmpty(splitTag);
return;
@@ -69,10 +69,10 @@ namespace MetaData
{
auto addTagIfNonEmpty{ [&res](std::string_view tag)
{
tag = StringUtils::stringTrim(tag);
tag = core::stringUtils::stringTrim(tag);
if (!tag.empty())
{
std::optional<T> val{ StringUtils::readAs<T>(tag) };
std::optional<T> val{ core::stringUtils::readAs<T>(tag) };
if (val)
res.emplace_back(std::move(*val));
}
@@ -84,7 +84,7 @@ namespace MetaData
{
if (value.find(tagDelimiter) != std::string_view::npos)
{
for (std::string_view splitTag : StringUtils::splitString(value, tagDelimiter))
for (std::string_view splitTag : core::stringUtils::splitString(value, tagDelimiter))
addTagIfNonEmpty(splitTag);
return;
@@ -137,7 +137,7 @@ namespace MetaData
return {};
std::vector<std::string> artistSortNames{ getTagValuesFirstMatchAs<std::string>(tagReader, artistSortTagNames, artistTagDelimiters) };
std::vector<UUID> artistMBIDs{ getTagValuesFirstMatchAs<UUID>(tagReader, artistMBIDTagNames, artistTagDelimiters) };
std::vector<core::UUID> artistMBIDs{ getTagValuesFirstMatchAs<core::UUID>(tagReader, artistMBIDTagNames, artistTagDelimiters) };
std::vector<Artist> artists;
artists.reserve(artistNames.size());
@@ -166,15 +166,15 @@ namespace MetaData
if (role.empty())
{
// "PERFORMER" "artist (role)"
Utils::PerformerArtist performer{ Utils::extractPerformerAndRole(name) };
StringUtils::capitalize(performer.role);
utils::PerformerArtist performer{ utils::extractPerformerAndRole(name) };
core::stringUtils::capitalize(performer.role);
performers[performer.role].push_back(std::move(performer.artist));
}
else
{
// "PERFORMER:role", "artist" (MP3)
std::string roleCapitalized{ StringUtils::stringToLower(role) };
StringUtils::capitalize(roleCapitalized);
std::string roleCapitalized{ core::stringUtils::stringToLower(role) };
core::stringUtils::capitalize(roleCapitalized);
performers[roleCapitalized].push_back(Artist{ name });
}
});
@@ -195,7 +195,7 @@ namespace MetaData
switch (_parserBackend)
{
case ParserBackend::TagLib:
LMS_LOG(METADATA, INFO, "Using TagLib parser with read style = " << Utils::readStyleToString(readStyle));
LMS_LOG(METADATA, INFO, "Using TagLib parser with read style = " << utils::readStyleToString(readStyle));
break;
case ParserBackend::AvFormat:
@@ -252,37 +252,37 @@ namespace MetaData
track.hasCover = tagReader.hasEmbeddedCover();
track.title = getTagValueAs<std::string>(tagReader, TagType::TrackTitle).value_or("");
track.mbid = getTagValueAs<UUID>(tagReader, TagType::MusicBrainzTrackID);
track.recordingMBID = getTagValueAs<UUID>(tagReader, TagType::MusicBrainzRecordingID);
track.acoustID = getTagValueAs<UUID>(tagReader, TagType::AcoustID);
track.mbid = getTagValueAs<core::UUID>(tagReader, TagType::MusicBrainzTrackID);
track.recordingMBID = getTagValueAs<core::UUID>(tagReader, TagType::MusicBrainzRecordingID);
track.acoustID = getTagValueAs<core::UUID>(tagReader, TagType::AcoustID);
track.position = getTagValueAs<std::size_t>(tagReader, TagType::TrackNumber); // May parse 'Number/Total', that's fine
if (auto dateStr = getTagValueAs<std::string>(tagReader, TagType::Date))
{
if (const Wt::WDate date{ Utils::parseDate(*dateStr) }; date.isValid())
if (const Wt::WDate date{ utils::parseDate(*dateStr) }; date.isValid())
{
track.date = date;
track.year = date.year();
}
else
{
track.year = Utils::parseYear(*dateStr);
track.year = utils::parseYear(*dateStr);
}
}
if (auto dateStr = getTagValueAs<std::string>(tagReader, TagType::OriginalReleaseDate))
{
if (const Wt::WDate date{ Utils::parseDate(*dateStr) }; date.isValid())
if (const Wt::WDate date{ utils::parseDate(*dateStr) }; date.isValid())
{
track.originalDate = date;
track.originalYear = date.year();
}
else
{
track.originalYear = Utils::parseYear(*dateStr);
track.originalYear = utils::parseYear(*dateStr);
}
}
if (auto dateStr = getTagValueAs<std::string>(tagReader, TagType::OriginalReleaseYear))
{
track.originalYear = Utils::parseYear(*dateStr);
track.originalYear = utils::parseYear(*dateStr);
}
track.copyright = getTagValueAs<std::string>(tagReader, TagType::Copyright).value_or("");
@@ -294,7 +294,7 @@ namespace MetaData
{
visitTagValues(tagReader, userExtraTag, _defaultTagDelimiters, [&](std::string_view value)
{
value = StringUtils::stringTrim(value);
value = core::stringUtils::stringTrim(value);
if (!value.empty())
track.userExtraTags[userExtraTag].push_back(std::string{ value });
});
@@ -342,9 +342,9 @@ namespace MetaData
if (const auto value{ getTagValueAs<std::string>(tagReader, TagType::TrackNumber) })
{
// Expecting 'Number/Total'
const std::vector<std::string_view> strings{ StringUtils::splitString(*value, '/') };
const std::vector<std::string_view> strings{ core::stringUtils::splitString(*value, '/') };
if (strings.size() == 2)
medium->trackCount = StringUtils::readAs<std::size_t>(strings[1]);
medium->trackCount = core::stringUtils::readAs<std::size_t>(strings[1]);
}
}
// Expecting 'Number[/Total]'
@@ -370,8 +370,8 @@ namespace MetaData
release->name = std::move(*releaseName);
release->sortName = getTagValueAs<std::string>(tagReader, TagType::AlbumSortOrder).value_or("");
release->artistDisplayName = getTagValueAs<std::string>(tagReader, TagType::AlbumArtist).value_or(""); // TODO try to join albumartists if present
release->mbid = getTagValueAs<UUID>(tagReader, TagType::MusicBrainzReleaseID);
release->groupMBID = getTagValueAs<UUID>(tagReader, TagType::MusicBrainzReleaseGroupID);
release->mbid = getTagValueAs<core::UUID>(tagReader, TagType::MusicBrainzReleaseID);
release->groupMBID = getTagValueAs<core::UUID>(tagReader, TagType::MusicBrainzReleaseGroupID);
release->artists = getArtists(tagReader, { TagType::AlbumArtists, TagType::AlbumArtist }, { TagType::AlbumArtistsSortOrder, TagType::AlbumArtistSortOrder }, { TagType::MusicBrainzReleaseArtistID }, _artistTagDelimiters);
release->mediumCount = getTagValueAs<std::size_t>(tagReader, TagType::TotalDiscs);
if (!release->mediumCount)
@@ -380,9 +380,9 @@ namespace MetaData
if (const auto value{ getTagValueAs<std::string>(tagReader, TagType::DiscNumber) })
{
// Expecting 'Number/Total'
const std::vector<std::string_view> strings{ StringUtils::splitString(*value, '/') };
const std::vector<std::string_view> strings{ core::stringUtils::splitString(*value, '/') };
if (strings.size() == 2)
release->mediumCount = StringUtils::readAs<std::size_t>(strings[1]);
release->mediumCount = core::stringUtils::readAs<std::size_t>(strings[1]);
}
}
@@ -390,4 +390,4 @@ namespace MetaData
return release;
}
} // namespace MetaData
} // namespace lms::metadata
+2 -2
View File
@@ -22,7 +22,7 @@
#include "metadata/IParser.hpp"
#include "ITagReader.hpp"
namespace MetaData
namespace lms::metadata
{
class Parser : public IParser
{
@@ -50,5 +50,5 @@ namespace MetaData
std::vector<std::string> _artistTagDelimiters;
std::vector<std::string> _defaultTagDelimiters;
};
} // namespace MetaData
} // namespace lms::metadata
+8 -8
View File
@@ -34,11 +34,11 @@
#include <taglib/wavpackfile.h>
#include "metadata/Exception.hpp"
#include "utils/ILogger.hpp"
#include "utils/ITraceLogger.hpp"
#include "utils/String.hpp"
#include "core/ILogger.hpp"
#include "core/ITraceLogger.hpp"
#include "core/String.hpp"
namespace MetaData
namespace lms::metadata
{
namespace
{
@@ -159,7 +159,7 @@ namespace MetaData
case ParserReadStyle::Accurate: return TagLib::AudioProperties::ReadStyle::Accurate;
}
throw LmsException{ "Cannot convert read style" };
throw core::LmsException{ "Cannot convert read style" };
}
void mergeTagMaps(TagLib::PropertyMap& dst, TagLib::PropertyMap&& src)
@@ -223,7 +223,7 @@ namespace MetaData
if (attributeList.isEmpty())
continue;
std::string strName{ StringUtils::stringToUpper(name.to8Bit(true)) };
std::string strName{ core::stringUtils::stringToUpper(name.to8Bit(true)) };
if (strName.find("WM/") == 0 || _propertyMap.find(strName) != std::cend(_propertyMap))
continue;
@@ -290,7 +290,7 @@ namespace MetaData
_hasEmbeddedCover = true;
}
if (debug && Service<ILogger>::get()->isSeverityActive(Severity::DEBUG))
if (debug && core::Service<core::logging::ILogger>::get()->isSeverityActive(core::logging::Severity::DEBUG))
{
for (const auto& [key, values] : _propertyMap)
{
@@ -380,4 +380,4 @@ namespace MetaData
{
return static_cast<std::size_t>(_file.audioProperties()->sampleRate());
}
} // namespace MetaData
} // namespace lms::metadata
+2 -2
View File
@@ -27,7 +27,7 @@
#include "metadata/IParser.hpp"
#include "ITagReader.hpp"
namespace MetaData
namespace lms::metadata
{
class TagLibTagReader : public ITagReader
{
@@ -52,4 +52,4 @@ namespace MetaData
TagLib::PropertyMap _propertyMap; // case-insensitive keys
bool _hasEmbeddedCover{};
};
} // namespace MetaData
} // namespace lms::metadata
+6 -6
View File
@@ -23,9 +23,9 @@
#include <iomanip>
#include <sstream>
#include "utils/Exception.hpp"
#include "core/Exception.hpp"
namespace MetaData::Utils
namespace lms::metadata::utils
{
Wt::WDate parseDate(std::string_view dateStr)
{
@@ -105,7 +105,7 @@ namespace MetaData::Utils
case ParserReadStyle::Accurate: return "accurate";
}
throw LmsException{ "Unknown read style" };
throw core::LmsException{ "Unknown read style" };
}
PerformerArtist extractPerformerAndRole(std::string_view entry)
@@ -138,8 +138,8 @@ namespace MetaData::Utils
if (--count == 0)
{
roleBegin = currentIndex + 1;
role = StringUtils::stringTrim(entry.substr(roleBegin, roleEnd - roleBegin));
artistName = StringUtils::stringTrim(entry.substr(0, currentIndex));
role = core::stringUtils::stringTrim(entry.substr(roleBegin, roleEnd - roleBegin));
artistName = core::stringUtils::stringTrim(entry.substr(0, currentIndex));
break;
}
}
@@ -148,7 +148,7 @@ namespace MetaData::Utils
}
if (!roleEnd || !roleBegin)
artistName = StringUtils::stringTrim(entry);
artistName = core::stringUtils::stringTrim(entry);
return PerformerArtist{ Artist {artistName}, std::string {role} };
}
+1 -1
View File
@@ -26,7 +26,7 @@
#include "metadata/IParser.hpp"
namespace MetaData::Utils
namespace lms::metadata::utils
{
Wt::WDate parseDate(std::string_view dateStr);
std::optional<int> parseYear(std::string_view yearStr);