- tmdb: add movie selection menu

This commit is contained in:
TangoCash
2020-02-25 22:54:14 +01:00
committed by Thilo Graf
parent f71e5a1e5f
commit f17fe7e432
4 changed files with 49 additions and 9 deletions

View File

@@ -20,6 +20,7 @@ AM_CPPFLAGS = \
-I$(top_srcdir)/lib/xmltree \ -I$(top_srcdir)/lib/xmltree \
-I$(top_srcdir)/lib/libmd5sum \ -I$(top_srcdir)/lib/libmd5sum \
-I$(top_srcdir)/lib/libupnpclient \ -I$(top_srcdir)/lib/libupnpclient \
-I$(top_srcdir)/lib/jsoncpp \
@SIGC_CFLAGS@ \ @SIGC_CFLAGS@ \
@FREETYPE_CFLAGS@ \ @FREETYPE_CFLAGS@ \
@AVFORMAT_CFLAGS@ \ @AVFORMAT_CFLAGS@ \

View File

@@ -9,6 +9,7 @@ AM_CPPFLAGS += \
-I$(top_srcdir)/lib/libeventserver \ -I$(top_srcdir)/lib/libeventserver \
-I$(top_srcdir)/lib/libconfigfile \ -I$(top_srcdir)/lib/libconfigfile \
-I$(top_srcdir)/lib/xmltree \ -I$(top_srcdir)/lib/xmltree \
-I$(top_srcdir)/lib/jsoncpp \
@SIGC_CFLAGS@ \ @SIGC_CFLAGS@ \
@FREETYPE_CFLAGS@ \ @FREETYPE_CFLAGS@ \
@LUA_CFLAGS@ \ @LUA_CFLAGS@ \

View File

@@ -1,5 +1,5 @@
/* /*
Copyright (C) 2015,2018 TangoCash Copyright (C) 2015-2020 TangoCash
License: GPLv2 License: GPLv2
@@ -33,15 +33,15 @@
#include <set> #include <set>
#include <string> #include <string>
#include <neutrino.h>
#include "system/settings.h" #include "system/settings.h"
#include <system/helpers-json.h>
#include "system/set_threadname.h" #include "system/set_threadname.h"
#include "gui/widget/hintbox.h" #include "gui/widget/hintbox.h"
#include <driver/screen_max.h> #include <driver/screen_max.h>
#include <global.h> #include <global.h>
#include <json/json.h>
#include "tmdb.h" #include "tmdb.h"
@@ -77,12 +77,12 @@ void cTmdb::setTitle(std::string epgtitle)
std::string lang = Lang2ISO639_1(g_settings.language); std::string lang = Lang2ISO639_1(g_settings.language);
GetMovieDetails(lang); GetMovieDetails(lang);
if ((minfo.result < 1 || minfo.overview.empty()) && lang != "en") if ((minfo.result < 1 || minfo.overview.empty()) && lang != "en")
GetMovieDetails("en"); GetMovieDetails("en", true);
hintbox.hide(); hintbox.hide();
} }
bool cTmdb::GetMovieDetails(std::string lang) bool cTmdb::GetMovieDetails(std::string lang, bool second)
{ {
printf("[TMDB]: %s\n",__func__); printf("[TMDB]: %s\n",__func__);
std::string url = "http://api.themoviedb.org/3/search/multi?api_key="+key+"&language="+lang+"&query=" + encodeUrl(minfo.epgtitle); std::string url = "http://api.themoviedb.org/3/search/multi?api_key="+key+"&language="+lang+"&query=" + encodeUrl(minfo.epgtitle);
@@ -105,8 +105,15 @@ bool cTmdb::GetMovieDetails(std::string lang)
if (minfo.result > 0) { if (minfo.result > 0) {
Json::Value elements = root["results"]; Json::Value elements = root["results"];
minfo.id = elements[0].get("id",-1).asInt(); int use_result = 0;
minfo.media_type = elements[0].get("media_type","").asString();
if ((minfo.result > 1) && (!second))
selectResult(elements, minfo.result, use_result);
if (!second) {
minfo.id = elements[use_result].get("id",-1).asInt();
minfo.media_type = elements[use_result].get("media_type","").asString();
}
if (minfo.id > -1) { if (minfo.id > -1) {
url = "http://api.themoviedb.org/3/"+minfo.media_type+"/"+to_string(minfo.id)+"?api_key="+key+"&language="+lang+"&append_to_response=credits"; url = "http://api.themoviedb.org/3/"+minfo.media_type+"/"+to_string(minfo.id)+"?api_key="+key+"&language="+lang+"&append_to_response=credits";
answer.clear(); answer.clear();
@@ -191,3 +198,32 @@ void cTmdb::cleanup()
if (access(TMDB_COVER, F_OK) == 0) if (access(TMDB_COVER, F_OK) == 0)
unlink(TMDB_COVER); unlink(TMDB_COVER);
} }
void cTmdb::selectResult(Json::Value elements, int results, int &use_result)
{
int select = 0;
CMenuWidget *m = new CMenuWidget(LOCALE_TMDB_READ_DATA, NEUTRINO_ICON_SETTINGS);
CMenuSelectorTarget * selector = new CMenuSelectorTarget(&select);
// we don't show introitems, so we add a separator for a smoother view
m->addItem(GenericMenuSeparator);
CMenuForwarder* mf;
int counter = std::min(results, 10);
for (int i = 0; i != counter; i++)
{
if (elements[i].get("media_type","").asString() == "movie")
mf = new CMenuForwarder(elements[i].get("title","").asString(), true, NULL, selector, to_string(i).c_str());
else
mf = new CMenuForwarder(elements[i].get("name","").asString(), true, NULL, selector, to_string(i).c_str());
m->addItem(mf);
}
m->enableSaveScreen();
m->exec(NULL, "");
if (!m->gotAction())
return;
delete selector;
m->hide();
use_result = select;
}

View File

@@ -1,5 +1,5 @@
/* /*
Copyright (C) 2015 TangoCash Copyright (C) 2015-2020 TangoCash
License: GPLv2 License: GPLv2
@@ -22,6 +22,7 @@
#include <string> #include <string>
#include "system/helpers.h" #include "system/helpers.h"
#include <system/helpers-json.h>
#define TMDB_COVER "/tmp/tmdb.jpg" #define TMDB_COVER "/tmp/tmdb.jpg"
@@ -50,7 +51,8 @@ class cTmdb
tmdbinfo minfo; tmdbinfo minfo;
std::string key; // tmdb api key std::string key; // tmdb api key
bool GetMovieDetails(std::string lang); bool GetMovieDetails(std::string lang, bool second = false);
void selectResult(Json::Value elements, int results, int &used_result);
public: public:
cTmdb(); cTmdb();