38 lines
1.5 KiB
Python
38 lines
1.5 KiB
Python
"""Install the optional renderer and its matching headless browser."""
|
|
from pathlib import Path
|
|
import argparse
|
|
import subprocess
|
|
import sys
|
|
|
|
SCRIPT_DIR = Path(__file__).absolute().parent
|
|
sys.path.insert(0, str(SCRIPT_DIR))
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description=__doc__)
|
|
parser.add_argument("--with-deps", action="store_true", help="Also install Chromium OS libraries (may require sudo).")
|
|
args = parser.parse_args()
|
|
subprocess.run([sys.executable, "-m", "pip", "install", "-r", str(SCRIPT_DIR / "requirements-render.txt")], check=True)
|
|
command = [sys.executable, "-m", "playwright", "install", "--only-shell", "chromium"]
|
|
if args.with_deps:
|
|
command.append("--with-deps")
|
|
subprocess.run(command, check=True)
|
|
check = """from playwright.sync_api import sync_playwright
|
|
with sync_playwright() as p:
|
|
browser = p.chromium.launch(headless=True, args=['--disable-gpu'])
|
|
context = browser.new_context(offline=True)
|
|
page = context.new_page()
|
|
assert page.evaluate('typeof OfflineAudioContext') == 'function'
|
|
browser.close()
|
|
"""
|
|
result = subprocess.run([sys.executable, "-c", check], capture_output=True, text=True)
|
|
if result.returncode:
|
|
print("Chromium could not start. On Linux, run python setup_render.py --with-deps to install its system libraries.", file=sys.stderr)
|
|
return 1
|
|
print("Rendering is ready. Example: python render.py --input output --audio --score pdf")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|