63
65
//kDebug() << "no server";
66
// Check to see if the debug env var has been set
67
if (!qgetenv("MB_DEBUG").isNull())
69
MB.SetDebug(qgetenv("MB_DEBUG").toInt() );
70
//kDebug() << "!! set debug !!" ;
74
//kDebug() << "no debug";
77
68
// If you need to use a proxy, uncomment/edit the following line
79
//MB.SetProxy("proxy.mydomain.com", 80);
81
// Tell the client library to return data in UTF-8
84
// Execute the GetCDInfo query, which pulls the TOC from the
85
// audio CD in the cd-rom drive, calculates the disk id and
86
// requests the data from the server
87
ret = MB.Query(string(MBQ_GetCDInfo));
89
//kDebug() << "query passed";
92
MB.GetQueryError(error);
93
printf("Query failed: %s\n", error.c_str());
97
// Check to see how many items were returned from the server
98
if (MB.DataInt(MBE_GetNumAlbums) < 1)
100
printf("This CD was not found.\n");
104
// TODO if multiple entries found
105
if (MB.DataInt(MBE_GetNumAlbums) > 1)
107
kDebug() << MB.DataInt(MBE_GetNumAlbums) << " entries found";
110
// TODO manage multiple entries
111
// Select the first album
112
MB.Select(MBS_SelectAlbum, 1);
114
// Get the number of tracks
115
numTracks = MB.DataInt(MBE_AlbumGetNumTracks);
116
//kDebug() << "NumTracks: " << numTracks << endl;
118
if (m_validInfo == true)
121
m_discInfo.Title = MB.Data(MBE_AlbumGetAlbumName).c_str();
122
m_discInfo.Artist = MB.Data(MBE_AlbumGetAlbumArtistName).c_str();
126
for(int i = 1; i <= numTracks; i++)
128
track.Title = MB.Data(MBE_AlbumGetTrackName, i).c_str();
129
track.Artist = MB.Data(MBE_AlbumGetArtistName, i).c_str();
130
track.Duration = MB.Data(MBE_AlbumGetTrackDuration, i).c_str();
132
m_trackList << track;
137
// If invalid data, fill the information with something
70
//ws->setProxyHost("proxy.mydomain.com");
71
//ws->setProxyPort(80);
75
// FIXME Uses the disc found by musicbrainz, not
76
// necessarily the one used by KsCD
77
MusicBrainz::Disc *disc = MusicBrainz::readDisc();
78
std::string discId = disc->getId();
80
MusicBrainz::Query q(ws);
81
MusicBrainz::ReleaseResultList results;
85
MusicBrainz::ReleaseFilter f = MusicBrainz::ReleaseFilter().discId(discId);
86
results = q.getReleases(&f);
88
// Check to see how many items were returned from the server
91
// TODO if multiple entries found
92
if (results.size() > 1)
94
kDebug() << results.size() << " entries found";
97
MusicBrainz::ReleaseResult *result = results.front();
98
MusicBrainz::Release *release = q.getReleaseById(result->getRelease()->getId(),
99
&MusicBrainz::ReleaseIncludes().tracks().artist());
101
m_discInfo.Title = QString::fromUtf8(release->getTitle().c_str());
102
m_discInfo.Artist = QString::fromUtf8(release->getArtist()->getName().c_str());
106
for (MusicBrainz::TrackList::iterator j = release->getTracks().begin();
107
j != release->getTracks().end(); j++)
109
MusicBrainz::Track *t = *j;
110
MusicBrainz::Artist *artist = t->getArtist();
112
artist = release->getArtist();
114
track.Title = QString::fromUtf8(t->getTitle().c_str());
115
track.Artist = QString::fromUtf8(artist->getName().c_str());
116
track.Duration = t->getDuration();
118
m_trackList << track;
123
kDebug() << "This CD was not found.";
129
// FIXME Doesn't seem to get caught, why?
130
// catch (MusicBrainz::WebServiceError &e)
133
//kDebug() << "Error: " << e.what();
139
// If invalid data, fill the information with something
141
m_discInfo.Title = i18n("Unknown album");
142
m_discInfo.Artist = i18n("Unknown artist");
146
for (MusicBrainz::Disc::TrackList::iterator j = disc->getTracks().begin(); j != disc->getTracks().end(); j++)
148
track.Title = i18n("Unknown title");
149
track.Artist = m_discInfo.Artist;
150
// time from mb library in sectors, 75 sectors = 1 second
151
track.Duration = (*j).second*1000/75;
153
m_trackList << track;
158
// FIXME Doesn't seem to get caught, why?
159
//catch (MusicBrainz::DiscError &e)
162
//kDebug() << "Error: " << e.what();
139
163
m_discInfo.Title = i18n("Unknown album");
140
164
m_discInfo.Artist = i18n("Unknown artist");
165
m_discInfo.Artist = i18n( "No Disc" );
142
166
m_trackList.clear();
144
for(int i = 1; i <= numTracks; i++)
147
track.Title = i18n("Unknown title");
148
track.Artist = m_discInfo.Artist;
149
track.Duration = MB.Data(MBE_AlbumGetTrackDuration, i).c_str();
151
m_trackList << track;
158
172
showArtistLabel(m_discInfo.Artist);
163
// Create the musicbrainz object, which will be needed for subsequent calls
166
// Set the proper server to use. Defaults to mm.musicbrainz.org:80
167
if (!qgetenv("MB_SERVER").isNull())
168
mb_SetServer(o, qgetenv("MB_SERVER").data(), 80);
170
// Check to see if the debug env var has been set
171
if (!qgetenv("MB_DEBUG").isNull())
172
mb_SetDebug(o, qgetenv("MB_DEBUG").toInt());
174
// Tell the server to only return 2 levels of data, unless the MB_DEPTH env var is set
175
if (!qgetenv("MB_DEPTH").isNull())
176
mb_SetDepth(o, qgetenv("MB_DEPTH").toInt());
180
// m_browser = "firefox";
181
m_browser = "konqueror";
183
// Tell the client library to return data in ISO8859-1 and not UTF-8
186
// Now get the web submit url
187
if (mb_GetWebSubmitURL(o, url, 1024))
191
printf("URL: %s\n", url);
194
m_browser = "konqueror";
196
ret = LaunchBrowser(url, m_browser);
198
printf("Could not launch browser. (%s)\n", m_browser);
201
printf("Could not read CD-ROM parameters. Is there a CD in the drive?\n");
203
// and clean up the musicbrainz object
176
MusicBrainz::Disc *disc = MusicBrainz::readDisc();
177
std::string url = MusicBrainz::getSubmissionUrl(disc);
180
KToolInvocation::invokeBrowser(QString::fromUtf8(url.c_str()));
182
catch (MusicBrainz::DiscError &e)
184
kDebug() << "Error: " << e.what();