diff options
Diffstat (limited to 'webdownloader.cpp')
-rw-r--r-- | webdownloader.cpp | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/webdownloader.cpp b/webdownloader.cpp index 8035fe1..c0505b9 100644 --- a/webdownloader.cpp +++ b/webdownloader.cpp @@ -27,22 +27,32 @@ void WebDownloader::dlFinished(QNetworkReply *reply){ mData.clear(); mOtherData.clear(); QByteArray res = reply->readAll(); - QJsonParseError err; - QJsonDocument jDoc = QJsonDocument::fromJson(res, &err); + QJsonDocument jDoc = QJsonDocument::fromJson(res); 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); + QJsonArray::const_iterator it = std::find_if(relArr.constBegin(), relArr.constEnd(), [this](auto c) { + QString title = c.toObject().value("title").toString().toLower(); + return title == mAlbum; + }); + if(it != relArr.constEnd()){ + QJsonValue titleRes = *it; + QString curId = titleRes.toObject().value("release-group").toObject().value("id").toString(); + if(!mData.contains(curId)){ + mData << curId; } + QString aId = titleRes.toObject().value("artist-credit").toArray().at(0).toObject().value("artist").toObject().value("id").toString(); + std::for_each(relArr.constBegin(), relArr.constEnd(), [this, aId](auto c){ + QString id = c.toObject().value("artist-credit").toArray().at(0).toObject().value("artist").toObject().value("id").toString(); + if(id == aId){ + QString primary = c.toObject().value("release-group").toObject().value("primary-type").toString().toLower(); + QString status = c.toObject().value("status").toString().toLower(); + if(primary == "album" && status == "official"){ + QString linkId = c.toObject().value("release-group").toObject().value("id").toString(); + QString title = c.toObject().value("title").toString().toLower(); + mOtherData.insert(linkId, title); + } + } + }); } reply->deleteLater(); emit done(); |