Mercurial > minori
comparison src/core/anime_db.cc @ 264:9a04802848c0
*: improve multiple things
e.g. making some strings.cc functions modify strings in-place,
improving m4_ax_have_qt.m4 code, making anime_db.cc rely on
std::optional rather than std::shared_ptr (which was stupid
anyway)
| author | Paper <paper@paper.us.eu.org> |
|---|---|
| date | Thu, 11 Apr 2024 10:15:57 -0400 |
| parents | dd211ff68b36 |
| children | 657fda1b9cac |
comparison
equal
deleted
inserted
replaced
| 263:96416310ea14 | 264:9a04802848c0 |
|---|---|
| 102 amt++; | 102 amt++; |
| 103 } | 103 } |
| 104 } | 104 } |
| 105 | 105 |
| 106 return (amt > 0) ? std::sqrt(squares_sum / amt) : 0; | 106 return (amt > 0) ? std::sqrt(squares_sum / amt) : 0; |
| 107 } | |
| 108 | |
| 109 template<typename T, typename U> | |
| 110 static T get_lowest_in_map(const std::unordered_map<T, U>& map) { | |
| 111 if (map.size() <= 0) | |
| 112 return 0; | |
| 113 | |
| 114 T id = 0; | |
| 115 U ret = std::numeric_limits<U>::max(); | |
| 116 for (const auto& t : map) { | |
| 117 if (t.second < ret) { | |
| 118 ret = t.second; | |
| 119 id = t.first; | |
| 120 } | |
| 121 } | |
| 122 return id; | |
| 123 } | 107 } |
| 124 | 108 |
| 125 /* | 109 /* |
| 126 * TODO: separate this from the anime DB, | 110 * TODO: separate this from the anime DB, |
| 127 * provide *some* sort of normalization | 111 * provide *some* sort of normalization |
| 128 */ | 112 */ |
| 129 int Database::GetAnimeFromTitle(const std::string& title) { | 113 int Database::GetAnimeFromTitle(const std::string& title) { |
| 130 if (title.empty()) | 114 if (title.empty()) |
| 131 return 0; | 115 return 0; |
| 132 | 116 |
| 117 std::string title_n(title); | |
| 118 Strings::NormalizeAnimeTitle(title_n); | |
| 119 | |
| 133 for (const auto& [id, anime] : items) { | 120 for (const auto& [id, anime] : items) { |
| 134 std::vector<std::string> synonyms(anime.GetTitleSynonyms()); | 121 std::vector<std::string> synonyms(anime.GetTitleSynonyms()); |
| 135 synonyms.push_back(anime.GetUserPreferredTitle()); | 122 synonyms.push_back(anime.GetUserPreferredTitle()); |
| 136 | 123 |
| 137 for (const auto& synonym : synonyms) { | 124 for (auto& synonym : synonyms) { |
| 138 if (synonym == title) { | 125 Strings::NormalizeAnimeTitle(synonym); |
| 126 if (synonym == title_n) | |
| 139 return id; | 127 return id; |
| 140 } | |
| 141 } | 128 } |
| 142 } | 129 } |
| 143 | 130 |
| 144 return 0; | 131 return 0; |
| 145 } | 132 } |
