#include #include "CoverArtGrabber.hpp" #include "av/InputFormatContext.hpp" namespace CoverArt { std::vector Grabber::getFromInputFormatContext(const Av::InputFormatContext& input) { std::vector res; try { std::vector< std::vector > pictures; input.getPictures(pictures); BOOST_FOREACH(const std::vector& picture, pictures) res.push_back( CoverArt("application/octet-stream", picture) ); } catch(std::exception& e) { std::cerr << "Cannot get pictures: " << e.what() << std::endl; } return res; } std::vector Grabber::getFromTrack(Track::pointer track) { std::vector res; if (!track) return std::vector(); try { Av::InputFormatContext input(track->getPath()); return getFromInputFormatContext(input); } catch(std::exception& e) { std::cerr << "Cannot get pictures: " << e.what(); } return res; } std::vector Grabber::getFromRelease(Release::pointer release) { if (!release) return std::vector(); // TODO // Check if there is an image file in the directory of the release // For now, just get the cover art from the first track of the release Wt::Dbo::collection tracks (release->getTracks()); Track::pointer firstTrack; if (tracks.begin() != tracks.end()) firstTrack = *tracks.begin(); if (firstTrack) { return Grabber::getFromTrack(firstTrack); } else return std::vector(); } } // namespace CoverArt