From 0a6eaf847ac57707d06a5354027cf6b030c1fb62 Mon Sep 17 00:00:00 2001 From: emeric Date: Tue, 16 Apr 2019 13:40:15 +0200 Subject: [PATCH] Enqueue tracks in a understandable order when playing an artist --- src/api/subsonic/SubsonicResource.cpp | 6 ------ src/database/Artist.cpp | 6 +++++- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/api/subsonic/SubsonicResource.cpp b/src/api/subsonic/SubsonicResource.cpp index 8310af53..4d0aeba6 100644 --- a/src/api/subsonic/SubsonicResource.cpp +++ b/src/api/subsonic/SubsonicResource.cpp @@ -1059,8 +1059,6 @@ handleGetSimilarSongsRequestCommon(RequestContext& context, bool id3) // "Returns a random collection of songs from the given artist and similar artists" auto tracks {artist->getRandomTracks(count / 2)}; - LMS_LOG(API_SUBSONIC, DEBUG) << "Now have " << tracks.size() << " tracks"; - auto similarArtistsId {getServices().similaritySearcher->getSimilarArtists(context.db.getSession(), artist.id(), 5)}; for ( const auto& similarArtistId : similarArtistsId ) { @@ -1070,8 +1068,6 @@ handleGetSimilarSongsRequestCommon(RequestContext& context, bool id3) auto similarArtistTracks {similarArtist->getRandomTracks((count / 2) / 5)}; - LMS_LOG(API_SUBSONIC, DEBUG) << "Added " << similarArtistTracks.size() << " similar tracks from artist " << similarArtist->getName(); - tracks.insert(tracks.end(), std::make_move_iterator(std::begin(similarArtistTracks)), std::make_move_iterator(std::end(similarArtistTracks))); @@ -1081,8 +1077,6 @@ handleGetSimilarSongsRequestCommon(RequestContext& context, bool id3) std::mt19937 randGenerator {static_cast(std::chrono::duration_cast(now.time_since_epoch()).count())}; std::shuffle(std::begin(tracks), std::end(tracks), randGenerator); - LMS_LOG(API_SUBSONIC, DEBUG) << "FINAL Now have " << tracks.size() << " tracks"; - Response response {Response::createOkResponse()}; Response::Node& similarSongsNode {response.createNode(id3 ? "similarSongs2" : "similarSongs")}; for (const Database::Track::pointer& track : tracks) diff --git a/src/database/Artist.cpp b/src/database/Artist.cpp index 2ba51ec9..13b2fe04 100644 --- a/src/database/Artist.cpp +++ b/src/database/Artist.cpp @@ -209,7 +209,11 @@ Artist::getReleases(const std::set& clusterIds) const std::vector> Artist::getTracks() const { - return std::vector>(_tracks.begin(), _tracks.end()); + Wt::Dbo::collection> tracks {session()->query>("SELECT t from Track t INNER JOIN artist a ON t_a.artist_id = a.id INNER JOIN track_artist t_a ON t_a.track_id = t.id INNER JOIN release r ON r.id = t.release_id") + .where("a.id = ?").bind(self()->id()) + .orderBy("t.year,r.name,t.disc_number,t.track_number")}; + + return std::vector>(tracks.begin(), tracks.end()); } std::vector>