WIP, Remote Client/Server, Reworking cover art retreival. To be tested

This commit is contained in:
emeric
2014-06-10 00:16:07 +02:00
parent d6ad178bdb
commit ca88d82677
17 changed files with 1799 additions and 933 deletions
@@ -5,6 +5,7 @@
#include "AudioCollectionRequestHandler.hpp"
#include "database/AudioTypes.hpp"
#include "cover/CoverArtGrabber.hpp"
namespace Remote {
namespace Server {
@@ -30,7 +31,7 @@ AudioCollectionRequestHandler::process(const AudioCollectionRequest& request, Au
response.set_type(AudioCollectionResponse::TypeArtistList);
}
else
std::cerr << "Bad AudioCollectionRequest_Type_TypeGetGenreList" << std::endl;
std::cerr << "Bad AudioCollectionRequest::TypeGetGenreList" << std::endl;
break;
case AudioCollectionRequest::TypeGetArtistList:
@@ -42,7 +43,7 @@ AudioCollectionRequestHandler::process(const AudioCollectionRequest& request, Au
}
else
std::cerr << "Bad AudioCollectionRequest_Type_TypeGetArtistList" << std::endl;
std::cerr << "Bad AudioCollectionRequest::TypeGetArtistList message!" << std::endl;
break;
case AudioCollectionRequest::TypeGetReleaseList:
@@ -54,7 +55,7 @@ AudioCollectionRequestHandler::process(const AudioCollectionRequest& request, Au
}
else
std::cerr << "Bad AudioCollectionRequest_Type_TypeGetReleaseList" << std::endl;
std::cerr << "Bad AudioCollectionRequest::TypeGetReleaseList message!" << std::endl;
break;
case AudioCollectionRequest::TypeGetTrackList:
@@ -66,11 +67,19 @@ AudioCollectionRequestHandler::process(const AudioCollectionRequest& request, Au
}
else
std::cerr << "Bad AudioCollectionRequest_Type_TypeGetTrackList" << std::endl;
std::cerr << "Bad AudioCollectionRequest::TypeGetTrackList message!" << std::endl;
break;
case AudioCollectionRequest::TypeGetCoverArt:
if (request.has_get_cover_art())
res = processGetCoverArt(request.get_cover_art(), response);
else
std::cerr << "Bad AudioCollectionRequest::TypeGetCoverArt message!" << std::endl;
break;
default:
std::cerr << "Unhandled AudioCollectionRequest_Type = " << request.type() << std::endl;
}
return res;
@@ -119,6 +128,8 @@ AudioCollectionRequestHandler::processGetArtists(const AudioCollectionRequest::G
return false;
}
std::cout << "Batch offset = " << request.batch_parameter().offset() << ", batch size = " << request.batch_parameter().size() << std::endl;
std::size_t size = request.batch_parameter().size();
if (!size)
size = _maxListArtists;
@@ -139,6 +150,7 @@ AudioCollectionRequestHandler::processGetArtists(const AudioCollectionRequest::G
artist->set_name((*it)->getName());
artist->set_nb_releases(0); // TODO
artist->set_id(it->id());
std::cout << "Adding artist '" << artist->name() << "'" << std::endl;
}
return true;
@@ -175,9 +187,11 @@ AudioCollectionRequestHandler::processGetReleases(const AudioCollectionRequest::
release->set_name((*it)->getName());
release->set_id(it->id());
// WARNING: next two lines are very time consuming!
// WARNING: next lines are very time consuming!
release->set_nb_tracks( (*it)->getTracks().size() );
release->set_duration_secs( (*it)->getDuration().total_seconds() );
}
return true;
@@ -244,6 +258,47 @@ AudioCollectionRequestHandler::processGetTracks(const AudioCollectionRequest::Ge
return true;
}
bool
AudioCollectionRequestHandler::processGetCoverArt(const AudioCollectionRequest::GetCoverArt& request, AudioCollectionResponse& response)
{
bool res = false;
response.set_type(AudioCollectionResponse::TypeCoverArt);
switch(request.type())
{
case AudioCollectionRequest::GetCoverArt::TypeGetCoverArtRelease:
if (request.has_release_id())
{
Wt::Dbo::Transaction transaction( _db.getSession() );
// Get the request release
Release::pointer release = Release::getById( _db.getSession(), request.release_id());
std::vector<CoverArt::CoverArt> coverArts = CoverArt::Grabber::getFromRelease(release);
BOOST_FOREACH(const CoverArt::CoverArt& coverArt, coverArts)
{
AudioCollectionResponse_CoverArt* cover_art = response.add_cover_art();
cover_art->set_mime_type(coverArt.getMimeType());
cover_art->set_data( std::string( coverArt.getData().begin(), coverArt.getData().end()) );
}
}
break;
case AudioCollectionRequest::GetCoverArt::TypeGetCoverArtTrack:
std::cerr << "TODO AudioCollectionRequest::GetCoverArt::TypeGetCoverArtTrack" <<std::endl;
break;
}
return res;
}
} // namespace Remote
} // namespace Server