Bring some more diversity in the radio mode when using tags
This commit is contained in:
@@ -464,7 +464,7 @@ Artist::getSimilarArtists(std::optional<std::size_t> offset, std::optional<std::
|
||||
.bind(self()->id())
|
||||
.bind(self()->id())
|
||||
.groupBy("a.id")
|
||||
.orderBy("COUNT(*) DESC")
|
||||
.orderBy("COUNT(*) DESC, RANDOM()")
|
||||
.limit(count ? static_cast<int>(*count) : -1)
|
||||
.offset(offset ? static_cast<int>(*offset) : -1)};
|
||||
|
||||
|
||||
@@ -426,7 +426,7 @@ Release::getSimilarReleases(std::optional<std::size_t> offset, std::optional<std
|
||||
.bind(self()->id())
|
||||
.bind(self()->id())
|
||||
.groupBy("r.id")
|
||||
.orderBy("COUNT(*) DESC")
|
||||
.orderBy("COUNT(*) DESC, RANDOM()")
|
||||
.limit(count ? static_cast<int>(*count) : -1)
|
||||
.offset(offset ? static_cast<int>(*offset) : -1)};
|
||||
|
||||
|
||||
@@ -341,7 +341,7 @@ Track::getSimilarTracks(Session& session,
|
||||
" AND t_c.cluster_id IN (SELECT c.id FROM cluster c INNER JOIN track_cluster t_c ON t_c.cluster_id = c.id WHERE t_c.track_id IN (" + oss.str() + "))"
|
||||
" AND t.id NOT IN (" + oss.str() + ")")
|
||||
.groupBy("t.id")
|
||||
.orderBy("COUNT(*) DESC")
|
||||
.orderBy("COUNT(*) DESC, RANDOM()")
|
||||
.limit(size ? static_cast<int>(*size) : -1)
|
||||
.offset(offset ? static_cast<int>(*offset) : -1)};
|
||||
|
||||
|
||||
@@ -382,7 +382,7 @@ TrackList::getSimilarTracks(std::optional<std::size_t> offset, std::optional<std
|
||||
.bind(self()->id())
|
||||
.bind(self()->id())
|
||||
.groupBy("t.id")
|
||||
.orderBy("COUNT(*) DESC")
|
||||
.orderBy("COUNT(*) DESC, RANDOM()")
|
||||
.limit(size ? static_cast<int>(*size) : -1)
|
||||
.offset(offset ? static_cast<int>(*offset) : -1)};
|
||||
|
||||
|
||||
@@ -811,7 +811,13 @@ testMultipleTracksSingleClusterSimilarity(Session& session)
|
||||
const auto similarTracks {Track::getSimilarTracks(session, {tracks.front().getId()})};
|
||||
CHECK(similarTracks.size() == tracks.size() - 1);
|
||||
for (auto similarTrack : similarTracks)
|
||||
CHECK(std::find_if(std::next(std::cbegin(tracks), 1), std::cend(tracks), [&](const ScopedTrack& track) { return similarTrack.id() == track.getId(); }) != std::cend(tracks));
|
||||
{
|
||||
CHECK(std::find_if(std::next(std::cbegin(tracks), 1), std::cend(tracks),
|
||||
[&](const ScopedTrack& track)
|
||||
{
|
||||
return similarTrack.id() == track.getId();
|
||||
}) != std::cend(tracks));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user