1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
// Search for a track by title (and optionally by artist name).
//
// Usage:
// cdlookup [device]
//
// $Id: cdlookup.cpp 8790 2007-01-13 23:04:43Z luks $
#include <iostream>
#include <musicbrainz3/disc.h>
#include <musicbrainz3/webservice.h>
#include <musicbrainz3/query.h>
#include <musicbrainz3/model.h>
using namespace std;
using namespace MusicBrainz;
int
main(int argc, char **argv)
{
if (argc < 1) {
cout << "Usage: cdlookup [device]" << endl;
return 1;
}
string device;
if (argc > 1)
device = argv[1];
Disc *disc;
try {
disc = readDisc(device);
}
catch (DiscError &e) {
cout << "Error: " << e.what() << endl;
return 1;
}
string discId = disc->getId();
delete disc;
cout << "Disc Id: " << discId << endl << endl;
Query q;
ReleaseResultList results;
try {
ReleaseFilter f = ReleaseFilter().discId(discId);
results = q.getReleases(&f);
}
catch (WebServiceError &e) {
cout << "Error: " << e.what() << endl;
return 1;
}
for (ReleaseResultList::iterator i = results.begin(); i != results.end(); i++) {
ReleaseResult *result = *i;
Release *release;
try {
release = q.getReleaseById(result->getRelease()->getId(), &ReleaseIncludes().tracks().artist());
}
catch (WebServiceError &e) {
cout << "Error: " << e.what() << endl;
continue;
}
cout << "Id : " << release->getId() << endl;
cout << "Title : " << release->getTitle() << endl;
cout << "Tracks : ";
int trackno = 1;
for (TrackList::iterator j = release->getTracks().begin(); j != release->getTracks().end(); j++) {
Track *track = *j;
Artist *artist = track->getArtist();
if (!artist)
artist = release->getArtist();
cout << trackno++ << ". " << artist->getName() << " / " << track->getTitle() << endl;
cout << " ";
}
cout << endl;
delete result;
}
return 0;
}
|