From 51ce6b47ed4250a97f49eaee3929116a6fe601f6 Mon Sep 17 00:00:00 2001 From: birkeh Date: Mon, 23 Oct 2017 18:03:54 +0200 Subject: [PATCH] bug fixes --- cimage.cpp | 3 +- cmainwindow.cpp | 2 +- cserie.cpp | 2 +- cthetvdbv2.cpp | 101 +++++++++++++++++++++++++++++++----------------- 4 files changed, 69 insertions(+), 39 deletions(-) diff --git a/cimage.cpp b/cimage.cpp index 11c4db8..34713d3 100644 --- a/cimage.cpp +++ b/cimage.cpp @@ -37,7 +37,8 @@ QPixmap cImage::downloadFile(const QString& szFileName) QPixmap pixmap; QString szPath = rootPath() + QDir::separator() + szFileName; - QString szURL = "http://thetvdb.com/banners/" + szFileName; +// QString szURL = "http://thetvdb.com/banners/" + szFileName; + QString szURL = "https://www.thetvdb.com/banners/" + szFileName; QNetworkAccessManager networkManager; QUrl url(szURL); diff --git a/cmainwindow.cpp b/cmainwindow.cpp index c4e5d38..921f4d7 100644 --- a/cmainwindow.cpp +++ b/cmainwindow.cpp @@ -313,7 +313,7 @@ void cMainWindow::loadSeriesDB() lpSerie->setStatus(query.value(13).toString()); lpSerie->setDownload(query.value(14).toString()); lpSerie->setCliffhanger(query.value(15).toBool()); - lpSerie->setActors(query.value(16).toString().split(",")); + lpSerie->setActors(query.value(16).toString().split("|")); lpSerie->setGenre(query.value(17).toString().split(",")); if(iSeasonID != iOldSeasonID) diff --git a/cserie.cpp b/cserie.cpp index 00988a3..104d5b7 100644 --- a/cserie.cpp +++ b/cserie.cpp @@ -371,7 +371,7 @@ bool cSerie::save(QSqlDatabase &db) querySerie.bindValue(":status", status()); querySerie.bindValue(":download", download()); querySerie.bindValue(":cliffhanger", cliffhanger()); - querySerie.bindValue(":actor", actors().join(",")); + querySerie.bindValue(":actor", actors().join("|")); querySerie.bindValue(":genre", genre().join(",")); if(querySerie.exec()) { diff --git a/cthetvdbv2.cpp b/cthetvdbv2.cpp index aa2b254..d2404f1 100644 --- a/cthetvdbv2.cpp +++ b/cthetvdbv2.cpp @@ -107,45 +107,74 @@ cSerie* cTheTVDBV2::load(const qint32 &iID, const QString &szLanguage) QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); loop.exec(); - if (reply->error() == QNetworkReply::NoError) - { - QString strReply = (QString)reply->readAll(); - QJsonDocument jsonResponse = QJsonDocument::fromJson(strReply.toUtf8()); - QJsonObject jsonObj = jsonResponse.object(); - QJsonObject serieDetails = jsonObj["data"].toObject(); - QJsonArray genreArray = serieDetails["genre"].toArray(); - QStringList genreList; - - delete reply; - - lpSerie = new cSerie; - lpSerie->setSeriesName(serieDetails["seriesName"].toString()); - lpSerie->setSeriesID(serieDetails["seriesId"].toInt()); - lpSerie->setLanguage(szLanguage); - lpSerie->setBanner(serieDetails["banner"].toString()); - lpSerie->setOverview(serieDetails["overview"].toString()); - lpSerie->setFirstAired(serieDetails["firstAired"].toString()); - lpSerie->setNetwork(serieDetails["network"].toString()); - lpSerie->setIMDBID(serieDetails["imdbId"].toString()); - lpSerie->setID(serieDetails["id"].toInt()); - lpSerie->setContentRating(serieDetails["rating"].toString()); - for(int z = 0;z < genreArray.count();z++) - genreList.append(genreArray[z].toString()); - lpSerie->setGenre(genreList); - lpSerie->setRating(serieDetails["siteRating"].toDouble()); - lpSerie->setRatingCount(serieDetails["siteRatingCount"].toInt()); - lpSerie->setRuntime(serieDetails["runtime"].toString().toInt()); - lpSerie->setStatus(serieDetails["status"].toString()); - - lpSerie->setActors(getActors(iID)); - - getEpisodes(lpSerie, szLanguage); - } - else + if(reply->error() != QNetworkReply::NoError) { qDebug() << reply->errorString(); delete reply; + + return(0); } + + QString strReply = (QString)reply->readAll(); + QJsonDocument jsonResponse = QJsonDocument::fromJson(strReply.toUtf8()); + QJsonObject jsonObj = jsonResponse.object(); + QJsonObject serieDetails = jsonObj["data"].toObject(); + + delete reply; + + QJsonObject jsonError = jsonObj["errors"].toObject(); + if(!jsonError["invalidLanguage"].toString().isEmpty()) + { + request = QNetworkRequest(QUrl(QString("https://api.thetvdb.com/series/%1").arg(iID))); + request.setRawHeader("Content-Type", "application/json"); + request.setRawHeader("Authorization", QString("Bearer %1").arg(m_szToken).toUtf8()); + request.setRawHeader("Accept-Language", "en"); + + reply = networkManager.get(request); + + QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); + loop.exec(); + + if(reply->error() != QNetworkReply::NoError) + { + qDebug() << reply->errorString(); + delete reply; + + return(0); + } + + strReply = (QString)reply->readAll(); + jsonResponse = QJsonDocument::fromJson(strReply.toUtf8()); + jsonObj = jsonResponse.object(); + serieDetails = jsonObj["data"].toObject(); + } + + QJsonArray genreArray = serieDetails["genre"].toArray(); + QStringList genreList; + + lpSerie = new cSerie; + lpSerie->setSeriesName(serieDetails["seriesName"].toString()); + lpSerie->setSeriesID(serieDetails["seriesId"].toInt()); + lpSerie->setLanguage(szLanguage); + lpSerie->setBanner(serieDetails["banner"].toString()); + lpSerie->setOverview(serieDetails["overview"].toString()); + lpSerie->setFirstAired(serieDetails["firstAired"].toString()); + lpSerie->setNetwork(serieDetails["network"].toString()); + lpSerie->setIMDBID(serieDetails["imdbId"].toString()); + lpSerie->setID(serieDetails["id"].toInt()); + lpSerie->setContentRating(serieDetails["rating"].toString()); + for(int z = 0;z < genreArray.count();z++) + genreList.append(genreArray[z].toString()); + lpSerie->setGenre(genreList); + lpSerie->setRating(serieDetails["siteRating"].toDouble()); + lpSerie->setRatingCount(serieDetails["siteRatingCount"].toInt()); + lpSerie->setRuntime(serieDetails["runtime"].toString().toInt()); + lpSerie->setStatus(serieDetails["status"].toString()); + + lpSerie->setActors(getActors(iID)); + + getEpisodes(lpSerie, szLanguage); + return(lpSerie); } @@ -174,7 +203,7 @@ QStringList cTheTVDBV2::getActors(const qint32& iID) for(int z = 0;z < actorsArray.count();z++) { QJsonObject actor = actorsArray.at(z).toObject(); - actorsList.append(actor["name"].toString()); + actorsList.append(QString("%1,%2").arg(actor["name"].toString()).arg(actor["role"].toString())); } delete reply;