Fix album cover handling in Jamendo.
This commit is contained in:
parent
c679a19c91
commit
880909104e
|
@ -177,20 +177,34 @@ void AlbumCoverLoader::RemoteFetchFinished() {
|
|||
QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());
|
||||
if (!reply)
|
||||
return;
|
||||
reply->deleteLater();
|
||||
|
||||
Task task = remote_tasks_.take(reply);
|
||||
|
||||
// Handle redirects.
|
||||
QVariant redirect = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
|
||||
if (redirect.isValid()) {
|
||||
if (++task.redirects > kMaxRedirects) {
|
||||
return; // Give up.
|
||||
}
|
||||
QNetworkRequest request = reply->request();
|
||||
request.setUrl(redirect.toUrl());
|
||||
QNetworkReply* redirected_reply = network_->get(request);
|
||||
connect(redirected_reply, SIGNAL(finished()), SLOT(RemoteFetchFinished()));
|
||||
|
||||
remote_tasks_.insert(redirected_reply, task);
|
||||
return;
|
||||
}
|
||||
|
||||
if (reply->error() == QNetworkReply::NoError) {
|
||||
// Try to load the image
|
||||
QImage image;
|
||||
if (image.load(reply, 0)) {
|
||||
emit ImageLoaded(task.id, ScaleAndPad(image));
|
||||
reply->deleteLater();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
reply->deleteLater();
|
||||
NextState(&task);
|
||||
}
|
||||
|
||||
|
|
|
@ -72,12 +72,14 @@ class AlbumCoverLoader : public QObject {
|
|||
};
|
||||
|
||||
struct Task {
|
||||
Task() : redirects(0) {}
|
||||
quint64 id;
|
||||
QString art_automatic;
|
||||
QString art_manual;
|
||||
QString song_filename;
|
||||
QImage embedded_image;
|
||||
State state;
|
||||
int redirects;
|
||||
};
|
||||
|
||||
struct TryLoadResult {
|
||||
|
@ -107,6 +109,8 @@ class AlbumCoverLoader : public QObject {
|
|||
quint64 next_id_;
|
||||
|
||||
NetworkAccessManager* network_;
|
||||
|
||||
static const int kMaxRedirects = 3;
|
||||
};
|
||||
|
||||
#endif // ALBUMCOVERLOADER_H
|
||||
|
|
|
@ -49,7 +49,7 @@ const char* JamendoService::kMp3StreamUrl =
|
|||
const char* JamendoService::kOggStreamUrl =
|
||||
"http://api.jamendo.com/get2/stream/track/redirect/?id=%1&streamencoding=ogg2";
|
||||
const char* JamendoService::kAlbumCoverUrl =
|
||||
"http://api.jamendo.com/get2/image/album/redirect/?id=%1&imagesize=260";
|
||||
"http://api.jamendo.com/get2/image/album/redirect/?id=%1&imagesize=300";
|
||||
const char* JamendoService::kHomepage = "http://www.jamendo.com/";
|
||||
const char* JamendoService::kAlbumInfoUrl = "http://www.jamendo.com/album/%1";
|
||||
const char* JamendoService::kDownloadAlbumUrl = "http://www.jamendo.com/download/album/%1";
|
||||
|
|
Loading…
Reference in New Issue