/* -------------------------------------------------------------------------- libmusicbrainz5 - Client library to access MusicBrainz Copyright (C) 2012 Andrew Hawkins This file is part of libmusicbrainz5. 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. libmusicbrainz5 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 "musicbrainz5/Query.h" #include "musicbrainz5/Release.h" #include "musicbrainz5/ReleaseGroup.h" #include "musicbrainz5/Medium.h" #include "musicbrainz5/MediumList.h" #include "musicbrainz5/NameCredit.h" #include "musicbrainz5/ArtistCredit.h" #include "musicbrainz5/Artist.h" #include "musicbrainz5/Alias.h" #include "musicbrainz5/HTTPFetch.h" #include "musicbrainz5/Track.h" #include "musicbrainz5/Recording.h" #include "musicbrainz5/Collection.h" #include "musicbrainz5/CollectionList.h" #include "musicbrainz5/RelationListList.h" #include "musicbrainz5/RelationList.h" #include "musicbrainz5/Relation.h" #include "musicbrainz5/Work.h" #include "musicbrainz5/ISWC.h" #include "musicbrainz5/ISWCList.h" #include "musicbrainz5/SecondaryType.h" #include "musicbrainz5/SecondaryTypeList.h" #include "musicbrainz5/IPI.h" #include "musicbrainz5/IPIList.h" #include "musicbrainz5/Lifespan.h" void PrintRelationList(MusicBrainz5::CRelationList *RelationList) { std::cout << "Target type: '" << RelationList->TargetType() << "'" << std::endl; for (int count=0;countNumItems();count++) { MusicBrainz5::CRelation *Relation=RelationList->Item(count); std::cout << "Relation: " << count << " - Type '" << Relation->Type() << "', Target '" << Relation->Target() << "'" << std::endl; } } int main(int argc, const char *argv[]) { MusicBrainz5::CQuery MB2("MBTest/v1.0","musicbrainz.org"); MusicBrainz5::CQuery::tParamMap Params5; Params5["inc"]="aliases"; MusicBrainz5::CMetadata Metadata5=MB2.Query("artist","4b585938-f271-45e2-b19a-91c634b5e396","",Params5); MusicBrainz5::CArtist *Artist=Metadata5.Artist(); if (Artist) { MusicBrainz5::CLifespan *Lifespan=Artist->Lifespan(); if (Lifespan) { std::cout << "Begin: " << Lifespan->Begin() << std::endl; std::cout << "End: " << Lifespan->End() << std::endl; std::cout << "Ended: " << Lifespan->Ended() << std::endl; } } // return 0; MusicBrainz5::CMetadata Metadata8=MB2.Query("release-group","2eefe885-f050-426d-93f0-29c5eb8b4f9a"); std::cout << Metadata8 << std::endl; // return 0; MusicBrainz5::CMetadata Metadata7=MB2.Query("artist","4b585938-f271-45e2-b19a-91c634b5e396"); Artist=Metadata7.Artist(); if (Artist) { MusicBrainz5::CIPIList *IPIList=Artist->IPIList(); if (IPIList) { for (int count=0;countNumItems();count++) { MusicBrainz5::CIPI *IPI=IPIList->Item(count); if (IPI) { std::cout << "IPI " << count << ": " << IPI->IPI() << std::endl; } } } } // return 0; MusicBrainz5::CMetadata Metadata6=MB2.Query("release-group","2eefe885-f050-426d-93f0-29c5eb8b4f9a"); MusicBrainz5::CReleaseGroup *ReleaseGroup=Metadata6.ReleaseGroup(); if (ReleaseGroup) { std::cout << "ID: " << ReleaseGroup->ID() << std::endl; std::cout << "PrimaryType: " << ReleaseGroup->PrimaryType() << std::endl; std::cout << "Title: " << ReleaseGroup->Title() << std::endl; std::cout << "Disambiguation: " << ReleaseGroup->Disambiguation() << std::endl; std::cout << "FirstReleaseDate: " << ReleaseGroup->FirstReleaseDate() << std::endl; MusicBrainz5::CSecondaryTypeList *SecondaryTypeList=ReleaseGroup->SecondaryTypeList(); if (SecondaryTypeList) { for (int count=0;countNumItems();count++) { MusicBrainz5::CSecondaryType *SecondaryType=SecondaryTypeList->Item(count); if (SecondaryType) { std::cout << "Secondary type " << count << " = " << SecondaryType->SecondaryType() << std::endl; } } } } // return 0; MusicBrainz5::CMetadata Metadata4=MB2.Query("work","b0d17375-5593-390e-a936-1a65ce74c630"); MusicBrainz5::CWork *ThisWork=Metadata4.Work(); if (ThisWork) { std::cout << "ID: '" << ThisWork->ID() << "'" << std::endl; std::cout << "Title: '" << ThisWork->Title() << "'" << std::endl; MusicBrainz5::CISWCList *ISWCList=ThisWork->ISWCList(); if (ISWCList) { for (int count=0;countNumItems();count++) { MusicBrainz5::CISWC *ISWC=ISWCList->Item(count); std::cout << "ISWC " << count << " - '" << ISWC->ISWC() << "'" << std::endl; } } std::cout << "Disambiguation: '" << ThisWork->Disambiguation() << "'" << std::endl; std::cout << "Language: '" << ThisWork->Language() << "'" << std::endl; } MusicBrainz5::CQuery::tParamMap Params3; Params3["inc"]="media recordings"; Metadata4=MB2.Query("release","ae050d13-7f86-495e-9918-10d8c0ac58e8","",Params3); MusicBrainz5::CRelease *Release2=Metadata4.Release(); if (Release2) { MusicBrainz5::CMediumList *MediumList=Release2->MediumList(); if (MediumList) { for (int count=0;countNumItems();count++) { MusicBrainz5::CMedium *Medium=MediumList->Item(count); if (Medium) { MusicBrainz5::CTrackList *TrackList=Medium->TrackList(); if (TrackList) { for (int track=0;trackNumItems();track++) { MusicBrainz5::CTrack *Track=TrackList->Item(track); if (Track) { std::cout << "Position: " << Track->Position() << std::endl; std::cout << "Title: " << Track->Title() << std::endl; std::cout << "Length: " << Track->Length() << std::endl; std::cout << "Number: " << Track->Number() << std::endl; } } } } } } } // return 0; MusicBrainz5::CQuery MB("MBTest/v1.0"); if (argc>1) { std::cout << "Setting username: '" << argv[1] << "'" << std::endl; MB.SetUserName(argv[1]); } if (argc>2) { std::cout << "Setting password: '" << argv[2] << "'" << std::endl; MB.SetPassword(argv[2]); } MusicBrainz5::CQuery::tParamMap Params2; Params2["inc"]="artists release-groups url-rels work-level-rels work-rels artist-rels"; MusicBrainz5::CMetadata Metadata3=MB.Query("recording","3631f569-520d-40ff-a1ee-076604723275","",Params2); MusicBrainz5::CRecording *Recording=Metadata3.Recording(); if (Recording) { MusicBrainz5::CRelationListList *RelationListList=Recording->RelationListList(); for (int count=0;countNumItems();count++) { MusicBrainz5::CRelationList *RelationList=RelationListList->Item(count); PrintRelationList(RelationList); } } // return 0; MusicBrainz5::CQuery::tParamMap Params; Params["inc"]="artists labels recordings release-groups url-rels discids recording-level-rels work-level-rels work-rels artist-rels"; MusicBrainz5::CMetadata Metadata2=MB.Query("release","ef4596f0-5554-443a-aea9-247d2e250f61","",Params); MusicBrainz5::CRelease *Release=Metadata2.Release(); if (Release) { MusicBrainz5::CMediumList *MediumList=Release->MediumList(); if (MediumList) { for (int MediumNum=0;MediumNumNumItems();MediumNum++) { MusicBrainz5::CMedium *Medium=MediumList->Item(MediumNum); if (Medium) { MusicBrainz5::CTrackList *TrackList=Medium->TrackList(); if (TrackList) { for (int TrackNum=0;TrackNumNumItems();TrackNum++) { MusicBrainz5::CTrack *Track=TrackList->Item(TrackNum); if (Track) { MusicBrainz5::CRecording *Recording=Track->Recording(); if (Recording) { MusicBrainz5::CRelationListList *RelationListList=Recording->RelationListList(); if (RelationListList) { std::cout << RelationListList->NumItems() << " items" << std::endl; for (int RelationListNum=0;RelationListNumNumItems();RelationListNum++) { MusicBrainz5::CRelationList *RelationList=RelationListList->Item(RelationListNum); PrintRelationList(RelationList); } } } } } } } } } } // return 0; MusicBrainz5::CMetadata Metadata=MB.Query("collection"); MusicBrainz5::CCollectionList *CollectionList=Metadata.CollectionList(); if (CollectionList && 0!=CollectionList->NumItems()) { MusicBrainz5::CCollection *Collection=CollectionList->Item(0); std::cout << "ID is " << Collection->ID() << std::endl; MB.Query("collection",Collection->ID(),"releases"); std::vector Releases; Releases.push_back("b5748ac9-f38e-48f7-a8a4-8b43cab025bc"); Releases.push_back("f6335672-c521-4129-86c3-490d20533e08"); bool Ret=MB.AddCollectionEntries(Collection->ID(),Releases); std::cout << "AddCollectionEntries returns " << std::boolalpha << Ret << std::endl; MB.Query("collection",Collection->ID(),"releases"); Releases.clear(); Releases.push_back("b5748ac9-f38e-48f7-a8a4-8b43cab025bc"); Ret=MB.DeleteCollectionEntries(Collection->ID(),Releases); std::cout << "DeleteCollectionEntries returns " << std::boolalpha << Ret << std::endl; MB.Query("collection",Collection->ID(),"releases"); } // return 0; std::string DiscID="arIS30RPWowvwNEqsqdDnZzDGhk-"; if (argc==2) DiscID=argv[1]; MusicBrainz5::CReleaseList ReleaseList=MB.LookupDiscID(DiscID); for (int count=0;countID()); std::cout << "Full release: " << std::endl; std::cout << FullRelease << std::endl; std::cout << "Release group title: '" << FullRelease.ReleaseGroup()->Title() << "'" << std::endl; std::cout << std::endl << std::endl << "Media matching " << DiscID << ":" << std::endl; MusicBrainz5::CMediumList MediaList=FullRelease.MediaMatchingDiscID(DiscID); for (int count=0;count