/* -------------------------------------------------------------------------- libcoverart - Client library to access MusicBrainz Copyright (C) 2012 Andrew Hawkins This file is part of libcoverart. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. libcoverart is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU General Public License along with this library. If not, see . $Id$ ----------------------------------------------------------------------------*/ #include #include #include #include "coverart/CoverArt.h" #include "coverart/ReleaseInfo.h" #include "coverart/ImageList.h" #include "coverart/Image.h" #include "coverart/Thumbnails.h" #include "coverart/HTTPFetch.h" #include "coverart/TypeList.h" #include "coverart/Type.h" int main(int argc, const char *argv[]) { if (argc==2) { std::string ReleaseID=argv[1]; CoverArtArchive::CCoverArt CoverArt("example-1.0"); try { std::cout << "Fetching front" << std::endl; std::vector ImageData=CoverArt.FetchFront(ReleaseID); if (ImageData.size()) { std::stringstream FileName; FileName << ReleaseID << "-front.jpg"; std::cout << "Saving front to '" << FileName.str() << "'" << std::endl; std::ofstream Front(FileName.str().c_str()); Front.write((const char *)&ImageData[0],ImageData.size()); Front.close(); } } catch (const CoverArtArchive::CExceptionBase& e) { std::cout << "Exception: '" << e.what() << "'" << std::endl; } try { std::cout << "Fetching back" << std::endl; std::vector ImageData=CoverArt.FetchBack(ReleaseID); if (ImageData.size()) { std::stringstream FileName; FileName << ReleaseID << "-back.jpg"; std::cout << "Saving back to '" << FileName.str() << "'" << std::endl; std::ofstream Back(FileName.str().c_str()); Back.write((const char *)&ImageData[0],ImageData.size()); Back.close(); } } catch (const CoverArtArchive::CExceptionBase& e) { std::cout << "Exception: '" << e.what() << "'" << std::endl; } CoverArtArchive::CReleaseInfo ReleaseInfo=CoverArt.ReleaseInfo(ReleaseID); std::cout << ReleaseInfo << std::endl; return 0; CoverArtArchive::CImageList *ImageList=ReleaseInfo.ImageList(); if (ImageList) { std::cout << "Found " << ImageList->NumItems() << " images"; for (int count=0;countNumItems();count++) { CoverArtArchive::CImage *Image=ImageList->Item(count); if (Image) { std::cout << std::endl; std::cout << "Approved: " << std::boolalpha << Image->Approved() << std::endl; std::cout << "Back: " << std::boolalpha << Image->Back() << std::endl; std::cout << "Comment: " << Image->Comment() << std::endl; std::cout << "Edit: " << Image->Edit() << std::endl; std::cout << "Front: " << std::boolalpha << Image->Front() << std::endl; std::cout << "ID: " << Image->ID() << std::endl; std::cout << "Image: " << Image->Image() << std::endl; CoverArtArchive::CTypeList *TypeList=Image->TypeList(); if (TypeList) { for (int count=0; countNumItems();count++) { CoverArtArchive::CType *Type=TypeList->Item(count); if (Type) std::cout << "Type: " << Type->Type() << std::endl; } } try { std::cout << "Fetching full size for image '" << Image->ID() << "'" << std::endl; std::vector ImageData=CoverArt.FetchImage(ReleaseID,Image->ID()); std::stringstream FileName; FileName << ReleaseID << "-" << Image->ID() << "-full.jpg"; std::cout << "Saving image to '" << FileName.str() << "'" << std::endl; std::ofstream Full(FileName.str().c_str()); Full.write((const char *)&ImageData[0],ImageData.size()); Full.close(); } catch (const CoverArtArchive::CExceptionBase& e) { std::cout << "Exception: '" << e.what() << "'" << std::endl; } CoverArtArchive::CThumbnails *Thumbnails=Image->Thumbnails(); if (Thumbnails) { if (!Thumbnails->Large().empty()) { try { std::cout << "Fetching large for image '" << Image->ID() << "'" << std::endl; std::vector ImageData=CoverArt.FetchImage(ReleaseID,Image->ID(),CoverArtArchive::CCoverArt::eSize_500); std::stringstream FileName; FileName << ReleaseID << "-" << Image->ID() << "-large.jpg"; std::cout << "Saving image to '" << FileName.str() << "'" << std::endl; std::ofstream Large(FileName.str().c_str()); Large.write((const char *)&ImageData[0],ImageData.size()); Large.close(); } catch (const CoverArtArchive::CExceptionBase& e) { std::cout << "Exception: '" << e.what() << "'" << std::endl; } } if (!Thumbnails->Small().empty()) { try { std::cout << "Fetching small for image '" << Image->ID() << "'" << std::endl; std::vector ImageData=CoverArt.FetchImage(ReleaseID,Image->ID(),CoverArtArchive::CCoverArt::eSize_250); std::stringstream FileName; FileName << ReleaseID << "-" << Image->ID() << "-small.jpg"; std::cout << "Saving image to '" << FileName.str() << "'" << std::endl; std::ofstream Small(FileName.str().c_str()); Small.write((const char *)&ImageData[0],ImageData.size()); Small.close(); } catch (const CoverArtArchive::CExceptionBase& e) { std::cout << "Exception: '" << e.what() << "'" << std::endl; } } } } } } else std::cout << "No images found" << std::endl; } else { std::cerr << "Usage: " << argv[0] << " releaseid" << std::endl; } return 0; }