[WIP] Added Artist/ReleaseInfo

This commit is contained in:
emeric
2019-01-23 13:22:43 +01:00
parent b76c60f437
commit 3e142b5507
77 changed files with 2706 additions and 716 deletions
+1
View File
@@ -32,6 +32,7 @@ std::string getModuleName(Module mod)
case Module::METADATA: return "METADATA";
case Module::REMOTE: return "REMOTE";
case Module::SERVICE: return "SERVICE";
case Module::SIMILARITY: return "SIMILARITY";
case Module::TRANSCODE: return "TRANSCODE";
case Module::UI: return "UI";
}
+1
View File
@@ -44,6 +44,7 @@ enum class Module
METADATA,
REMOTE,
SERVICE,
SIMILARITY,
TRANSCODE,
UI,
};
+32
View File
@@ -21,6 +21,7 @@
#include <chrono>
#include <list>
#include <map>
#include <string>
#include <sstream>
#include <vector>
@@ -63,3 +64,34 @@ boost::optional<T> readAs(const std::string& str)
std::string
replaceInString(std::string str, const std::string& from, const std::string& to);
// warning: not efficient
template<class In, class Out, class U = typename std::iterator_traits<In>::value_type>
void uniqueAndSortedByOccurence(In first, In last, Out out)
{
std::map<U, std::size_t> occurencesMap;
for (In it = first; it != last; ++it)
{
if (occurencesMap.find(*it) == occurencesMap.end())
occurencesMap[*it] = 0;
occurencesMap[*it]++;
}
struct Item
{
U elem;
std::size_t count;
};
std::vector<Item> occurencesVector;
for (const auto& occurence : occurencesMap)
occurencesVector.emplace_back(Item{occurence.first, occurence.second});
std::sort(occurencesVector.begin(), occurencesVector.end(), [](const auto& a, const auto& b) { return a.count > b.count;});
for (const auto& occurence : occurencesVector)
*out++ = occurence.elem;
}