新增PlaywrightRPA 函数
This commit is contained in:
parent
629083210b
commit
e2276e0546
|
|
@ -1,5 +1,5 @@
|
||||||
MODAL_ENVIRONMENT=dev
|
MODAL_ENVIRONMENT=dev
|
||||||
modal_app_name=cluster-test
|
modal_app_name=bowong-ai-video
|
||||||
S3_mount_dir=/mntS3
|
S3_mount_dir=/mntS3
|
||||||
S3_bucket_name=modal-media-cache
|
S3_bucket_name=modal-media-cache
|
||||||
S3_region=ap-northeast-2
|
S3_region=ap-northeast-2
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
[project]
|
||||||
|
name = "PlaywrightRPA"
|
||||||
|
version = "0.0.1"
|
||||||
|
authors = [
|
||||||
|
{ name = "Yudi Xiao", email = "xyd@bowong.ai" },
|
||||||
|
]
|
||||||
|
description = "基于Playwright处理抖音Web页面RPA"
|
||||||
|
|
||||||
|
requires-python = ">=3.11"
|
||||||
|
dependencies = [
|
||||||
|
"loguru>=0.7.3",
|
||||||
|
"playwright>=1.52.0"
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
import modal
|
||||||
|
|
||||||
|
rpa_image = (modal.Image.debian_slim(python_version="3.11")
|
||||||
|
.pip_install_from_pyproject("../pyproject_rpa.toml")
|
||||||
|
.env({"PLAYWRIGHT_BROWSERS_PATH": "/root/browsers"})
|
||||||
|
.run_commands("mkdir /root/browsers")
|
||||||
|
.run_commands("playwright install-deps")
|
||||||
|
.run_commands("playwright install chromium")
|
||||||
|
.add_local_python_source('cluster')
|
||||||
|
)
|
||||||
|
app = modal.App(name='rpa', image=rpa_image, include_source=False)
|
||||||
|
|
||||||
|
with rpa_image.imports():
|
||||||
|
from loguru import logger
|
||||||
|
from playwright.async_api import async_playwright
|
||||||
|
|
||||||
|
|
||||||
|
@app.function()
|
||||||
|
async def rpa_run(webcast_id: str):
|
||||||
|
async with async_playwright() as p:
|
||||||
|
browser = await p.chromium.launch()
|
||||||
|
page = await browser.new_page()
|
||||||
|
await page.goto(f"https://live.douyin.com/{webcast_id}")
|
||||||
|
title = await page.title()
|
||||||
|
return title
|
||||||
|
|
||||||
|
|
||||||
|
@app.local_entrypoint()
|
||||||
|
async def local_run():
|
||||||
|
logger.info(f"本地运行测试")
|
||||||
|
fn = modal.Function.from_name("rpa", "rpa_run")
|
||||||
|
title = await fn.remote.aio(webcast_id="333555252930")
|
||||||
|
logger.info(f"title = {title}")
|
||||||
Loading…
Reference in New Issue