This commit is contained in:
zjf 2025-05-29 10:49:58 +08:00
parent 4001249d53
commit a785e4fc63
2 changed files with 47 additions and 13 deletions

View File

@ -1,5 +1,5 @@
MODAL_ENVIRONMENT=dev
modal_app_name=bowong-ai-video
modal_app_name=rpa
S3_mount_dir=/mntS3
S3_bucket_name=modal-media-cache
S3_region=ap-northeast-2

View File

@ -5,6 +5,8 @@ import os
import time
from pathlib import Path
from typing import List, Optional
import aiohttp
import httpx
from ulid import ULID
@ -442,8 +444,36 @@ def submit_job(data: LiveStreamProductWatchRequest):
return call.object_id
def submit_job_new(data: LiveStreamProductWatchRequest):
call = rpa_new.spawn(data)
return call.object_id
########################################rpa_image start######################################################
with rpa_image.imports():
with (rpa_image.imports()):
@app.function(timeout=8 * 60 * 60, volumes={"/data": rpa_vol}, cloud="gcp", region="ap")
async def rpa_new(data: LiveStreamProductWatchRequest):
webcast_id = data.live_id
url = f"https://live.douyin.com/{webcast_id}?open_promotion_list=1"
print(url)
async with async_playwright() as p:
browser: Browser = await p.chromium.launch(headless=True, channel='msedge')
context = await browser.new_context()
await context.add_cookies(cookies)
print("Loaded cookies")
page = await context.new_page()
await page.goto(url)
print("goto end")
print("title", await page.title())
await page.wait_for_load_state("networkidle")
await browser.close()
@app.function(timeout=8 * 60 * 60, volumes={"/data": rpa_vol}, cloud="gcp", region="ap")
async def rpa_run(data: LiveStreamProductWatchRequest) -> dict:
"""
@ -470,12 +500,17 @@ with rpa_image.imports():
"liveId": data.live_id
}, headers={
"Authentication": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0aWQiOiI5ZjIwZDM0MC0xY2U0LTQ5MzAtYTA5NC0yZjM2ODYzNGRiYzciLCJ1aWQiOiI1ZTQzYTc1ZC1hN2M3LTQ1NjQtOTI0OS01NWEyMDIxZDk0YzUiLCJ1c24iOiJ1c2VyQGJvd29uZ2FpLmNvbSIsImV4cCI6MTc0ODQxNjA1Nn0.IWMxl47oSFJyNYQV6M511-rU8GDIGh8r9H5Yt8LShGw"})
status_code = res.raise_for_status().status_code
print(status_code)
try:
res.raise_for_status()
except BaseException as e:
print(e)
data_res = res.json()
print(f"!!!!!! data_res:{data_res}")
if status_code == 200 and data_res['code'] == 0:
if data_res is not None \
and 'code' in data_res \
and data_res['code'] == 0:
result.ext_data = data_res['data']
else:
result.msg = "createLivePull2Push 推流失败"
@ -500,7 +535,7 @@ with rpa_image.imports():
await context.add_cookies(cookies)
logger.info("Loaded cookies")
page: Page = await context.new_page()
url = f"https://live.douyin.com/{webcast_id}?open_promotion_list=1"
url = f"https://live.douyin.com/{webcast_id}?open_promotion_list=1&from_search=true"
logger.info(f"Navigating to {url}")
await page.goto(url, wait_until="domcontentloaded")
logger.info(f"Navigating to end {url}")
@ -539,11 +574,13 @@ with rpa_image.imports():
# 312898731614
# webcast_ids = ["36861064178"]
# webcast_ids = ["36861064178"]
webcast_id = "333555252930"
webcast_id = "65731953339"
data: LiveStreamProductWatchRequest = LiveStreamProductWatchRequest(live_id=webcast_id,live_stream_name=str(ULID()))
data: LiveStreamProductWatchRequest = LiveStreamProductWatchRequest(live_id=webcast_id,
live_stream_name=str(ULID()))
# TODO other info
call_id = submit_job(data)
# call_id = submit_job_new(data)
print("------call_id:", call_id)
result = get_job_result(call_id, 8 * 60 * 60)
# result = get_job_result(call_id)
@ -563,8 +600,8 @@ with rpa_image.imports():
# title = await rpa_run.remote.aio(webcast_id="36861064178")
# logger.info(f"title = {title}")
########################################rpa_image end######################################################
########################################rpa_image end######################################################
def local_main_test():
@ -579,6 +616,7 @@ def local_main_test():
print(status_code)
print(res.json())
def foo(webcast_id):
with sync_playwright() as p:
url = f"https://live.douyin.com/{webcast_id}?open_promotion_list=1"
@ -591,8 +629,4 @@ def foo(webcast_id):
if __name__ == '__main__':
# local_main_test()
foo("333555252930")
pass