void IMDB::onLoadFinished() { QNetworkReply *reply = static_cast<QNetworkReply*>(QObject::sender()); reply->deleteLater(); Movie *movie = reply->property("storage").value<Storage*>()->movie(); QList<int> infos = reply->property("infosToLoad").value<Storage*>()->infosToLoad(); if (!movie) return; if (reply->error() == QNetworkReply::NoError ) { QString msg = QString::fromUtf8(reply->readAll()); parseAndAssignInfos(msg, movie, infos); QString posterUrl = parsePosters(msg); if (infos.contains(MovieScraperInfos::Poster) && !posterUrl.isEmpty()) { QNetworkReply *reply = qnam()->get(QNetworkRequest(posterUrl)); reply->setProperty("storage", Storage::toVariant(reply, movie)); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); connect(reply, SIGNAL(finished()), this, SLOT(onPosterLoadFinished())); } else { movie->controller()->scraperLoadDone(this); } } else { qWarning() << "Network Error (load)" << reply->errorString(); } }
/** * @brief Called when the concert releases are downloaded * @see TMDbConcerts::parseAndAssignInfos */ void TMDbConcerts::loadReleasesFinished() { qDebug() << "Entered"; if (m_releasesReply->error() == QNetworkReply::NoError ) { QString msg = QString::fromUtf8(m_releasesReply->readAll()); parseAndAssignInfos(msg, m_currentConcert, m_infosToLoad); } else { qWarning() << "Network Error (releases)" << m_releasesReply->errorString(); } m_releasesReply->deleteLater(); m_loadsLeft.removeOne(DataReleases); checkDownloadsFinished(); }
/** * @brief Called when the movie infos are downloaded * @see OFDb::parseAndAssignInfos */ void OFDb::loadFinished() { QNetworkReply *reply = static_cast<QNetworkReply*>(QObject::sender()); Movie *movie = reply->property("storage").value<Storage*>()->movie(); QString ofdbId = reply->property("ofdbId").toString(); QList<int> infos = reply->property("infosToLoad").value<Storage*>()->infosToLoad(); int notFoundCounter = reply->property("notFoundCounter").toInt(); if (!movie) return; if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 302 || reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 301) { qDebug() << "Got redirect" << reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); reply->deleteLater(); reply = qnam()->get(QNetworkRequest(reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl())); reply->setProperty("storage", Storage::toVariant(reply, movie)); reply->setProperty("ofdbId", ofdbId); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); connect(reply, SIGNAL(finished()), this, SLOT(loadFinished())); return; } if (reply->error() == QNetworkReply::ContentNotFoundError && notFoundCounter < 3) { qWarning() << "Got 404"; notFoundCounter++; reply->deleteLater(); QUrl url(QString("http://ofdbgw.org/movie/%1").arg(ofdbId)); reply = qnam()->get(QNetworkRequest(url)); reply->setProperty("storage", Storage::toVariant(reply, movie)); reply->setProperty("ofdbId", ofdbId); reply->setProperty("notFoundCounter", notFoundCounter); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); connect(reply, SIGNAL(finished()), this, SLOT(loadFinished())); return; } if (reply->error() == QNetworkReply::NoError ) { QString msg = QString::fromUtf8(reply->readAll()); parseAndAssignInfos(msg, movie, infos); } else { qWarning() << "Network Error" << reply->errorString(); } reply->deleteLater(); movie->controller()->scraperLoadDone(this); }
void IMDB::onLoadFinished() { QNetworkReply *reply = static_cast<QNetworkReply*>(QObject::sender()); Movie *movie = reply->property("storage").value<Storage*>()->movie(); QList<int> infos = reply->property("infosToLoad").value<Storage*>()->infosToLoad(); if (!movie) return; if (reply->error() == QNetworkReply::NoError ) { QString msg = QString::fromUtf8(reply->readAll()); parseAndAssignInfos(msg, movie, infos); } else { qWarning() << "Network Error (load)" << reply->errorString(); } reply->deleteLater(); movie->controller()->scraperLoadDone(this); }
/** * @brief Called when the movie infos are downloaded * @see Cinefacts::parseAndAssignInfos */ void Cinefacts::loadFinished() { QNetworkReply *reply = static_cast<QNetworkReply*>(QObject::sender()); Movie *movie = reply->property("storage").value<Storage*>()->movie(); QList<int> infos = reply->property("infosToLoad").value<Storage*>()->infosToLoad(); QString cinefactsId = reply->property("cinefactsId").toString(); reply->deleteLater(); if (!movie) return; if (reply->error() == QNetworkReply::NoError) { QString msg = QString::fromUtf8(reply->readAll()); parseAndAssignInfos(msg, movie, reply->property("infosToLoad").value<Storage*>()->infosToLoad()); reply = qnam()->get(QNetworkRequest(QUrl(QString("http://www.cinefacts.de/Filme/%1/Besetzung-Stab/").arg(cinefactsId)))); reply->setProperty("storage", Storage::toVariant(reply, movie)); reply->setProperty("cinefactsId", cinefactsId); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); connect(reply, SIGNAL(finished()), this, SLOT(actorsFinished())); } else { qWarning() << "Network Error" << reply->errorString(); movie->controller()->scraperLoadDone(this); } }
/** * @brief Called when the tv show infos are downloaded * Starts download of actors * @see TheTvDb::parseAndAssignInfos * @see TheTvDb::onActorsFinished */ void TheTvDb::onLoadFinished() { QNetworkReply *reply = static_cast<QNetworkReply*>(QObject::sender()); reply->deleteLater(); TvShow *show = reply->property("storage").value<Storage*>()->show(); TvShowUpdateType updateType = static_cast<TvShowUpdateType>(reply->property("updateType").toInt()); QList<int> infos = reply->property("infosToLoad").value<Storage*>()->infosToLoad(); if (!show) return; if (reply->error() == QNetworkReply::NoError ) { QString msg = QString::fromUtf8(reply->readAll()); parseAndAssignInfos(msg, show, updateType, infos); } else { qWarning() << "Network Error" << reply->errorString(); } QString mirror = m_xmlMirrors.at(qrand()%m_xmlMirrors.count()); QUrl url(QString("%1/api/%2/series/%3/actors.xml").arg(mirror).arg(m_apiKey).arg(show->tvdbId())); reply = qnam()->get(QNetworkRequest(url)); reply->setProperty("storage", Storage::toVariant(reply, show)); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); reply->setProperty("updateType", updateType); connect(reply, SIGNAL(finished()), this, SLOT(onActorsFinished())); }