diff options
author | Dave Blake <oak99sky@yahoo.co.uk> | 2018-11-03 10:37:19 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-03 10:37:19 +0000 |
commit | f2611f380327af0da465f97f03f6aa3094a8cc41 (patch) | |
tree | f633820620a82a86fa7ef1dbd86ecf0a73eef12d | |
parent | 6f7224cd0f3a58e85022e0629331a30764291b0e (diff) | |
parent | c3da99f138c0e57d2caca06cf3622f83ac029d5a (diff) |
Merge pull request #14667 from rmrector/movieset-artwork-whitelist
whitelist movie set artwork from scrapers/NFO files
-rw-r--r-- | xbmc/settings/AdvancedSettings.cpp | 2 | ||||
-rw-r--r-- | xbmc/settings/AdvancedSettings.h | 1 | ||||
-rw-r--r-- | xbmc/video/VideoDatabase.cpp | 2 | ||||
-rw-r--r-- | xbmc/video/VideoInfoScanner.cpp | 5 | ||||
-rw-r--r-- | xbmc/video/VideoThumbLoader.cpp | 54 |
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; } |