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())
|
||||||
.bind(self()->id())
|
.bind(self()->id())
|
||||||
.groupBy("a.id")
|
.groupBy("a.id")
|
||||||
.orderBy("COUNT(*) DESC")
|
.orderBy("COUNT(*) DESC, RANDOM()")
|
||||||
.limit(count ? static_cast<int>(*count) : -1)
|
.limit(count ? static_cast<int>(*count) : -1)
|
||||||
.offset(offset ? static_cast<int>(*offset) : -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())
|
||||||
.bind(self()->id())
|
.bind(self()->id())
|
||||||
.groupBy("r.id")
|
.groupBy("r.id")
|
||||||
.orderBy("COUNT(*) DESC")
|
.orderBy("COUNT(*) DESC, RANDOM()")
|
||||||
.limit(count ? static_cast<int>(*count) : -1)
|
.limit(count ? static_cast<int>(*count) : -1)
|
||||||
.offset(offset ? static_cast<int>(*offset) : -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_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() + ")")
|
" AND t.id NOT IN (" + oss.str() + ")")
|
||||||
.groupBy("t.id")
|
.groupBy("t.id")
|
||||||
.orderBy("COUNT(*) DESC")
|
.orderBy("COUNT(*) DESC, RANDOM()")
|
||||||
.limit(size ? static_cast<int>(*size) : -1)
|
.limit(size ? static_cast<int>(*size) : -1)
|
||||||
.offset(offset ? static_cast<int>(*offset) : -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())
|
||||||
.bind(self()->id())
|
.bind(self()->id())
|
||||||
.groupBy("t.id")
|
.groupBy("t.id")
|
||||||
.orderBy("COUNT(*) DESC")
|
.orderBy("COUNT(*) DESC, RANDOM()")
|
||||||
.limit(size ? static_cast<int>(*size) : -1)
|
.limit(size ? static_cast<int>(*size) : -1)
|
||||||
.offset(offset ? static_cast<int>(*offset) : -1)};
|
.offset(offset ? static_cast<int>(*offset) : -1)};
|
||||||
|
|
||||||
|
|||||||
@@ -811,7 +811,13 @@ testMultipleTracksSingleClusterSimilarity(Session& session)
|
|||||||
const auto similarTracks {Track::getSimilarTracks(session, {tracks.front().getId()})};
|
const auto similarTracks {Track::getSimilarTracks(session, {tracks.front().getId()})};
|
||||||
CHECK(similarTracks.size() == tracks.size() - 1);
|
CHECK(similarTracks.size() == tracks.size() - 1);
|
||||||
for (auto similarTrack : similarTracks)
|
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