From c44222b74aaaa52bac11b6c04daec34d4606eba0 Mon Sep 17 00:00:00 2001 From: Jacek Jendrzej Date: Thu, 27 Feb 2020 12:41:54 +0100 Subject: [PATCH] TMDB: second try without (*) --- src/gui/tmdb.cpp | 44 ++++++++++++++++++++++++++++---------------- src/gui/tmdb.h | 1 + 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/src/gui/tmdb.cpp b/src/gui/tmdb.cpp index 51cab06da..d424918ec 100644 --- a/src/gui/tmdb.cpp +++ b/src/gui/tmdb.cpp @@ -82,25 +82,45 @@ void cTmdb::setTitle(std::string epgtitle) hintbox.hide(); } -bool cTmdb::GetMovieDetails(std::string lang, bool second) +bool cTmdb::GetData(std::string url, Json::Value *root) { - 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 answer; if (!getUrl(url, answer)) return false; std::string errMsg = ""; - Json::Value root; - bool ok = parseJsonFromString(answer, &root, &errMsg); + bool ok = parseJsonFromString(answer, root, &errMsg); if (!ok) { printf("Failed to parse JSON\n"); printf("%s\n", errMsg.c_str()); return false; } + return true; +} + +bool cTmdb::GetMovieDetails(std::string lang, bool second) +{ + printf("[TMDB]: %s\n",__func__); + Json::Value root; + const std::string urlapi = "http://api.themoviedb.org/3/"; + std::string url = urlapi + "search/multi?api_key="+key+"&language="+lang+"&query=" + encodeUrl(minfo.epgtitle); + if(!(GetData(url, &root))) + return false; minfo.result = root.get("total_results",0).asInt(); - + if(minfo.result == 0){ + std::string title = minfo.epgtitle; + size_t pos1 = title.find_last_of("("); + size_t pos2 = title.find_last_of(")"); + if(pos1 != std::string::npos && pos2 != std::string::npos && pos2 > pos1){ + printf("[TMDB]: second try\n"); + title.replace(pos1, pos2-pos1+1, ""); + url = urlapi + "search/multi?api_key="+key+"&language="+lang+"&query=" + encodeUrl(title); + if(!(GetData(url, &root))) + return false; + } + minfo.result = root.get("total_results",0).asInt(); + } printf("[TMDB]: results: %d\n",minfo.result); if (minfo.result > 0) { @@ -115,18 +135,10 @@ bool cTmdb::GetMovieDetails(std::string lang, bool second) minfo.media_type = elements[use_result].get("media_type","").asString(); } 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"; - answer.clear(); - if (!getUrl(url, answer)) + url = urlapi+minfo.media_type+"/"+to_string(minfo.id)+"?api_key="+key+"&language="+lang+"&append_to_response=credits"; + if(!(GetData(url, &root))) return false; - ok = parseJsonFromString(answer, &root, &errMsg); - if (!ok) { - printf("Failed to parse JSON\n"); - printf("%s\n", errMsg.c_str()); - return false; - } - minfo.overview = root.get("overview","").asString(); minfo.poster_path = root.get("poster_path","").asString(); minfo.original_title = root.get("original_title","").asString();; diff --git a/src/gui/tmdb.h b/src/gui/tmdb.h index 623ea28a5..bf73bca27 100644 --- a/src/gui/tmdb.h +++ b/src/gui/tmdb.h @@ -52,6 +52,7 @@ class cTmdb std::string key; // tmdb api key bool GetMovieDetails(std::string lang, bool second = false); + bool GetData(std::string url, Json::Value *root); void selectResult(Json::Value elements, int results, int &used_result); public: