Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- From f419ae1e224b683f910c6f43120766ca1ef9b3cb Mon Sep 17 00:00:00 2001
- From: "Chris \"Koying\" Browet" <cbro@semperpax.com>
- Date: Sat, 21 Jul 2012 17:43:27 +0200
- Subject: [PATCH] ADD: No-Op scraper support to allow nfo based only library
- ---
- addons/metadata.local/addon.xml | 29 ++++++++++++++++++++++++++
- addons/metadata.local/local.xml | 3 ++
- xbmc/addons/Scraper.cpp | 32 +++++++++++++++++++++++-----
- xbmc/addons/Scraper.h | 1 +
- xbmc/utils/ScraperParser.cpp | 9 ++++++++
- xbmc/utils/ScraperParser.h | 2 +
- xbmc/video/windows/GUIWindowVideoBase.cpp | 2 +-
- 7 files changed, 71 insertions(+), 7 deletions(-)
- create mode 100755 addons/metadata.local/addon.xml
- create mode 100755 addons/metadata.local/local.xml
- diff --git a/addons/metadata.local/addon.xml b/addons/metadata.local/addon.xml
- new file mode 100755
- index 0000000..908656d
- --- /dev/null
- +++ b/addons/metadata.local/addon.xml
- @@ -0,0 +1,29 @@
- +<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
- +<addon id="metadata.local"
- + name="Local information only"
- + version="1.0.0"
- + provider-name="Team XBMC">
- + <requires>
- + <import addon="xbmc.metadata" version="1.0"/>
- + </requires>
- + <extension point="xbmc.metadata.scraper.albums"
- + language="multi"
- + library="local.xml"/>
- + <extension point="xbmc.metadata.scraper.artists"
- + language="multi"
- + library="local.xml"/>
- + <extension point="xbmc.metadata.scraper.musicvideos"
- + language="multi"
- + library="local.xml"/>
- + <extension point="xbmc.metadata.scraper.tvshows"
- + language="multi"
- + library="local.xml"/>
- + <extension point="xbmc.metadata.scraper.movies"
- + language="multi"
- + library="local.xml"/>
- + <extension point="xbmc.addon.metadata">
- + <summary lang="en">Local Infomation only pseudo-scraper</summary>
- + <description lang="en">Use local information only</description>
- + <platform>all</platform>
- + </extension>
- +</addon>
- diff --git a/addons/metadata.local/local.xml b/addons/metadata.local/local.xml
- new file mode 100755
- index 0000000..4d92295
- --- /dev/null
- +++ b/addons/metadata.local/local.xml
- @@ -0,0 +1,3 @@
- +<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
- +<scraper framework="1.1" noop="true">
- +</scraper>
- diff --git a/xbmc/addons/Scraper.cpp b/xbmc/addons/Scraper.cpp
- index 15f2340..b1f3377 100644
- --- a/xbmc/addons/Scraper.cpp
- +++ b/xbmc/addons/Scraper.cpp
- @@ -409,12 +409,23 @@ bool CScraper::IsInUse() const
- return false;
- }
- +bool CScraper::IsNoop()
- +{
- + if (!Load())
- + throw CScraperError();
- +
- + return m_parser.IsNoop();
- +}
- +
- // pass in contents of .nfo file; returns URL (possibly empty if none found)
- // and may populate strId, or throws CScraperError on error
- CScraperUrl CScraper::NfoUrl(const CStdString &sNfoContent)
- {
- CScraperUrl scurlRet;
- + if (IsNoop())
- + return scurlRet;
- +
- // scraper function takes contents of .nfo file, returns XML (see below)
- vector<CStdString> vcsIn;
- vcsIn.push_back(sNfoContent);
- @@ -487,14 +498,18 @@ std::vector<CScraperUrl> CScraper::FindMovie(XFILE::CCurlFile &fcurl, const CStd
- CStdString sTitle, sTitleYear, sYear;
- CUtil::CleanString(sMovie, sTitle, sTitleYear, sYear, true/*fRemoveExt*/, fFirst);
- - if (!fFirst || Content() == CONTENT_MUSICVIDEOS)
- - sTitle.Replace("-"," ");
- -
- CLog::Log(LOGDEBUG, "%s: Searching for '%s' using %s scraper "
- "(path: '%s', content: '%s', version: '%s')", __FUNCTION__, sTitle.c_str(),
- Name().c_str(), Path().c_str(),
- ADDON::TranslateContent(Content()).c_str(), Version().c_str());
- + std::vector<CScraperUrl> vcscurl;
- + if (IsNoop())
- + return vcscurl;
- +
- + if (!fFirst || Content() == CONTENT_MUSICVIDEOS)
- + sTitle.Replace("-"," ");
- +
- sTitle.ToLower();
- vector<CStdString> vcsIn(1);
- @@ -506,7 +521,6 @@ std::vector<CScraperUrl> CScraper::FindMovie(XFILE::CCurlFile &fcurl, const CStd
- // request a search URL from the title/filename/etc.
- CScraperUrl scurl;
- vector<CStdString> vcsOut = Run("CreateSearchUrl", scurl, fcurl, &vcsIn);
- - std::vector<CScraperUrl> vcscurl;
- if (vcsOut.empty())
- {
- CLog::Log(LOGDEBUG, "%s: CreateSearchUrl failed", __FUNCTION__);
- @@ -613,6 +627,10 @@ std::vector<CMusicAlbumInfo> CScraper::FindAlbum(CCurlFile &fcurl, const CStdStr
- sAlbum.c_str(), Name().c_str(), Path().c_str(),
- ADDON::TranslateContent(Content()).c_str(), Version().c_str());
- + std::vector<CMusicAlbumInfo> vcali;
- + if (IsNoop())
- + return vcali;
- +
- // scraper function is given the album and artist as parameters and
- // returns an XML <url> element parseable by CScraperUrl
- std::vector<CStdString> extras(2);
- @@ -625,7 +643,6 @@ std::vector<CMusicAlbumInfo> CScraper::FindAlbum(CCurlFile &fcurl, const CStdStr
- if (vcsOut.size() > 1)
- CLog::Log(LOGWARNING, "%s: scraper returned multiple results; using first", __FUNCTION__);
- - std::vector<CMusicAlbumInfo> vcali;
- if (vcsOut.empty() || vcsOut[0].empty())
- return vcali;
- scurl.ParseString(vcsOut[0]);
- @@ -707,6 +724,10 @@ std::vector<CMusicArtistInfo> CScraper::FindArtist(CCurlFile &fcurl,
- Name().c_str(), Path().c_str(),
- ADDON::TranslateContent(Content()).c_str(), Version().c_str());
- + std::vector<CMusicArtistInfo> vcari;
- + if (IsNoop())
- + return vcari;
- +
- // scraper function is given the artist as parameter and
- // returns an XML <url> element parseable by CScraperUrl
- std::vector<CStdString> extras(1);
- @@ -715,7 +736,6 @@ std::vector<CMusicArtistInfo> CScraper::FindArtist(CCurlFile &fcurl,
- CScraperUrl scurl;
- vector<CStdString> vcsOut = RunNoThrow("CreateArtistSearchUrl", scurl, fcurl, &extras);
- - std::vector<CMusicArtistInfo> vcari;
- if (vcsOut.empty() || vcsOut[0].empty())
- return vcari;
- scurl.ParseString(vcsOut[0]);
- diff --git a/xbmc/addons/Scraper.h b/xbmc/addons/Scraper.h
- index 7f26974..db35fa1 100644
- --- a/xbmc/addons/Scraper.h
- +++ b/xbmc/addons/Scraper.h
- @@ -117,6 +117,7 @@ public:
- bool Supports(const CONTENT_TYPE &content) const;
- bool IsInUse() const;
- + bool IsNoop();
- // scraper media functions
- CScraperUrl NfoUrl(const CStdString &sNfoContent);
- diff --git a/xbmc/utils/ScraperParser.cpp b/xbmc/utils/ScraperParser.cpp
- index 1624cea..b63c420 100644
- --- a/xbmc/utils/ScraperParser.cpp
- +++ b/xbmc/utils/ScraperParser.cpp
- @@ -42,12 +42,14 @@ CScraperParser::CScraperParser()
- m_pRootElement = NULL;
- m_document = NULL;
- m_SearchStringEncoding = "UTF-8";
- + m_isNoop = false;
- }
- CScraperParser::CScraperParser(const CScraperParser& parser)
- {
- m_document = NULL;
- m_SearchStringEncoding = "UTF-8";
- + m_isNoop = false;
- *this = parser;
- }
- @@ -108,6 +110,13 @@ bool CScraperParser::LoadFromXML()
- CStdString strValue = m_pRootElement->Value();
- if (strValue == "scraper")
- {
- + bool isNoop;
- + if (m_pRootElement->QueryBoolAttribute("noop", &isNoop) == TIXML_SUCCESS)
- + {
- + m_isNoop = isNoop;
- + return true;
- + }
- +
- TiXmlElement* pChildElement = m_pRootElement->FirstChildElement("CreateSearchUrl");
- if (pChildElement)
- {
- diff --git a/xbmc/utils/ScraperParser.h b/xbmc/utils/ScraperParser.h
- index 12a1ff0..136f41d 100644
- --- a/xbmc/utils/ScraperParser.h
- +++ b/xbmc/utils/ScraperParser.h
- @@ -46,6 +46,7 @@ public:
- ~CScraperParser();
- CScraperParser& operator= (const CScraperParser& parser);
- bool Load(const CStdString& strXMLFile);
- + bool IsNoop() { return m_isNoop; };
- void Clear();
- const CStdString GetFilename() { return m_strFile; }
- @@ -77,6 +78,7 @@ private:
- TiXmlElement* m_pRootElement;
- const char* m_SearchStringEncoding;
- + bool m_isNoop;
- CStdString m_strFile;
- ADDON::CScraper* m_scraper;
- diff --git a/xbmc/video/windows/GUIWindowVideoBase.cpp b/xbmc/video/windows/GUIWindowVideoBase.cpp
- index 1bfa29a..be25187 100644
- --- a/xbmc/video/windows/GUIWindowVideoBase.cpp
- +++ b/xbmc/video/windows/GUIWindowVideoBase.cpp
- @@ -482,7 +482,7 @@ bool CGUIWindowVideoBase::ShowIMDB(CFileItem *item, const ScraperPtr &info2)
- if (needsRefresh)
- {
- bHasInfo = true;
- - if (nfoResult == CNfoFile::URL_NFO || nfoResult == CNfoFile::COMBINED_NFO || nfoResult == CNfoFile::FULL_NFO)
- + if (!info->IsNoop() && (nfoResult == CNfoFile::URL_NFO || nfoResult == CNfoFile::COMBINED_NFO || nfoResult == CNfoFile::FULL_NFO))
- {
- if (CGUIDialogYesNo::ShowAndGetInput(13346,20446,20447,20022))
- {
- --
- 1.7.9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement