Add settings. Add searching by movie title on TheMovieDB.

This commit is contained in:
Adam Bissen 2023-12-25 18:02:14 +00:00
parent dc43da0e0e
commit d364cfd0b7
4 changed files with 74 additions and 2 deletions

View File

@ -4,7 +4,7 @@ project(DoViGUI VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 6.4 REQUIRED COMPONENTS Quick Core)
find_package(Qt6 6.4 REQUIRED COMPONENTS Quick Core Network)
qt_standard_project_setup()
@ -20,6 +20,10 @@ qt_add_qml_module(appDoViGUI
SOURCES QMediaInfo.h QMediaInfo.cpp
RESOURCES MediaInfo.dll
SOURCES QHandbrake.h QHandbrake.cpp
SOURCES
SOURCES
SOURCES
SOURCES qmoviedb.h qmoviedb.cpp
)
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
@ -34,7 +38,7 @@ set_target_properties(appDoViGUI PROPERTIES
)
target_link_libraries(appDoViGUI
PRIVATE Qt6::Quick Qt6::Core
PRIVATE Qt6::Quick Qt6::Core Qt6::Network
)
include(GNUInstallDirs)

View File

@ -2,17 +2,31 @@
#include <QQmlApplicationEngine>
#include <QMediaInfo.h>
#include <QHandbrake.h>
#include "qmoviedb.h"
#include <QFile>
#include <QQmlContext>
#include <QSettings>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QCoreApplication::setOrganizationName("abissen");
QCoreApplication::setApplicationName("DoViGUI");
QSettings settings;
QMediaInfo mInfo(&app);
if (QString::compare(settings.value("MovieDB API Key").toString(), "", Qt::CaseInsensitive) == 0) {
qWarning() << "Set MovieDB API key in settings file.";
settings.setValue("MovieDB API Key", "");
}
QMovieDB movieDB(settings.value("MovieDB API Key").toString());
movieDB.searchMovieTitle("The Shawshank Redemption");
// //Check if HDR/DolbyVision
// enum QMediaInfo::HDR_Type hdrType = mInfo.getHDRType(__T("Cosmos.mkv"));
// if (hdrType >= 0) {

29
DoViGUI/qmoviedb.cpp Normal file
View File

@ -0,0 +1,29 @@
#include "qmoviedb.h"
#include "QNetworkReply"
#include "QDebug"
QMovieDB::QMovieDB(QString apiKey, QObject *parent)
: QObject{parent}, netMan(new QNetworkAccessManager(this)) {
movieDbApiKey = apiKey;
QObject::connect(netMan, &QNetworkAccessManager::finished, this, &QMovieDB::receiveReply);
}
void QMovieDB::searchMovieTitle(const QString title)
{
QNetworkRequest req;
req.setRawHeader("Accept", "application/json");
QString bearer = "Bearer " + movieDbApiKey;
req.setRawHeader("Authorization", bearer.toUtf8());
QByteArray URL = QUrl::toPercentEncoding(title);
URL = "https://api.themoviedb.org/3/search/movie?query=" + URL + "&include_adult=false&language=en-US&page=1";
req.setUrl(QUrl(URL));
netMan->get(req);
}
void QMovieDB::receiveReply(QNetworkReply *reply)
{
qInfo() << reply->readAll();
}

25
DoViGUI/qmoviedb.h Normal file
View File

@ -0,0 +1,25 @@
#ifndef QMOVIEDB_H
#define QMOVIEDB_H
#include <QObject>
#include <QNetworkAccessManager>
class QMovieDB : public QObject
{
Q_OBJECT
public:
explicit QMovieDB(QString apiKey, QObject *parent = nullptr);
QNetworkAccessManager *netMan;
void searchMovieTitle(const QString title);
private:
QString movieDbApiKey;
private slots:
void receiveReply(QNetworkReply *reply);
signals:
};
#endif // QMOVIEDB_H