blob: 8035fe1e2bcd6b46cc713a66309cbc67c8c4e463 (
plain)
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
|
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#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();
}
|