From d364cfd0b7c813cc513b04565246e5cc906d4fd9 Mon Sep 17 00:00:00 2001 From: Adam Bissen Date: Mon, 25 Dec 2023 18:02:14 +0000 Subject: [PATCH] Add settings. Add searching by movie title on TheMovieDB. --- DoViGUI/CMakeLists.txt | 8 ++++++-- DoViGUI/main.cpp | 14 ++++++++++++++ DoViGUI/qmoviedb.cpp | 29 +++++++++++++++++++++++++++++ DoViGUI/qmoviedb.h | 25 +++++++++++++++++++++++++ 4 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 DoViGUI/qmoviedb.cpp create mode 100644 DoViGUI/qmoviedb.h diff --git a/DoViGUI/CMakeLists.txt b/DoViGUI/CMakeLists.txt index da5c044..847400a 100644 --- a/DoViGUI/CMakeLists.txt +++ b/DoViGUI/CMakeLists.txt @@ -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) diff --git a/DoViGUI/main.cpp b/DoViGUI/main.cpp index f2e5ed8..d195d3d 100644 --- a/DoViGUI/main.cpp +++ b/DoViGUI/main.cpp @@ -2,17 +2,31 @@ #include #include #include +#include "qmoviedb.h" #include #include +#include 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) { diff --git a/DoViGUI/qmoviedb.cpp b/DoViGUI/qmoviedb.cpp new file mode 100644 index 0000000..44d019b --- /dev/null +++ b/DoViGUI/qmoviedb.cpp @@ -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(); +} diff --git a/DoViGUI/qmoviedb.h b/DoViGUI/qmoviedb.h new file mode 100644 index 0000000..c84e060 --- /dev/null +++ b/DoViGUI/qmoviedb.h @@ -0,0 +1,25 @@ +#ifndef QMOVIEDB_H +#define QMOVIEDB_H + +#include +#include + +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