aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Blake <oak99sky@yahoo.co.uk>2018-11-03 10:37:19 +0000
committerGitHub <noreply@github.com>2018-11-03 10:37:19 +0000
commitf2611f380327af0da465f97f03f6aa3094a8cc41 (patch)
treef633820620a82a86fa7ef1dbd86ecf0a73eef12d
parent6f7224cd0f3a58e85022e0629331a30764291b0e (diff)
parentc3da99f138c0e57d2caca06cf3622f83ac029d5a (diff)
Merge pull request #14667 from rmrector/movieset-artwork-whitelist
whitelist movie set artwork from scrapers/NFO files
-rw-r--r--xbmc/settings/AdvancedSettings.cpp2
-rw-r--r--xbmc/settings/AdvancedSettings.h1
-rw-r--r--xbmc/video/VideoDatabase.cpp2
-rw-r--r--xbmc/video/VideoInfoScanner.cpp5
-rw-r--r--xbmc/video/VideoThumbLoader.cpp54
5 files changed, 50 insertions, 14 deletions
diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp
index 4e66fc55e9..1da4b9cdf9 100644
--- a/xbmc/settings/AdvancedSettings.cpp
+++ b/xbmc/settings/AdvancedSettings.cpp
@@ -321,6 +321,7 @@ void CAdvancedSettings::Initialize()
m_videoTvShowExtraArt = {};
m_videoTvSeasonExtraArt = {};
m_videoMovieExtraArt = {};
+ m_videoMovieSetExtraArt = {};
m_videoMusicVideoExtraArt = {};
m_iEpgUpdateCheckInterval = 300; /* check if tables need to be updated every 5 minutes */
@@ -800,6 +801,7 @@ void CAdvancedSettings::ParseSettingsFile(const std::string &file)
SetExtraArtwork(pElement->FirstChildElement("tvshowextraart"), m_videoTvShowExtraArt);
SetExtraArtwork(pElement->FirstChildElement("tvseasonextraart"), m_videoTvSeasonExtraArt);
SetExtraArtwork(pElement->FirstChildElement("movieextraart"), m_videoMovieExtraArt);
+ SetExtraArtwork(pElement->FirstChildElement("moviesetextraart"), m_videoMovieSetExtraArt);
SetExtraArtwork(pElement->FirstChildElement("musicvideoextraart"), m_videoMusicVideoExtraArt);
}
diff --git a/xbmc/settings/AdvancedSettings.h b/xbmc/settings/AdvancedSettings.h
index d74575a8c9..2c353d476b 100644
--- a/xbmc/settings/AdvancedSettings.h
+++ b/xbmc/settings/AdvancedSettings.h
@@ -269,6 +269,7 @@ class CAdvancedSettings : public ISettingCallback, public ISettingsHandler
std::vector<std::string> m_videoTvShowExtraArt;
std::vector<std::string> m_videoTvSeasonExtraArt;
std::vector<std::string> m_videoMovieExtraArt;
+ std::vector<std::string> m_videoMovieSetExtraArt;
std::vector<std::string> m_videoMusicVideoExtraArt;
bool m_bVideoScannerIgnoreErrors;
diff --git a/xbmc/video/VideoDatabase.cpp b/xbmc/video/VideoDatabase.cpp
index 668547a79f..13c6aab5ce 100644
--- a/xbmc/video/VideoDatabase.cpp
+++ b/xbmc/video/VideoDatabase.cpp
@@ -4515,7 +4515,7 @@ bool CVideoDatabase::HasArtForItem(int mediaId, const MediaType &mediaType)
if (NULL == m_pDB.get()) return false;
if (NULL == m_pDS2.get()) return false; // using dataset 2 as we're likely called in loops on dataset 1
- std::string sql = PrepareSQL("SELECT count(*) FROM art WHERE media_id=%i AND media_type='%s'", mediaId, mediaType.c_str());
+ std::string sql = PrepareSQL("SELECT 1 FROM art WHERE media_id=%i AND media_type='%s' LIMIT 1", mediaId, mediaType.c_str());
m_pDS2->query(sql);
bool result = !m_pDS2->eof();
m_pDS2->close();
diff --git a/xbmc/video/VideoInfoScanner.cpp b/xbmc/video/VideoInfoScanner.cpp
index 7f96553d49..470e97f803 100644
--- a/xbmc/video/VideoInfoScanner.cpp
+++ b/xbmc/video/VideoInfoScanner.cpp
@@ -1443,6 +1443,11 @@ namespace VIDEO
std::vector<std::string> artTypes = CVideoThumbLoader::GetArtTypes(ContentToMediaType(content, pItem->m_bIsFolder));
bool lookForThumb = find(artTypes.begin(), artTypes.end(), "thumb") == artTypes.end() &&
art.find("thumb") == art.end();
+ if (content == CONTENT_MOVIES)
+ {
+ for (std::string artType : CVideoThumbLoader::GetArtTypes(MediaTypeVideoCollection))
+ artTypes.push_back("set." + artType);
+ }
// find local art
if (useLocal)
{
diff --git a/xbmc/video/VideoThumbLoader.cpp b/xbmc/video/VideoThumbLoader.cpp
index 211cfa3de9..6000f65294 100644
--- a/xbmc/video/VideoThumbLoader.cpp
+++ b/xbmc/video/VideoThumbLoader.cpp
@@ -8,6 +8,7 @@
#include "VideoThumbLoader.h"
+#include <algorithm>
#include <cstdlib>
#include <utility>
@@ -223,36 +224,63 @@ std::vector<std::string> CVideoThumbLoader::GetArtTypes(const std::string &type)
{
const std::shared_ptr<CAdvancedSettings> advancedSettings = CServiceBroker::GetSettingsComponent()->GetAdvancedSettings();
std::vector<std::string> ret;
- std::vector<std::string> extraart;
if (type == MediaTypeEpisode)
{
- ret = { "thumb" };
- extraart = advancedSettings->m_videoEpisodeExtraArt;
+ ret = {"thumb"};
+ for (auto& artType : advancedSettings->m_videoEpisodeExtraArt)
+ {
+ if (find(ret.begin(), ret.end(), artType) == ret.end())
+ ret.push_back(artType);
+ }
}
else if (type == MediaTypeTvShow)
{
- ret = { "poster", "fanart", "banner" };
- extraart = advancedSettings->m_videoTvShowExtraArt;
+ ret = {"poster", "fanart", "banner"};
+ for (auto& artType : advancedSettings->m_videoTvShowExtraArt)
+ {
+ if (find(ret.begin(), ret.end(), artType) == ret.end())
+ ret.push_back(artType);
+ }
}
else if (type == MediaTypeSeason)
{
- ret = { "poster", "fanart", "banner" };
- extraart = advancedSettings->m_videoTvSeasonExtraArt;
+ ret = {"poster", "fanart", "banner"};
+ for (auto& artType : advancedSettings->m_videoTvSeasonExtraArt)
+ {
+ if (find(ret.begin(), ret.end(), artType) == ret.end())
+ ret.push_back(artType);
+ }
+ }
+ else if (type == MediaTypeMovie)
+ {
+ ret = {"poster", "fanart"};
+ for (auto& artType : advancedSettings->m_videoMovieExtraArt)
+ {
+ if (find(ret.begin(), ret.end(), artType) == ret.end())
+ ret.push_back(artType);
+ }
}
- else if (type == MediaTypeMovie || type == MediaTypeVideoCollection)
+ else if (type == MediaTypeVideoCollection)
{
- ret = { "poster", "fanart" };
- extraart = advancedSettings->m_videoMovieExtraArt;
+ ret = {"poster", "fanart"};
+ for (auto& artType : advancedSettings->m_videoMovieSetExtraArt)
+ {
+ if (find(ret.begin(), ret.end(), artType) == ret.end())
+ ret.push_back(artType);
+ }
}
else if (type == MediaTypeMusicVideo)
{
- ret = { "poster", "fanart" };
- extraart = advancedSettings->m_videoMusicVideoExtraArt;
+ ret = {"poster", "fanart"};
+ for (auto& artType : advancedSettings->m_videoMusicVideoExtraArt)
+ {
+ if (find(ret.begin(), ret.end(), artType) == ret.end())
+ ret.push_back(artType);
+ }
}
else if (type.empty()) // unknown, just the basics
ret = { "poster", "fanart", "banner", "thumb" };
- ret.insert(ret.end(), extraart.begin(), extraart.end());
return ret;
}