示例#1
0
def IMDb(accessSystem=None, *arguments, **keywords):
    """Return an instance of the appropriate class.
    The accessSystem parameter is used to specify the kind of
    the preferred access system."""
    if accessSystem is None or accessSystem in ('auto', 'config'):
        try:
            cfg_file = ConfigParserWithCase(*arguments, **keywords)
            # Parameters set by the code take precedence.
            kwds = cfg_file.getDict('imdbpy')
            if 'accessSystem' in kwds:
                accessSystem = kwds['accessSystem']
                del kwds['accessSystem']
            else:
                accessSystem = 'http'
            kwds.update(keywords)
            keywords = kwds
        except Exception as e:
            import logging
            logging.getLogger('imdbpy').warn('Unable to read configuration' \
                                            ' file; complete error: %s' % e)
            # It just LOOKS LIKE a bad habit: we tried to read config
            # options from some files, but something is gone horribly
            # wrong: ignore everything and pretend we were called with
            # the 'http' accessSystem.
            accessSystem = 'http'
    if 'loggingLevel' in keywords:
        imdb._logging.setLevel(keywords['loggingLevel'])
        del keywords['loggingLevel']
    if 'loggingConfig' in keywords:
        logCfg = keywords['loggingConfig']
        del keywords['loggingConfig']
        try:
            import logging.config
            logging.config.fileConfig(os.path.expanduser(logCfg))
        except Exception as e:
            logging.getLogger('imdbpy').warn('unable to read logger ' \
                                            'config: %s' % e)
    if accessSystem in ('httpThin', 'webThin', 'htmlThin'):
        logging.warn('httpThin was removed since IMDbPY 4.8')
        accessSystem = 'http'
    if accessSystem in ('http', 'web', 'html'):
        from parser.http import IMDbHTTPAccessSystem
        return IMDbHTTPAccessSystem(*arguments, **keywords)
    elif accessSystem in ('mobile', ):
        from parser.mobile import IMDbMobileAccessSystem
        return IMDbMobileAccessSystem(*arguments, **keywords)
    elif accessSystem in ('local', 'files'):
        # The local access system was removed since IMDbPY 4.2.
        raise IMDbError('the local access system was removed since IMDbPY 4.2')
    elif accessSystem in ('sql', 'db', 'database'):
        try:
            from parser.sql import IMDbSqlAccessSystem
        except ImportError:
            raise IMDbError('the sql access system is not installed')
        return IMDbSqlAccessSystem(*arguments, **keywords)
    else:
        raise IMDbError('unknown kind of data access system: "%s"' \
                            % accessSystem)
示例#2
0
         warnings.warn('Unable to read configuration file; ' + \
                         'complete error: %s' % e)
         # It just LOOKS LIKE a bad habit: we tried to read config
         # options from some files, but something is gone horribly
         # wrong: ignore everything and pretend we were called with
         # the 'http' accessSystem.
         accessSystem = 'http'
 if accessSystem in ('http', 'web', 'html'):
     from parser.http import IMDbHTTPAccessSystem
     return IMDbHTTPAccessSystem(*arguments, **keywords)
 elif accessSystem in ('httpThin', 'webThin', 'htmlThin'):
     from parser.http import IMDbHTTPAccessSystem
     return IMDbHTTPAccessSystem(isThin=1, *arguments, **keywords)
 elif accessSystem in ('mobile',):
     from parser.mobile import IMDbMobileAccessSystem
     return IMDbMobileAccessSystem(*arguments, **keywords)
 elif accessSystem in ('local', 'files'):
     try:
         from parser.local import IMDbLocalAccessSystem
     except ImportError:
         raise IMDbError, 'the local access system is not installed'
     return IMDbLocalAccessSystem(*arguments, **keywords)
 elif accessSystem in ('sql', 'db', 'database'):
     try:
         from parser.sql import IMDbSqlAccessSystem
     except ImportError:
         raise IMDbError, 'the sql access system is not installed'
     return IMDbSqlAccessSystem(*arguments, **keywords)
 else:
     raise IMDbError, 'unknown kind of data access system: "%s"' \
                         % accessSystem