From dbb113e0da7826df225d51b6955131368e732cda Mon Sep 17 00:00:00 2001 From: birkeh Date: Sat, 4 Nov 2017 11:41:41 +0100 Subject: [PATCH] . --- cmainwindow.cpp | 30 +++++++++++++--------- cserie.cpp | 64 +++++++++++++++++++++++++++++++++++++++++++++-- cserie.h | 20 +++++++++++++++ cthemoviedbv3.cpp | 13 ++++++++-- 4 files changed, 111 insertions(+), 16 deletions(-) diff --git a/cmainwindow.cpp b/cmainwindow.cpp index f202d1a..ece3dfb 100644 --- a/cmainwindow.cpp +++ b/cmainwindow.cpp @@ -208,6 +208,11 @@ void cMainWindow::initDB() " cast STRING," " crew STRING," " genre STRING," + " imdbid STRING," + " freebasemid STRING," + " freebaseid STRING," + " tvdbid INTEGER," + " tvrageid INTEGER," " status STRING," " download STRING," " cliffhanger BOOL);"); @@ -341,15 +346,6 @@ void cMainWindow::convertSeries() lpSerie = 0; } } -/* - qint16 _id(); - QDate airDate(); - QString name(); - QString overview(); - qint16 id(); - QString posterPath(); - qint16 seasonNumber(); -*/ void cMainWindow::loadSeriesDB() { @@ -388,6 +384,11 @@ void cMainWindow::loadSeriesDB() " serie.cast cast," " serie.crew crew," " serie.genre genre," + " serie.imdbid imdbid," + " serie.freebasemid freebasemid," + " serie.freebaseid freebaseid," + " serie.tvdbid tvdbid," + " serie.tvrageid tvrageid," " serie.status status," " serie.download download," " serie.cliffhanger cliffhanger," @@ -460,6 +461,11 @@ void cMainWindow::loadSeriesDB() lpSerie->setCast(query.value("cast").toString().split("|")); lpSerie->setCrew(query.value("crew").toString().split("|")); lpSerie->setGenre(query.value("genre").toString()); + lpSerie->setIMDBID(query.value("imdbid").toString()); + lpSerie->setFreebaseMID(query.value("freebasemid").toString()); + lpSerie->setFreebaseID(query.value("freebaseid").toString()); + lpSerie->setTVDBID(query.value("tvdbid").toInt()); + lpSerie->setTVRageID(query.value("tvrageid").toInt()); lpSerie->setStatus(query.value("status").toString()); lpSerie->setDownload(query.value("download").toString()); lpSerie->setCliffhanger(query.value("cliffhanger").toBool()); @@ -1361,7 +1367,6 @@ void cMainWindow::onActionEdit() { QModelIndex index = ui->m_lpSeriesList1->selectionModel()->selectedRows().at(0); -// cSerie* lpSerie = m_lpSeriesListModel->itemFromIndex(ui->m_lpSeriesList1->selectionModel()->selectedRows().at(0))->data(Qt::UserRole).value(); cSerie* lpSerie = m_lpSeriesListModel->itemFromIndex(index)->data(Qt::UserRole).value(); if(!lpSerie) return; @@ -1381,8 +1386,9 @@ void cMainWindow::onActionEdit() lpSerie->del(m_db); lpSerie->save(m_db); - emit m_lpSeriesListModel->layoutChanged(); - +// emit m_lpSeriesListModel->layoutChanged(); + emit ui->m_lpSeriesList1->model()->layoutChanged(); + emit ui->m_lpSeriesList2->model()->layoutChanged(); delete lpDialog; } diff --git a/cserie.cpp b/cserie.cpp index 1ecfb8d..5645d70 100644 --- a/cserie.cpp +++ b/cserie.cpp @@ -25,6 +25,11 @@ cSerie::cSerie() : m_iVoteCount(-1), m_szOverview(""), m_firstAired(QDate(1900, 1, 1)), + m_szIMDBID(""), + m_szFreebaseMID(""), + m_szFreebaseID(""), + m_iTVDBID(-1), + m_iTVRageID(-1), m_szStatus(""), m_szDownload(""), m_bCliffhanger(false) @@ -311,6 +316,56 @@ QStringList cSerie::genre() return(m_szGenre); } +void cSerie::setIMDBID(const QString& szIMDBID) +{ + m_szIMDBID = szIMDBID; +} + +QString cSerie::IMDBID() +{ + return(m_szIMDBID); +} + +void cSerie::setFreebaseMID(const QString& szFreebaseMID) +{ + m_szFreebaseMID = szFreebaseMID; +} + +QString cSerie::freebaseMID() +{ + return(m_szFreebaseMID); +} + +void cSerie::setFreebaseID(const QString& szFreebaseID) +{ + m_szFreebaseID = szFreebaseID; +} + +QString cSerie::freebaseID() +{ + return(m_szFreebaseID); +} + +void cSerie::setTVDBID(const qint16& iTVDBID) +{ + m_iTVDBID = iTVDBID; +} + +qint16 cSerie::tvdbID() +{ + return(m_iTVDBID); +} + +void cSerie::setTVRageID(const qint16& iTVRageID) +{ + m_iTVRageID = iTVRageID; +} + +qint16 cSerie::tvrageID() +{ + return(m_iTVRageID); +} + void cSerie::setStatus(const QString& szStatus) { m_szStatus = szStatus; @@ -430,8 +485,8 @@ bool cSerie::save(QSqlDatabase &db) QSqlQuery querySeason; QSqlQuery queryEpisode; - querySerie.prepare("INSERT INTO serie (seriesID,seriesName,originalName,backdropPath,createdBy,homepage,lastAired,languages,networks,nrEpisodes,nrSeasons,originCountries,originalLanguage,popularity,posterPath,productionCompanies,type,voteAverage,voteCount,overview,firstAired,cast,crew,genre,status,download,cliffhanger)" - " VALUES (:seriesID,:seriesName,:originalName,:backdropPath,:createdBy,:homepage,:lastAired,:languages,:networks,:nrEpisodes,:nrSeasons,:originCountries,:originalLanguage,:popularity,:posterPath,:productionCompanies,:type,:voteAverage,:voteCount,:overview,:firstAired,:cast,:crew,:genre,:status,:download,:cliffhanger);"); + querySerie.prepare("INSERT INTO serie (seriesID,seriesName,originalName,backdropPath,createdBy,homepage,lastAired,languages,networks,nrEpisodes,nrSeasons,originCountries,originalLanguage,popularity,posterPath,productionCompanies,type,voteAverage,voteCount,overview,firstAired,cast,crew,genre,imdbid,freebasemid,freebaseid,tvdbid,tvrageid,status,download,cliffhanger)" + " VALUES (:seriesID,:seriesName,:originalName,:backdropPath,:createdBy,:homepage,:lastAired,:languages,:networks,:nrEpisodes,:nrSeasons,:originCountries,:originalLanguage,:popularity,:posterPath,:productionCompanies,:type,:voteAverage,:voteCount,:overview,:firstAired,:cast,:crew,:genre,:imdbid,:freebasemid,:freebaseid,:tvdbid,:tvrageid,:status,:download,:cliffhanger);"); querySeason.prepare("INSERT INTO season (_id,airDate,name,overview,id,posterPath,seasonNumber,seriesID) VALUES (:_id,:airDate,:name,:overview,:id,:posterPath,:seasonNumber,:seriesID);"); queryEpisode.prepare("INSERT INTO episode (id,name,episodeNumber,airDate,guestStars,overview,productioncode,seasonNumber,seasonID,seriesID,stillPath,voteAverage,voteCount,crew,state)" " VALUES (:id,:name,:episodeNumber,:airDate,:guestStars,:overview,:productioncode,:seasonNumber,:seasonID,:seriesID,:stillPath,:voteAverage,:voteCount,:crew,:state);"); @@ -465,6 +520,11 @@ bool cSerie::save(QSqlDatabase &db) querySerie.bindValue(":cast", cast().join("|")); querySerie.bindValue(":crew", crew().join("|")); querySerie.bindValue(":genre", genre().join(",")); + querySerie.bindValue(":imdbid", IMDBID()); + querySerie.bindValue(":freebasemid", freebaseMID()); + querySerie.bindValue(":freebaseid", freebaseID()); + querySerie.bindValue(":tvdbid", tvdbID()); + querySerie.bindValue("tvrageid", tvrageID()); querySerie.bindValue(":status", status()); querySerie.bindValue(":download", download()); querySerie.bindValue(":cliffhanger", cliffhanger()); diff --git a/cserie.h b/cserie.h index 163e9da..b69e076 100644 --- a/cserie.h +++ b/cserie.h @@ -94,6 +94,21 @@ public: void setGenre(const QStringList& szGenre); QStringList genre(); + void setIMDBID(const QString& szIMDBID); + QString IMDBID(); + + void setFreebaseMID(const QString& szFreebaseMID); + QString freebaseMID(); + + void setFreebaseID(const QString& szFreebaseID); + QString freebaseID(); + + void setTVDBID(const qint16& iTVDBID); + qint16 tvdbID(); + + void setTVRageID(const qint16& iTVRageID); + qint16 tvrageID(); + void setStatus(const QString& szStatus); QString status(); @@ -155,6 +170,11 @@ private: QStringList m_szCast; QStringList m_szCrew; QStringList m_szGenre; + QString m_szIMDBID; + QString m_szFreebaseMID; + QString m_szFreebaseID; + qint16 m_iTVDBID; + qint16 m_iTVRageID; QString m_szStatus; QString m_szDownload; bool m_bCliffhanger; diff --git a/cthemoviedbv3.cpp b/cthemoviedbv3.cpp index da6092b..d117306 100644 --- a/cthemoviedbv3.cpp +++ b/cthemoviedbv3.cpp @@ -325,7 +325,7 @@ cSerie* cTheMovieDBV3::loadSerie(const qint32 &iID, const QString& szLanguage) { cSerie* lpSerie = 0; QNetworkAccessManager networkManager; - QNetworkRequest request(QUrl(QString("https://api.themoviedb.org/3/tv/%1?api_key=%2&language=%3&append_to_response=credits").arg(iID).arg(m_szToken).arg(szLanguage))); + QNetworkRequest request(QUrl(QString("https://api.themoviedb.org/3/tv/%1?api_key=%2&language=%3&append_to_response=credits,external_ids").arg(iID).arg(m_szToken).arg(szLanguage))); request.setRawHeader("Content-Type", "application/json"); request.setRawHeader("Authorization", QString("Bearer %1").arg(m_szToken).toUtf8()); @@ -403,8 +403,17 @@ cSerie* cTheMovieDBV3::loadSerie(const qint32 &iID, const QString& szLanguage) lpSerie->setVoteAverage(jsonObj["vote_average"].toDouble()); lpSerie->setVoteCount(jsonObj["vote_count"].toInt()); - QJsonObject creditsObj = jsonObj["credits"].toObject(); + QJsonObject idsObj = jsonObj["external_ids"].toObject(); + if(!idsObj.isEmpty()) + { + lpSerie->setIMDBID(idsObj["imdb_id"].toString()); + lpSerie->setFreebaseMID(idsObj["freebase_mid"].toString()); + lpSerie->setFreebaseID(idsObj["freebase_id"].toString()); + lpSerie->setTVDBID(idsObj["tvdb_id"].toInt()); + lpSerie->setTVRageID(idsObj["tvrage_id"].toInt()); + } + QJsonObject creditsObj = jsonObj["credits"].toObject(); if(!creditsObj.isEmpty()) { QJsonArray jsonArrayCast = creditsObj["cast"].toArray();