diff --git a/mythtv/bindings/perl/MythTV.pm b/mythtv/bindings/perl/MythTV.pm index 51e75f6..21fa57d 100644 --- a/mythtv/bindings/perl/MythTV.pm +++ b/mythtv/bindings/perl/MythTV.pm @@ -114,7 +114,7 @@ package MythTV; # schema version supported in the main code. We need to check that the schema # version in the database is as expected by the bindings, which are expected # to be kept in sync with the main code. - our $SCHEMA_VERSION = "1282"; + our $SCHEMA_VERSION = "1283"; # NUMPROGRAMLINES is defined in mythtv/libs/libmythtv/programinfo.h and is # the number of items in a ProgramInfo QStringList group used by diff --git a/mythtv/bindings/python/MythTV/dataheap.py b/mythtv/bindings/python/MythTV/dataheap.py index 8f520cb..2817f55 100644 --- a/mythtv/bindings/python/MythTV/dataheap.py +++ b/mythtv/bindings/python/MythTV/dataheap.py @@ -1049,12 +1049,13 @@ class VideoGrabber( Grabber ): def __init__(self, mode, lang='en', db=None): dbvalue = {'tv':'TelevisionGrabber', 'movie':'MovieGrabber'} - path = {'tv':'Television/ttvdb.py', 'movie':'Movie/tmdb.py'} + path = {'tv':'metadata/Television/ttvdb.py', + 'movie':'metadata/Movie/tmdb.py'} self.mode = mode.lower() try: Grabber.__init__(self, setting=dbvalue[self.mode], db=db, - path=os.path.join(INSTALL_PREFIX, 'share/mythtv/metadata', - path[self.mode])) + path=path[self.mode], + prefix=os.path.join(INSTALL_PREFIX, 'share/mythtv')) except KeyError: raise MythError('Invalid MythVideo grabber') self.append('-l',lang) diff --git a/mythtv/bindings/python/MythTV/static.py b/mythtv/bindings/python/MythTV/static.py index 48adbdb..a9406d5 100644 --- a/mythtv/bindings/python/MythTV/static.py +++ b/mythtv/bindings/python/MythTV/static.py @@ -5,7 +5,7 @@ Contains any static and global variables for MythTV Python Bindings """ OWN_VERSION = (0,25,-1,2) -SCHEMA_VERSION = 1282 +SCHEMA_VERSION = 1283 NVSCHEMA_VERSION = 1007 MUSICSCHEMA_VERSION = 1018 PROTO_VERSION = '69' diff --git a/mythtv/bindings/python/MythTV/system.py b/mythtv/bindings/python/MythTV/system.py index 4f77460..3783f02 100644 --- a/mythtv/bindings/python/MythTV/system.py +++ b/mythtv/bindings/python/MythTV/system.py @@ -42,7 +42,7 @@ class System( DBCache ): except MythError: return s.returncode - def __init__(self, path=None, setting=None, db=None, useshell=True): + def __init__(self, path=None, setting=None, db=None, useshell=True, prefix=''): DBCache.__init__(self, db=db) self.log = MythLog(self.logmodule, db=self) self.path = None @@ -60,6 +60,9 @@ class System( DBCache ): raise MythError('Invalid input to System()') self.path = path + if prefix: + self.path = os.path.join(prefix, self.path) + cmd = self.path.split()[0] if self.path.startswith('/'): # test full given path diff --git a/mythtv/libs/libmythbase/mythversion.h b/mythtv/libs/libmythbase/mythversion.h index f0cb663..661fec6 100644 --- a/mythtv/libs/libmythbase/mythversion.h +++ b/mythtv/libs/libmythbase/mythversion.h @@ -12,7 +12,7 @@ /// Update this whenever the plug-in API changes. /// Including changes in the libmythbase, libmyth, libmythtv, libmythav* and /// libmythui class methods used by plug-ins. -#define MYTH_BINARY_VERSION "0.25.20110928-1" +#define MYTH_BINARY_VERSION "0.25.20111005-1" /** \brief Increment this whenever the MythTV network protocol changes. * @@ -51,7 +51,7 @@ * MythTV Python Bindings * mythtv/bindings/python/MythTV/static.py */ -#define MYTH_DATABASE_VERSION "1282" +#define MYTH_DATABASE_VERSION "1283" MBASE_PUBLIC const char *GetMythSourceVersion(); diff --git a/mythtv/libs/libmythmetadata/metadatadownload.cpp b/mythtv/libs/libmythmetadata/metadatadownload.cpp index 1587e3e..98de6e8 100644 --- a/mythtv/libs/libmythmetadata/metadatadownload.cpp +++ b/mythtv/libs/libmythmetadata/metadatadownload.cpp @@ -242,6 +242,36 @@ MetadataLookupList MetadataDownload::runGrabber(QString cmd, QStringList args, return list; } +QString MetadataDownload::GetMovieGrabber() +{ + QString def_cmd = "metadata/Movie/tmdb.py"; + QString db_cmd = gCoreContext->GetSetting("MovieGrabber", def_cmd); + + return QDir::cleanPath(QString("%1/%2") + .arg(GetShareDir()) + .arg(db_cmd)); +} + +QString MetadataDownload::GetTelevisionGrabber() +{ + QString def_cmd = "metadata/Television/ttvdb.py"; + QString db_cmd = gCoreContext->GetSetting("TelevisionGrabber", def_cmd); + + return QDir::cleanPath(QString("%1/%2") + .arg(GetShareDir()) + .arg(db_cmd)); +} + +QString MetadataDownload::GetGameGrabber() +{ + QString def_cmd = "metadata/Game/giantbomb.py"; + QString db_cmd = gCoreContext->GetSetting("mythgame.MetadataGrabber", def_cmd); + + return QDir::cleanPath(QString("%1/%2") + .arg(GetShareDir()) + .arg(db_cmd)); +} + bool MetadataDownload::runGrabberTest(const QString &grabberpath) { QStringList args; @@ -260,40 +290,26 @@ bool MetadataDownload::runGrabberTest(const QString &grabberpath) bool MetadataDownload::MovieGrabberWorks() { - bool ret = false; - - QString def_cmd = QDir::cleanPath(QString("%1/%2") - .arg(GetShareDir()) - .arg("metadata/Movie/tmdb.py")); - - QString cmd = gCoreContext->GetSetting("MovieGrabber", def_cmd); - - ret = runGrabberTest(cmd); - - if (!ret) + if (runGrabberTest(GetMovieGrabber())) + { LOG(VB_GENERAL, LOG_INFO, QString("Movie grabber not functional. Aborting this run.")); + return false; + } - return ret; + return true; } bool MetadataDownload::TelevisionGrabberWorks() { - bool ret = false; - - QString def_cmd = QDir::cleanPath(QString("%1/%2") - .arg(GetShareDir()) - .arg("metadata/Television/ttvdb.py")); - - QString cmd = gCoreContext->GetSetting("TelevisionGrabber", def_cmd); - - ret = runGrabberTest(cmd); - - if (!ret) + if (runGrabberTest(GetTelevisionGrabber())) + { LOG(VB_GENERAL, LOG_INFO, QString("Television grabber not functional. Aborting this run.")); + return false; + } - return ret; + return true; } MetadataLookupList MetadataDownload::readMXML(QString MXMLpath, @@ -429,11 +445,7 @@ MetadataLookupList MetadataDownload::handleGame(MetadataLookup* lookup) { MetadataLookupList list; - QString def_cmd = QDir::cleanPath(QString("%1/%2") - .arg(GetShareDir()) - .arg("metadata/Game/giantbomb.py")); - - QString cmd = gCoreContext->GetSetting("mythgame.MetadataGrabber", def_cmd); + QString cmd = GetGameGrabber(); QStringList args; args.append(QString("-l")); // Language Flag @@ -477,11 +489,7 @@ MetadataLookupList MetadataDownload::handleMovie(MetadataLookup* lookup) if (mxml.isEmpty() && nfo.isEmpty()) { - QString def_cmd = QDir::cleanPath(QString("%1/%2") - .arg(GetShareDir()) - .arg("metadata/Movie/tmdb.py")); - - QString cmd = gCoreContext->GetSetting("MovieGrabber", def_cmd); + QString cmd = GetMovieGrabber(); QStringList args; args.append(QString("-l")); // Language Flag @@ -519,11 +527,7 @@ MetadataLookupList MetadataDownload::handleTelevision(MetadataLookup* lookup) { MetadataLookupList list; - QString def_cmd = QDir::cleanPath(QString("%1/%2") - .arg(GetShareDir()) - .arg("metadata/Television/ttvdb.py")); - - QString cmd = gCoreContext->GetSetting("TelevisionGrabber", def_cmd); + QString cmd = GetTelevisionGrabber(); QStringList args; args.append(QString("-l")); // Language Flag @@ -567,11 +571,7 @@ MetadataLookupList MetadataDownload::handleVideoUndetermined( { MetadataLookupList list; - QString def_cmd = QDir::cleanPath(QString("%1/%2") - .arg(GetShareDir()) - .arg("metadata/Television/ttvdb.py")); - - QString cmd = gCoreContext->GetSetting("TelevisionGrabber", def_cmd); + QString cmd = GetTelevisionGrabber(); // Can't trust the inetref with so little information. @@ -611,11 +611,7 @@ MetadataLookupList MetadataDownload::handleRecordingGeneric( MetadataLookupList list; - QString def_cmd = QDir::cleanPath(QString("%1/%2") - .arg(GetShareDir()) - .arg("metadata/Television/ttvdb.py")); - - QString cmd = gCoreContext->GetSetting("TelevisionGrabber", def_cmd); + QString cmd = GetTelevisionGrabber(); QStringList args; diff --git a/mythtv/libs/libmythmetadata/metadatadownload.h b/mythtv/libs/libmythmetadata/metadatadownload.h index 5185e2a..174814a 100644 --- a/mythtv/libs/libmythmetadata/metadatadownload.h +++ b/mythtv/libs/libmythmetadata/metadatadownload.h @@ -43,6 +43,10 @@ class META_PUBLIC MetadataDownload : public MThread void prependLookup(MetadataLookup *lookup); void cancel(); + static QString GetMovieGrabber(); + static QString GetTelevisionGrabber(); + static QString GetGameGrabber(); + bool runGrabberTest(const QString &grabberpath); bool MovieGrabberWorks(); bool TelevisionGrabberWorks(); diff --git a/mythtv/libs/libmythtv/dbcheck.cpp b/mythtv/libs/libmythtv/dbcheck.cpp index 8ad0b0a..ec540d3 100644 --- a/mythtv/libs/libmythtv/dbcheck.cpp +++ b/mythtv/libs/libmythtv/dbcheck.cpp @@ -5879,6 +5879,22 @@ NULL return false; } + if (dbver == "1282") + { + const char *updates[] = { +"UPDATE settings" +" SET data = SUBSTR(data, INSTR(data, 'share/mythtv/metadata')+13)" +" WHERE value " +" IN ('TelevisionGrabber', " +" 'MovieGrabber', " +" 'mythgame.MetadataGrabber');", +NULL +}; + + if (!performActualUpdate(updates, "1283", dbver)) + return false; + } + return true; } diff --git a/mythtv/programs/mythfrontend/grabbersettings.cpp b/mythtv/programs/mythfrontend/grabbersettings.cpp index 907e506..dc00ade 100644 --- a/mythtv/programs/mythfrontend/grabbersettings.cpp +++ b/mythtv/programs/mythfrontend/grabbersettings.cpp @@ -201,8 +201,8 @@ void GrabberSettings::Init(void) m_movieGrabberList.begin(); it != m_movieGrabberList.end(); ++it) { - QString commandline = QString("%1metadata/Movie/%2") - .arg(GetShareDir()).arg((*it)->GetCommand()); + QString commandline = QString("metadata/Movie/%1") + .arg((*it)->GetCommand()); MetadataMap map; (*it)->toMap(map); MythUIButtonListItem *item = @@ -216,8 +216,8 @@ void GrabberSettings::Init(void) for (QList::const_iterator it = m_tvGrabberList.begin(); it != m_tvGrabberList.end(); ++it) { - QString commandline = QString("%1metadata/Television/%2") - .arg(GetShareDir()).arg((*it)->GetCommand()); + QString commandline = QString("metadata/Television/%1") + .arg((*it)->GetCommand()); MetadataMap map; (*it)->toMap(map); MythUIButtonListItem *item = @@ -232,8 +232,8 @@ void GrabberSettings::Init(void) m_gameGrabberList.begin(); it != m_gameGrabberList.end(); ++it) { - QString commandline = QString("%1metadata/Game/%2") - .arg(GetShareDir()).arg((*it)->GetCommand()); + QString commandline = QString("metadata/Game/%1") + .arg((*it)->GetCommand()); MetadataMap map; (*it)->toMap(map); MythUIButtonListItem *item = @@ -245,14 +245,11 @@ void GrabberSettings::Init(void) m_gameGrabberList.clear(); QString currentTVGrabber = gCoreContext->GetSetting("TelevisionGrabber", - QString("%1metadata/Television/%2") - .arg(GetShareDir()).arg("ttvdb.py")); + "metadata/Television/ttvdb.py"); QString currentMovieGrabber = gCoreContext->GetSetting("MovieGrabber", - QString("%1metadata/Movie/%2") - .arg(GetShareDir()).arg("tmdb.py")); + "metadata/Movie/tmdb.py"); QString currentGameGrabber = gCoreContext->GetSetting("mythgame.MetadataGrabber", - QString("%1metadata/Game/%2") - .arg(GetShareDir()).arg("giantbomb.py")); + "metadata/Game/giantbomb.py"); m_movieGrabberButtonList->SetValueByData(qVariantFromValue(currentMovieGrabber)); m_tvGrabberButtonList->SetValueByData(qVariantFromValue(currentTVGrabber));