You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
2.9 KiB
C++
107 lines
2.9 KiB
C++
#include "cthemoviedbv3.h"
|
|
|
|
|
|
#include <QNetworkAccessManager>
|
|
#include <QNetworkRequest>
|
|
#include <QNetworkReply>
|
|
#include <QEventLoop>
|
|
#include <QByteArray>
|
|
#include <QJsonDocument>
|
|
#include <QJsonObject>
|
|
#include <QJsonArray>
|
|
|
|
|
|
cTheMovieDBV3::cTheMovieDBV3()
|
|
{
|
|
m_szToken = "a33271b9e54cdcb9a80680eaf5522f1b";
|
|
/*
|
|
QNetworkAccessManager networkManager;
|
|
|
|
QNetworkRequest request(QUrl(QString("https://api.themoviedb.org/3/authentication/token/new?api_key=a33271b9e54cdcb9a80680eaf5522f1b")));
|
|
|
|
QNetworkReply* reply = networkManager.get(request);
|
|
QEventLoop loop;
|
|
|
|
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();
|
|
bool success = jsonObj["success"].toBool();
|
|
m_szToken = jsonObj["request_token"].toString();
|
|
|
|
delete reply;
|
|
}
|
|
else
|
|
{
|
|
qDebug() << reply->errorString();
|
|
delete reply;
|
|
}
|
|
*/
|
|
}
|
|
|
|
QList<cMovie*> cTheMovieDBV3::search(const QString& szMovie, const qint16& year, const QString& szLanguage)
|
|
{
|
|
QList<cMovie*> movieList;
|
|
QNetworkAccessManager networkManager;
|
|
QString szRequest = QString("https://api.themoviedb.org/3/search/movie?api_key=%1").arg(m_szToken);
|
|
qint16 page = 1;
|
|
|
|
if(!szLanguage.contains("all"))
|
|
szRequest.append(QString("&language=%1").arg(szLanguage));
|
|
|
|
szRequest.append(QString("&query=%1").arg(szMovie));
|
|
|
|
if(year != -1)
|
|
szRequest.append(QString("&year=%1").arg(year));
|
|
|
|
szRequest.append("&include_adult=false");
|
|
|
|
for(;;)
|
|
{
|
|
QNetworkRequest request(QUrl(QString("%1&page=%2").arg(szRequest).arg(page)));
|
|
|
|
QNetworkReply* reply = networkManager.get(request);
|
|
QEventLoop loop;
|
|
|
|
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();
|
|
QJsonArray jsonArray = jsonObj["results"].toArray();
|
|
|
|
for(int z = 0;z < jsonArray.count();z++)
|
|
{
|
|
QJsonObject movie = jsonArray[z].toObject();
|
|
cMovie* lpMovie = new cMovie;
|
|
// lpSerie->setID(serie["id"].toInt());
|
|
// lpSerie->setSeriesName(serie["seriesName"].toString());
|
|
// lpSerie->setFirstAired(serie["firstAired"].toString());
|
|
lpMovie->setMovieTitle(movie["title"].toString());
|
|
lpMovie->setMovieID(movie["id"].toInt());
|
|
lpMovie->setOriginalTitle(movie["original_title"].toString());
|
|
lpMovie->setReleaseDate(movie["release_date"].toString());
|
|
movieList.append(lpMovie);
|
|
}
|
|
if(jsonObj["total_pages"].toInt() == page)
|
|
break;
|
|
|
|
page++;
|
|
delete reply;
|
|
}
|
|
else
|
|
{
|
|
qDebug() << reply->errorString();
|
|
delete reply;
|
|
}
|
|
}
|
|
return(movieList);
|
|
}
|