lunduke-bot/pw/utils.py
2025-03-07 20:54:49 +00:00

43 lines
1.4 KiB
Python

from playwright.async_api import async_playwright
async def get_async_context(browser):
return await browser.new_context()
async def get_async_page(context):
return await context.new_page()
async def prepare_browser(browser_type="chromium", headless=True):
apw = await async_playwright().start() # Start Playwright manually
try:
# Initialize the correct browser
if browser_type == "firefox":
browser = await apw.firefox.launch(headless=headless)
elif browser_type == "chromium" or browser_type == "edge": # Edge uses Chromium
browser = await apw.chromium.launch(headless=headless)
elif browser_type == "webkit":
browser = await apw.webkit.launch(headless=headless)
else:
raise ValueError(f"Unsupported platform: {browser_type}")
# Create context and page
context = await browser.new_context()
page = await context.new_page()
# Return everything (browser, context, page)
# return browser, context, page
return apw, browser, page
# return browser, page
except Exception as e:
# Cleanup Playwright instance upon failure
await apw.stop()
raise e
async def cleanup_browser(apw, browser):
# A utility function to close and clean up resources
if browser:
await browser.close()
if apw:
await apw.stop()