void UniversalMusicScraper::onArtistRelsFinished() { QNetworkReply *reply = static_cast<QNetworkReply*>(QObject::sender()); Artist *artist = reply->property("storage").value<Storage*>()->artist(); QList<int> infos = reply->property("infosToLoad").value<Storage*>()->infosToLoad(); reply->deleteLater(); if (!artist) return; if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 302 || reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 301) { qDebug() << "Got redirect" << reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); reply = qnam()->get(QNetworkRequest(reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl())); reply->setProperty("storage", Storage::toVariant(reply, artist)); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); connect(reply, SIGNAL(finished()), this, SLOT(onArtistRelsFinished())); return; } QString discogsUrl; if (reply->error() == QNetworkReply::NoError) { QString msg = QString::fromUtf8(reply->readAll()); QDomDocument domDoc; domDoc.setContent(msg); for (int i=0, n=domDoc.elementsByTagName("relation").count() ; i<n ; ++i) { QDomElement elem = domDoc.elementsByTagName("relation").at(i).toElement(); if (elem.attribute("type") == "allmusic" && elem.elementsByTagName("target").count() > 0) { QString url = elem.elementsByTagName("target").at(0).toElement().text(); QRegExp rx("allmusic\\.com/artist/(.*)$"); if (rx.indexIn(url) != -1) artist->setAllMusicId(rx.cap(1)); } if (elem.attribute("type") == "discogs" && elem.elementsByTagName("target").count() > 0) discogsUrl = elem.elementsByTagName("target").at(0).toElement().text(); } } if (!m_artistDownloads.contains(artist)) m_artistDownloads.insert(artist, QList<DownloadElement>()); m_artistDownloads[artist].clear(); appendDownloadElement(artist, "theaudiodb", "tadb_data", QUrl(QString("http://www.theaudiodb.com/api/v1/json/%1/artist-mb.php?i=%2").arg(m_tadbApiKey).arg(artist->mbId()))); appendDownloadElement(artist, "theaudiodb", "tadb_discography", QUrl(QString("http://www.theaudiodb.com/api/v1/json/%1/discography-mb.php?s=%2").arg(m_tadbApiKey).arg(artist->mbId()))); if (!artist->allMusicId().isEmpty()) { appendDownloadElement(artist, "allmusic", "am_data", QUrl(QString("http://www.allmusic.com/artist/%1").arg(artist->allMusicId()))); appendDownloadElement(artist, "allmusic", "am_biography", QUrl(QString("http://www.allmusic.com/artist/%1/biography").arg(artist->allMusicId()))); } if (!discogsUrl.isEmpty()) appendDownloadElement(artist, "discogs", "discogs_data", QUrl(discogsUrl + "?type=Releases&subtype=Albums")); foreach (DownloadElement elem, m_artistDownloads[artist]) { QNetworkRequest request(elem.url); request.setRawHeader("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10; rv:33.0) Gecko/20100101 Firefox/33.0"); QNetworkReply *reply = qnam()->get(request); new NetworkReplyWatcher(this, reply); reply->setProperty("storage", Storage::toVariant(reply, artist)); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); connect(reply, SIGNAL(finished()), this, SLOT(onArtistLoadFinished())); }
void IMDB::search(QString searchStr) { QString encodedSearch = QUrl::toPercentEncoding(searchStr); QRegExp rx("^tt\\d+$"); if (rx.exactMatch(searchStr)) { QUrl url = QUrl(QString("http://www.imdb.com/title/%1/").arg(searchStr).toUtf8()); QNetworkReply *reply = qnam()->get(QNetworkRequest(url)); connect(reply, SIGNAL(finished()), this, SLOT(onSearchIdFinished())); } else { QUrl url = QUrl::fromEncoded(QString("http://www.imdb.com/find?s=tt&ttype=ft&ref_=fn_ft&q=%1").arg(encodedSearch).toUtf8()); QNetworkReply *reply = qnam()->get(QNetworkRequest(url)); connect(reply, SIGNAL(finished()), this, SLOT(onSearchFinished())); } }
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(); } }
void NSISUpdater::versionInfoArrived(const UpdateInfo &info) { ConfigFile cfg; QSettings settings(cfg.configFile(), QSettings::IniFormat); qint64 infoVersion = Helper::stringVersionToInt(info.version()); qint64 seenVersion = Helper::stringVersionToInt(settings.value(seenVersionC).toString()); qint64 currVersion = Helper::currentVersionToInt(); if (info.version().isEmpty() || infoVersion <= currVersion || infoVersion <= seenVersion) { qCInfo(lcUpdater) << "Client is on latest version!"; setDownloadState(UpToDate); } else { QString url = info.downloadUrl(); qint64 autoUpdateFailedVersion = Helper::stringVersionToInt(settings.value(autoUpdateFailedVersionC).toString()); if (url.isEmpty() || _showFallbackMessage || infoVersion == autoUpdateFailedVersion) { showDialog(info); } if (!url.isEmpty()) { _targetFile = cfg.configPath() + url.mid(url.lastIndexOf('/')); if (QFile(_targetFile).exists()) { setDownloadState(DownloadComplete); } else { QNetworkReply *reply = qnam()->get(QNetworkRequest(QUrl(url))); connect(reply, &QIODevice::readyRead, this, &NSISUpdater::slotWriteFile); connect(reply, &QNetworkReply::finished, this, &NSISUpdater::slotDownloadFinished); setDownloadState(Downloading); _file.reset(new QTemporaryFile); _file->setAutoRemove(true); _file->open(); } } } }
/** * @brief Called when backdrop scraping has finished * Starts the next backdrop download or tells the movie that scraping is done */ void Cinefacts::backdropFinished() { QNetworkReply *reply = static_cast<QNetworkReply*>(QObject::sender()); reply->deleteLater(); Movie *movie = reply->property("storage").value<Storage*>()->movie(); QStringList backdrops = reply->property("backdrops").toStringList(); QList<int> infos = reply->property("infosToLoad").value<Storage*>()->infosToLoad(); if (!movie) return; if (reply->error() == QNetworkReply::NoError) { QString msg = QString::fromUtf8(reply->readAll()); QRegExp rx("<a href=\"([^\"]*)\" target=\"_blank\">Bild in Originalgr..e</a>"); rx.setMinimal(true); if (rx.indexIn(msg) != -1) { Poster p; p.thumbUrl = rx.cap(1); p.originalUrl = rx.cap(1); movie->addBackdrop(p); } if (!backdrops.isEmpty()) { reply = qnam()->get(QNetworkRequest(QUrl(QString("http://www.cinefacts.de%1").arg(backdrops.takeFirst())))); reply->setProperty("storage", Storage::toVariant(reply, movie)); reply->setProperty("backdrops", backdrops); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); connect(reply, SIGNAL(finished()), this, SLOT(backdropFinished())); return; } } movie->controller()->scraperLoadDone(this); }
/** * @brief Called when the search result was downloaded * Emits "searchDone" if there are no more pages in the result set * @see Cinefacts::parseSearch */ void Cinefacts::searchFinished() { QNetworkReply *reply = static_cast<QNetworkReply*>(QObject::sender()); reply->deleteLater(); if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 302 || reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 301) { qDebug() << "Got redirect" << reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); QString redirect = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toString(); if (!redirect.startsWith("http")) redirect.prepend("http://www.cinefacts.de"); QUrl url(redirect); QNetworkReply *reply = qnam()->get(QNetworkRequest(url)); new NetworkReplyWatcher(this, reply); connect(reply, SIGNAL(finished()), this, SLOT(searchFinished())); return; } QList<ScraperSearchResult> results; if (reply->error() == QNetworkReply::NoError) { QString msg = QString::fromUtf8(reply->readAll()); results = parseSearch(msg); } else { qWarning() << "Network Error" << reply->errorString(); } emit searchDone(results); }
/** * @brief Searches for a tv show * @param searchStr The tv show name/search string * @see TheTvDb::onSearchFinished */ void TheTvDb::search(QString searchStr) { qDebug() << "Entered, searchStr=" << searchStr; QUrl url(QString("http://www.thetvdb.com/api/GetSeries.php?language=%1&seriesname=%2").arg(m_language).arg(searchStr)); QNetworkReply *reply = qnam()->get(QNetworkRequest(url)); connect(reply, SIGNAL(finished()), this, SLOT(onSearchFinished())); }
/** * @brief Called when the tv show actors are downloaded * Starts download of banners * @see TheTvDb::parseAndAssignActors * @see TheTvDb::onBannersFinished */ void TheTvDb::onActorsFinished() { 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()); if (show->infosToLoad().contains(TvShowScraperInfos::Actors) && (updateType == UpdateShow || updateType == UpdateShowAndAllEpisodes || updateType == UpdateShowAndNewEpisodes)) parseAndAssignActors(msg, show); } else { qWarning() << "Network Error" << reply->errorString(); } QString mirror = m_xmlMirrors.at(qrand()%m_xmlMirrors.count()); QUrl url(QString("%1/api/%2/series/%3/banners.xml").arg(mirror).arg(m_apiKey).arg(show->tvdbId())); reply = qnam()->get(QNetworkRequest(url)); reply->setProperty("storage", Storage::toVariant(reply, show)); reply->setProperty("updateType", updateType); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); connect(reply, SIGNAL(finished()), this, SLOT(onBannersFinished())); }
void UniversalMusicScraper::searchArtist(QString searchStr) { QUrl url(QString("http://www.musicbrainz.org/ws/2/artist/?query=artist:\"%1\"").arg(QString(QUrl::toPercentEncoding(searchStr)))); QNetworkRequest request(url); QNetworkReply *reply = qnam()->get(request); new NetworkReplyWatcher(this, reply); connect(reply, SIGNAL(finished()), this, SLOT(onSearchArtistFinished())); }
QNetworkAccessManager* ShibbolethCredentials::getQNAM() const { ShibbolethAccessManager* qnam(new ShibbolethAccessManager(_shibCookie)); connect(this, SIGNAL(newCookie(QNetworkCookie)), qnam, SLOT(setCookie(QNetworkCookie))); return qnam; }
/** * @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); }
/** * @brief Searches for a movie * @param searchStr The Movie name/search string * @see VideoBuster::searchFinished */ void VideoBuster::search(QString searchStr) { qDebug() << "Entered, searchStr=" << searchStr; QString encodedSearch = Helper::toLatin1PercentEncoding(searchStr); QUrl url(QString("https://www.videobuster.de/titlesearch.php?tab_search_content=movies&view=title_list_view_option_list&search_title=%1").arg(encodedSearch).toUtf8()); QNetworkReply *reply = qnam()->get(QNetworkRequest(url)); connect(reply, SIGNAL(finished()), this, SLOT(searchFinished())); }
/** * @brief Searches for a movie * @param searchStr The Movie name/search string * @see Cinefacts::searchFinished */ void Cinefacts::search(QString searchStr) { qDebug() << "Entered, searchStr=" << searchStr; QString encodedSearch = Helper::toLatin1PercentEncoding(searchStr); QUrl url(QString("http://www.cinefacts.de/search/site/q/%1/").arg(encodedSearch).toUtf8()); QNetworkReply *reply = qnam()->get(QNetworkRequest(url)); connect(reply, SIGNAL(finished()), this, SLOT(searchFinished())); }
/** * @brief Loads the setup parameters from TMDb * @see TMDb::setupFinished */ void TMDb::setup() { QUrl url(QString("http://api.themoviedb.org/3/configuration?api_key=%1").arg(TMDb::apiKey())); QNetworkRequest request(url); request.setRawHeader("Accept", "application/json"); QNetworkReply *reply = qnam()->get(request); connect(reply, SIGNAL(finished()), this, SLOT(setupFinished())); }
/** * @brief FanartTv::loadConcertData * @param tmdbId * @param types */ void FanartTv::loadConcertData(QString tmdbId, QList<int> types, Concert *concert) { QUrl url; QNetworkRequest request; request.setRawHeader("Accept", "application/json"); url.setUrl(QString("http://webservice.fanart.tv/v3/movies/%1?%2").arg(tmdbId).arg(keyParameter())); QNetworkReply *reply = qnam()->get(QNetworkRequest(request)); reply->setProperty("infosToLoad", Storage::toVariant(reply, types)); reply->setProperty("storage", Storage::toVariant(reply, concert)); connect(reply, SIGNAL(finished()), this, SLOT(onLoadAllConcertDataFinished())); }
/** * @brief Starts network requests to download infos from Cinefacts * @param id Cinefacts movie ID * @param movie Movie object * @param infos List of infos to load * @see Cinefacts::loadFinished */ void Cinefacts::loadData(QMap<ScraperInterface*, QString> ids, Movie *movie, QList<int> infos) { movie->clear(infos); QUrl url(QString("http://www.cinefacts.de/Filme/%1").arg(ids.values().first())); QNetworkReply *reply = qnam()->get(QNetworkRequest(url)); reply->setProperty("storage", Storage::toVariant(reply, movie)); reply->setProperty("cinefactsId", ids.values().first()); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); connect(reply, SIGNAL(finished()), this, SLOT(loadFinished())); }
/** * @brief Searches for a movie * @param searchStr The Movie name/search string * @see OFDb::searchFinished */ void OFDb::search(QString searchStr) { qDebug() << "Entered, searchStr=" << searchStr; QString encodedSearch = Helper::toLatin1PercentEncoding(searchStr); QUrl url(QString("http://www.ofdbgw.org/search/%1").arg(encodedSearch).toUtf8()); QNetworkReply *reply = qnam()->get(QNetworkRequest(url)); reply->setProperty("searchString", searchStr); reply->setProperty("notFoundCounter", 0); connect(reply, SIGNAL(finished()), this, SLOT(searchFinished())); }
/** * @brief Starts network requests to download infos from TheTvDb * @param id TheTvDb show ID * @param episode Episode object * @see TheTvDb::onEpisodeLoadFinished */ void TheTvDb::loadTvShowEpisodeData(QString id, TvShowEpisode *episode, QList<int> infosToLoad) { qDebug() << "Entered, id=" << id << "episode=" << episode->name(); episode->clear(infosToLoad); QString mirror = m_xmlMirrors.at(qrand()%m_xmlMirrors.count()); QUrl url(QString("%1/api/%2/series/%3/all/%4.xml").arg(mirror).arg(m_apiKey).arg(id).arg(m_language)); QNetworkReply *reply = qnam()->get(QNetworkRequest(url)); reply->setProperty("storage", Storage::toVariant(reply, episode)); reply->setProperty("infosToLoad", Storage::toVariant(reply, infosToLoad)); connect(reply, SIGNAL(finished()), this, SLOT(onEpisodeLoadFinished())); }
/** * @brief Starts network requests to download infos from OFDb * @param id OFDb movie ID * @param movie Movie object * @param infos List of infos to load * @see OFDb::loadFinished */ void OFDb::loadData(QMap<ScraperInterface*, QString> ids, Movie *movie, QList<int> infos) { movie->clear(infos); QUrl url(QString("http://ofdbgw.org/movie/%1").arg(ids.values().first())); QNetworkReply *reply = qnam()->get(QNetworkRequest(url)); reply->setProperty("storage", Storage::toVariant(reply, movie)); reply->setProperty("ofdbId", ids.values().first()); reply->setProperty("notFoundCounter", 0); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); connect(reply, SIGNAL(finished()), this, SLOT(loadFinished())); }
/** * @brief FanartTv::loadMovieData * @param tmdbId * @param type */ void FanartTv::loadMovieData(QString tmdbId, int type) { QUrl url; QNetworkRequest request; request.setRawHeader("Accept", "application/json"); url.setUrl(QString("http://webservice.fanart.tv/v3/movies/%1?%2").arg(tmdbId).arg(keyParameter())); qDebug() << url; request.setUrl(url); QNetworkReply *reply = qnam()->get(QNetworkRequest(request)); reply->setProperty("infoToLoad", type); connect(reply, SIGNAL(finished()), this, SLOT(onLoadMovieDataFinished())); }
/** * @brief Called when the search result was downloaded * Emits "searchDone" if there are no more pages in the result set * @see OFDb::parseSearch */ void OFDb::searchFinished() { QNetworkReply *reply = static_cast<QNetworkReply*>(QObject::sender()); QString searchStr = reply->property("searchString").toString(); int notFoundCounter = reply->property("notFoundCounter").toInt(); 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("searchString", searchStr); connect(reply, SIGNAL(finished()), this, SLOT(searchFinished())); return; } // try to get another mirror when 404 occurs if (reply->error() == QNetworkReply::ContentNotFoundError && notFoundCounter < 3) { qWarning() << "Got 404"; notFoundCounter++; reply->deleteLater(); QUrl url(QString("http://www.ofdbgw.org/search/%1").arg(searchStr)); reply = qnam()->get(QNetworkRequest(url)); reply->setProperty("searchString", searchStr); reply->setProperty("notFoundCounter", notFoundCounter); connect(reply, SIGNAL(finished()), this, SLOT(searchFinished())); return; } QList<ScraperSearchResult> results; if (reply->error() == QNetworkReply::NoError ) { QString msg = QString::fromUtf8(reply->readAll()); results = parseSearch(msg, searchStr); } else { qWarning() << "Network Error" << reply->errorString(); } reply->deleteLater(); emit searchDone(results); }
void IMDB::loadData(QMap<ScraperInterface*, QString> ids, Movie *movie, QList<int> infos) { movie->clear(infos); movie->setId(ids.values().first()); QUrl url(QString("http://mymovieapi.com/?id=%1&type=json&plot=full&episode=0&lang=en-US").arg(ids.values().first())); QNetworkRequest request(url); request.setRawHeader("Accept", "application/json"); QNetworkReply *reply = qnam()->get(QNetworkRequest(request)); reply->setProperty("storage", Storage::toVariant(reply, movie)); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); connect(reply, SIGNAL(finished()), this, SLOT(onLoadFinished())); }
void IMDB::loadData(QMap<ScraperInterface*, QString> ids, Movie *movie, QList<int> infos) { movie->clear(infos); movie->setId(ids.values().first()); QUrl url = QUrl(QString("http://www.imdb.com/title/%1/").arg(ids.values().first()).toUtf8()); QNetworkRequest request = QNetworkRequest(url); request.setRawHeader("Accept-Language", "en;q=0.8"); QNetworkReply *reply = qnam()->get(request); reply->setProperty("storage", Storage::toVariant(reply, movie)); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); connect(reply, SIGNAL(finished()), this, SLOT(onLoadFinished())); }
/** * @brief Starts network requests to download infos from TheTvDb * @param id TheTvDb show ID * @param show Tv show object * @see TheTvDb::onLoadFinished */ void TheTvDb::loadTvShowData(QString id, TvShow *show, TvShowUpdateType updateType, QList<int> infosToLoad) { Q_UNUSED(infosToLoad) show->setTvdbId(id); QString mirror = m_xmlMirrors.at(qrand()%m_xmlMirrors.count()); QUrl url(QString("%1/api/%2/series/%3/all/%4.xml").arg(mirror).arg(m_apiKey).arg(id).arg(m_language)); show->setEpisodeGuideUrl(QString("%1/api/%2/series/%3/all/%4.zip").arg(mirror).arg(m_apiKey).arg(id).arg(m_language)); QNetworkReply *reply = qnam()->get(QNetworkRequest(url)); reply->setProperty("storage", Storage::toVariant(reply, show)); reply->setProperty("updateType", updateType); reply->setProperty("infosToLoad", Storage::toVariant(reply, infosToLoad)); connect(reply, SIGNAL(finished()), this, SLOT(onLoadFinished())); }
/** * @brief Starts network requests to download infos from OFDb * @param id OFDb movie ID * @param movie Movie object * @param infos List of infos to load * @see OFDb::loadFinished */ void OFDb::loadData(QString id, Movie *movie, QList<int> infos) { qDebug() << "Entered, id=" << id << "movie=" << movie->name(); movie->clear(infos); QUrl url(QString("http://ofdbgw.org/movie/%1").arg(id)); QNetworkReply *reply = qnam()->get(QNetworkRequest(url)); reply->setProperty("storage", Storage::toVariant(reply, movie)); reply->setProperty("ofdbId", id); reply->setProperty("notFoundCounter", 0); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); connect(reply, SIGNAL(finished()), this, SLOT(loadFinished())); }
void UniversalMusicScraper::loadData(QString mbId, Artist *artist, QList<int> infos) { // Otherwise deleted images are showing up again infos.removeOne(MusicScraperInfos::ExtraFanarts); artist->clear(infos); artist->setMbId(mbId); artist->setAllMusicId(""); QUrl url(QString("http://www.musicbrainz.org/ws/2/artist/%1?inc=url-rels").arg(mbId)); QNetworkReply *reply = qnam()->get(QNetworkRequest(url)); reply->setProperty("storage", Storage::toVariant(reply, artist)); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); connect(reply, SIGNAL(finished()), this, SLOT(onArtistRelsFinished())); }
void Cinefacts::imagesFinished() { QNetworkReply *reply = static_cast<QNetworkReply*>(QObject::sender()); Movie *movie = reply->property("storage").value<Storage*>()->movie(); QList<int> infos = reply->property("infosToLoad").value<Storage*>()->infosToLoad(); reply->deleteLater(); if (!movie) return; if (reply->error() == QNetworkReply::NoError) { QString msg = QString::fromUtf8(reply->readAll()); QStringList posters; QStringList backdrops; parseImages(msg, posters, backdrops); if (posters.count() > 0 && infos.contains(MovieScraperInfos::Poster)) { reply = qnam()->get(QNetworkRequest(QUrl(QString("http://www.cinefacts.de%1").arg(posters.takeFirst())))); reply->setProperty("storage", Storage::toVariant(reply, movie)); reply->setProperty("posters", posters); reply->setProperty("backdrops", backdrops); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); connect(reply, SIGNAL(finished()), this, SLOT(posterFinished())); return; } if (posters.count() > 0 && infos.contains(MovieScraperInfos::Backdrop)) { reply = qnam()->get(QNetworkRequest(QUrl(QString("http://www.cinefacts.de%1").arg(backdrops.takeFirst())))); reply->setProperty("storage", Storage::toVariant(reply, movie)); reply->setProperty("backdrops", backdrops); reply->setProperty("infosToLoad", Storage::toVariant(reply, infos)); connect(reply, SIGNAL(finished()), this, SLOT(backdropFinished())); return; } } else { qWarning() << "Network Error" << reply->errorString(); } movie->controller()->scraperLoadDone(this); }
void IMDB::search(QString searchStr) { QString encodedSearch = Helper::urlEncode(searchStr); QUrl url; QRegExp rx("^tt\\d+$"); if (rx.exactMatch(searchStr)) url = QUrl::fromEncoded(QString("http://mymovieapi.com/?id=%1&type=json&plot=full&episode=0&limit=5&yg=0&mt=M&lang=en-US").arg(searchStr).toUtf8()); else url = QUrl::fromEncoded(QString("http://mymovieapi.com/?title=%1&type=json&plot=full&episode=0&limit=5&yg=0&mt=M&lang=en-US").arg(encodedSearch).toUtf8()); QNetworkRequest request(url); request.setRawHeader("Accept", "application/json"); QNetworkReply *reply = qnam()->get(request); connect(reply, SIGNAL(finished()), this, SLOT(onSearchFinished())); }
/** * @brief Searches for a movie * @param searchStr The Movie name/search string * @see OFDb::searchFinished */ void OFDb::search(QString searchStr) { qDebug() << "Entered, searchStr=" << searchStr; QString encodedSearch = Helper::toLatin1PercentEncoding(searchStr); QUrl url; QRegExp rxId("^id\\d+$"); if (rxId.exactMatch(searchStr)) url.setUrl(QString("http://www.ofdbgw.org/movie/%1").arg(searchStr.mid(2)).toUtf8()); else url.setUrl(QString("http://www.ofdbgw.org/search/%1").arg(encodedSearch).toUtf8()); QNetworkReply *reply = qnam()->get(QNetworkRequest(url)); reply->setProperty("searchString", searchStr); reply->setProperty("notFoundCounter", 0); connect(reply, SIGNAL(finished()), this, SLOT(searchFinished())); }
void Cinefacts::actorsFinished() { 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()); parseAndAssignActors(msg, movie, reply->property("infosToLoad").value<Storage*>()->infosToLoad()); reply = qnam()->get(QNetworkRequest(QUrl(QString("http://www.cinefacts.de/Filme/%1/Bildergalerie/").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(imagesFinished())); } else { qWarning() << "Network Error" << reply->errorString(); movie->controller()->scraperLoadDone(this); } }