School/IKEA_scraper/.venv/Lib/site-packages/eel/browsers.py
Kristofers Solo e1996ea454 Added 'eel'
2021-09-13 18:47:06 +03:00

79 lines
2.2 KiB
Python

import subprocess as sps
import webbrowser as wbr
import eel.chrome as chm
import eel.electron as ele
import eel.edge as edge
#import eel.firefox as ffx TODO
#import eel.safari as saf TODO
_browser_paths = {}
_browser_modules = {'chrome': chm,
'electron': ele,
'edge': edge}
def _build_url_from_dict(page, options):
scheme = page.get('scheme', 'http')
host = page.get('host', 'localhost')
port = page.get('port', options["port"])
path = page.get('path', '')
return '%s://%s:%d/%s' % (scheme, host, port, path)
def _build_url_from_string(page, options):
base_url = 'http://%s:%d/' % (options['host'], options['port'])
return base_url + page
def _build_urls(start_pages, options):
urls = []
for page in start_pages:
method = _build_url_from_dict if isinstance(
page, dict) else _build_url_from_string
url = method(page, options)
urls.append(url)
return urls
def open(start_pages, options):
# Build full URLs for starting pages (including host and port)
start_urls = _build_urls(start_pages, options)
mode = options.get('mode')
if mode in [None, False]:
# Don't open a browser
pass
elif mode == 'custom':
# Just run whatever command the user provided
sps.Popen(options['cmdline_args'],
stdout=sps.PIPE, stderr=sps.PIPE, stdin=sps.PIPE)
elif mode in _browser_modules:
# Run with a specific browser
browser_module = _browser_modules[mode]
path = _browser_paths.get(mode)
if path is None:
# Don't know this browser's path, try and find it ourselves
path = browser_module.find_path()
_browser_paths[mode] = path
if path is not None:
browser_module.run(path, options, start_urls)
else:
raise EnvironmentError("Can't find %s installation" % browser_module.name)
else:
# Fall back to system default browser
for url in start_urls:
wbr.open(url)
def set_path(browser_name, path):
_browser_paths[browser_name] = path
def get_path(browser_name):
return _browser_paths.get(browser_name)