Example #1
0
    def __init__(self, options,  # noqa: C901
                 **kwargs) -> None:
        """Make new launcher."""
        self.options = merge_dict(options, kwargs)
        self.port = get_free_port()
        self.url = f'http://127.0.0.1:{self.port}'
        self.chrome_args = [f'--remote-debugging-port={self.port}']
        self._loop = self.options.get('loop', asyncio.get_event_loop())

        logLevel = self.options.get('logLevel')
        if logLevel:
            logging.getLogger('pyppeteer').setLevel(logLevel)
        self.chromeClosed = True
        if self.options.get('appMode', False):
            self.options['headless'] = False
        self._tmp_user_data_dir = self.options.get('userDataDir', None)
        self._parse_args()
        if self.options.get('devtools'):
            self.chrome_args.append('--auto-open-devtools-for-tabs')
            self.options['headless'] = False
        if 'headless' not in self.options or self.options.get('headless'):
            self.chrome_args.extend([
                '--headless',
                '--disable-gpu',
                '--hide-scrollbars',
                '--mute-audio',
            ])
        if 'executablePath' in self.options:
            self.exec = self.options['executablePath']
        else:
            if not check_chromium():
                download_chromium()
            self.exec = str(chromium_executable())
        self.cmd = [self.exec] + self.chrome_args
Example #2
0
    def __init__(self, options: Dict[str, Any] = None, **kwargs: Any) -> None:
        """Make new launcher."""
        self.options = merge_dict(options, kwargs)
        self.port = get_free_port()
        self.url = f'http://127.0.0.1:{self.port}'

        self.chrome_args = DEFAULT_ARGS
        self.chrome_args.append(f'--remote-debugging-port={self.port}', )
        self.chromeClosed = True
        if self.options.get('appMode', False):
            self.options['headless'] = False
        else:
            self.chrome_args.extend(AUTOMATION_ARGS)

        self._tmp_user_data_dir: Optional[str] = None
        self._parse_args()

        if self.options.get('devtools'):
            self.chrome_args.append('--auto-open-devtools-for-tabs')
            self.options['headless'] = False

        if 'headless' not in self.options or self.options.get('headless'):
            self.chrome_args = self.chrome_args + [
                '--headless',
                '--disable-gpu',
                '--hide-scrollbars',
                '--mute-audio',
            ]
        if 'executablePath' in self.options:
            self.exec = self.options['executablePath']
        else:
            if not check_chromium():
                download_chromium()
            self.exec = str(chromium_excutable())
        self.cmd = [self.exec] + self.chrome_args
Example #3
0
 def __init__(self,
              options: Dict[(str, Any)] = None,
              **kwargs: Any) -> None:
     'Make new launcher.'
     self.options = merge_dict(options, kwargs)
     self.port = get_free_port()
     self.url = ''.join(['http://127.0.0.1:', '{}'.format(self.port)])
     self.chrome_args = []
     if (not self.options.get('ignoreDefaultArgs', False)):
         self.chrome_args.extend(DEFAULT_ARGS)
         self.chrome_args.append(''.join(
             ['--remote-debugging-port=', '{}'.format(self.port)]))
     self.chromeClosed = True
     if self.options.get('appMode', False):
         self.options['headless'] = False
     elif (not self.options.get('ignoreDefaultArgs', False)):
         self.chrome_args.extend(AUTOMATION_ARGS)
     self._tmp_user_data_dir = None
     self._parse_args()
     if self.options.get('devtools'):
         self.chrome_args.append('--auto-open-devtools-for-tabs')
         self.options['headless'] = False
     if (('headless' not in self.options) or self.options.get('headless')):
         self.chrome_args.extend([
             '--headless', '--disable-gpu', '--hide-scrollbars',
             '--mute-audio'
         ])
     if ('executablePath' in self.options):
         self.exec = self.options['executablePath']
     else:
         if (not check_chromium()):
             download_chromium()
         self.exec = str(chromium_excutable())
     self.cmd = ([self.exec] + self.chrome_args)
Example #4
0
 def __init__(self, options: Dict[str, Any] = None, **kwargs: Any) -> None:
     """Make new launcher."""
     global BROWSER_ID
     BROWSER_ID += 1
     self.options = options or dict()
     self.options.update(kwargs)
     self.user_data_dir = (CHROME_PROFILIE_PATH / str(os.getpid()) /
                           str(BROWSER_ID))
     self.chrome_args = DEFAULT_ARGS + [
         '--user-data-dir=' + shlex.quote(str(self.user_data_dir)),
     ]
     if 'headless' not in self.options or self.options.get('headless'):
         self.chrome_args = self.chrome_args + [
             '--headless',
             '--disable-gpu',
             '--hide-scrollbars',
             '--mute-audio',
         ]
     if 'executablePath' in self.options:
         self.exec = self.options['executablePath']
     else:
         if not check_chromium():
             download_chromium()
         self.exec = str(chromium_excutable())
     self.cmd = [self.exec] + self.chrome_args
Example #5
0
    def __init__(
            self,
            options: Dict[str, Any] = None,  # noqa: C901
            **kwargs: Any) -> None:
        """Make new launcher."""
        self.options = merge_dict(options, kwargs)
        self.port = get_free_port()
        self.url = f'http://127.0.0.1:{self.port}'
        self.chrome_args: List[str] = []
        self._loop = self.options.get('loop', asyncio.get_event_loop())

        logLevel = self.options.get('logLevel')
        if logLevel:
            logging.getLogger('pyppeteer').setLevel(logLevel)

        if not self.options.get('ignoreDefaultArgs', False):
            self.chrome_args.extend(DEFAULT_ARGS)
            self.chrome_args.append(f'--remote-debugging-port={self.port}', )

        self.chromeClosed = True
        if self.options.get('appMode', False):
            self.options['headless'] = False
        elif not self.options.get('ignoreDefaultArgs', False):
            self.chrome_args.extend(AUTOMATION_ARGS)

        self._tmp_user_data_dir: Optional[str] = None
        self._parse_args()

        if self.options.get('devtools'):
            self.chrome_args.append('--auto-open-devtools-for-tabs')
            self.options['headless'] = False

        if 'headless' not in self.options or self.options.get('headless'):
            self.chrome_args.extend([
                '--headless',
                '--disable-gpu',
                '--hide-scrollbars',
                '--mute-audio',
            ])

        def _is_default_url() -> bool:
            for arg in self.options['args']:
                if not arg.startswith('-'):
                    return False
            return True

        if (not self.options.get('ignoreDefaultArgs')
                and isinstance(self.options.get('args'), list)
                and _is_default_url()):
            self.chrome_args.append('about:blank')

        if 'executablePath' in self.options:
            self.exec = self.options['executablePath']
        else:
            if not check_chromium():
                download_chromium()
            self.exec = str(chromium_executable())

        self.cmd = [self.exec] + self.chrome_args
Example #6
0
    def __init__(self, options: Dict[str, Any] = None,  # noqa: C901
                 **kwargs: Any) -> None:
        """Make new launcher."""
        self.options = merge_dict(options, kwargs)
        self.port = get_free_port()
        self.url = f'http://127.0.0.1:{self.port}'
        self.chrome_args: List[str] = []
        self._loop = self.options.get('loop', asyncio.get_event_loop())

        logLevel = self.options.get('logLevel')
        if logLevel:
            logging.getLogger('pyppeteer').setLevel(logLevel)

        if not self.options.get('ignoreDefaultArgs', False):
            self.chrome_args.extend(DEFAULT_ARGS)
            self.chrome_args.append(
                f'--remote-debugging-port={self.port}',
            )

        self.chromeClosed = True
        if self.options.get('appMode', False):
            self.options['headless'] = False
        elif not self.options.get('ignoreDefaultArgs', False):
            self.chrome_args.extend(AUTOMATION_ARGS)

        self._tmp_user_data_dir: Optional[str] = None
        self._parse_args()

        if self.options.get('devtools'):
            self.chrome_args.append('--auto-open-devtools-for-tabs')
            self.options['headless'] = False

        if 'headless' not in self.options or self.options.get('headless'):
            self.chrome_args.extend([
                '--headless',
                '--disable-gpu',
                '--hide-scrollbars',
                '--mute-audio',
            ])

        def _is_default_url() -> bool:
            for arg in self.options['args']:
                if not arg.startswith('-'):
                    return False
            return True

        if (not self.options.get('ignoreDefaultArgs') and
                isinstance(self.options.get('args'), list) and
                _is_default_url()):
            self.chrome_args.append('about:blank')

        if 'executablePath' in self.options:
            self.exec = self.options['executablePath']
        else:
            if not check_chromium():
                download_chromium()
            self.exec = str(chromium_executable())

        self.cmd = [self.exec] + self.chrome_args
Example #7
0
    def __init__(self, options: Dict[str, Any] = None,  # noqa: C901
                 **kwargs: Any) -> None:
        """Make new launcher."""
        options = merge_dict(options, kwargs)

        self.port = get_free_port()
        self.url = f'http://127.0.0.1:{self.port}'
        self._loop = options.get('loop', asyncio.get_event_loop())
        self.chromeClosed = True

        ignoreDefaultArgs = options.get('ignoreDefaultArgs', False)
        args: List[str] = options.get('args', list())
        self.dumpio = options.get('dumpio', False)
        executablePath = options.get('executablePath')
        self.env = options.get('env')
        self.handleSIGINT = options.get('handleSIGINT', True)
        self.handleSIGTERM = options.get('handleSIGTERM', True)
        self.handleSIGHUP = options.get('handleSIGHUP', True)
        self.ignoreHTTPSErrors = options.get('ignoreHTTPSErrors', False)
        self.defaultViewport = options.get('defaultViewport', {'width': 800, 'height': 600})  # noqa: E501
        self.slowMo = options.get('slowMo', 0)
        self.timeout = options.get('timeout', 30000)
        self.autoClose = options.get('autoClose', True)

        logLevel = options.get('logLevel')
        if logLevel:
            logging.getLogger('pyppeteer').setLevel(logLevel)

        self.chromeArguments: List[str] = list()
        if not ignoreDefaultArgs:
            self.chromeArguments.extend(defaultArgs(options))
        elif isinstance(ignoreDefaultArgs, list):
            self.chromeArguments.extend(filter(
                lambda arg: arg not in ignoreDefaultArgs,
                defaultArgs(options),
            ))
        else:
            self.chromeArguments.extend(args)

        self.temporaryUserDataDir: Optional[str] = None

        if not any(arg for arg in self.chromeArguments
                   if arg.startswith('--remote-debugging-')):
            self.chromeArguments.append(f'--remote-debugging-port={self.port}')

        if not any(arg for arg in self.chromeArguments
                   if arg.startswith('--user-data-dir')):
            if not CHROME_PROFILE_PATH.exists():
                CHROME_PROFILE_PATH.mkdir(parents=True)
            self.temporaryUserDataDir = tempfile.mkdtemp(dir=str(CHROME_PROFILE_PATH))  # noqa: E501
            self.chromeArguments.append(f'--user-data-dir={self.temporaryUserDataDir}')  # noqa: E501

        self.chromeExecutable = executablePath
        if not self.chromeExecutable:
            if not check_chromium():
                download_chromium()
            self.chromeExecutable = str(chromium_executable())

        self.cmd = [self.chromeExecutable] + self.chromeArguments
 def _check_launch_reqs(self):
     try:
         from pyppeteer import launch
         from pyppeteer.util import check_chromium
     except ModuleNotFoundError as e:
         raise RuntimeError("Pyppeteer is not installed to support Web PDF conversion. "
                            "Please install `nbconvert[webpdf]` to enable.") from e
     if not self.allow_chromium_download and not check_chromium():
         raise RuntimeError("No suitable chromium executable found on the system. "
                            "Please use '--allow-chromium-download' to allow downloading one.")
     return launch
Example #9
0
    def __init__(self, options: Dict[str, Any] = None,  # noqa: C901
                 **kwargs: Any) -> None:
        """Make new launcher."""
        self.options = merge_dict(options, kwargs)
        self.port = get_free_port()
        self.url = f'http://127.0.0.1:{self.port}'
        self.chrome_args: List[str] = []

        if not self.options.get('ignoreDefaultArgs', False):
            self.chrome_args.extend(DEFAULT_ARGS)
            self.chrome_args.append(
                f'--remote-debugging-port={self.port}',
            )

        self.chromeClosed = True
        if self.options.get('appMode', False):
            self.options['headless'] = False
        elif not self.options.get('ignoreDefaultArgs', False):
            self.chrome_args.extend(AUTOMATION_ARGS)

        self._tmp_user_data_dir: Optional[str] = None
        self._parse_args()

        if self.options.get('devtools'):
            self.chrome_args.append('--auto-open-devtools-for-tabs')
            self.options['headless'] = False

        if 'headless' not in self.options or self.options.get('headless'):
            self.chrome_args.extend([
                '--headless',
                '--disable-gpu',
                '--hide-scrollbars',
                '--mute-audio',
            ])

        if 'executablePath' in self.options:
            self.exec = self.options['executablePath']
        else:
            if not check_chromium():
                download_chromium()
            self.exec = str(chromium_excutable())

        self.cmd = [self.exec] + self.chrome_args
Example #10
0
 def __init__(self, options: Dict[str, Any] = None, **kwargs: Any) -> None:
     """Make new launcher."""
     self.options = options or dict()
     self.options.update(kwargs)
     self.chrome_args = DEFAULT_ARGS
     self._tmp_user_data_dir: Optional[str] = None
     self._parse_args()
     if 'headless' not in self.options or self.options.get('headless'):
         self.chrome_args = self.chrome_args + [
             '--headless',
             '--disable-gpu',
             '--hide-scrollbars',
             '--mute-audio',
         ]
     if 'executablePath' in self.options:
         self.exec = self.options['executablePath']
     else:
         if not check_chromium():
             download_chromium()
         self.exec = str(chromium_excutable())
     self.cmd = [self.exec] + self.chrome_args