#include #include #include #include #include #include "webdownloader.h" WebDownloader::WebDownloader(QObject *parent) : QObject(parent) { mAccessMgr = new QNetworkAccessManager(this); connect(mAccessMgr, &QNetworkAccessManager::finished, this, &WebDownloader::dlFinished); } void WebDownloader::fetchData(QString artist, QString album){ mArtist = artist; mAlbum = album; QString artistQ = QString("artist:\"%1\"").arg(artist); QByteArray peq = QUrl::toPercentEncoding(artistQ); QString url = QString("https://musicbrainz.org/ws/2/release/?query=%1&fmt=json&limit=100").arg(QString(peq)); QUrl aUrl(url); QNetworkRequest req(aUrl); req.setHeader(QNetworkRequest::UserAgentHeader, "Beetplayer/1.0.0 (beetplayer@d-tor.org"); mAccessMgr->get(req); } void WebDownloader::dlFinished(QNetworkReply *reply){ mData.clear(); mOtherData.clear(); QByteArray res = reply->readAll(); QJsonParseError err; QJsonDocument jDoc = QJsonDocument::fromJson(res, &err); QJsonObject docObj = jDoc.object(); QJsonArray relArr = docObj.value("releases").toArray(); for(QJsonArray::const_iterator it = relArr.constBegin(); it != relArr.constEnd(); ++it){ QJsonValue v = *it; QString title = v.toObject().value("title").toString().toLower(); QString curId = v.toObject().value("release-group").toObject().value("id").toString(); qDebug() << mAlbum << title; if(mAlbum == title){ if(!mData.contains(curId)){ mData << curId; } }else{ mOtherData.insert(title, curId); } } reply->deleteLater(); emit done(); }