Playwright Python — надежное ожидание длительной генерации видео AI и автоматической загрузки результата (динамический SPython

Программы на Python
Anonymous
Playwright Python — надежное ожидание длительной генерации видео AI и автоматической загрузки результата (динамический S

Сообщение Anonymous »

Я использую Playwright (Python) для автоматизации веб-генератора музыкальных видео Flux AI (https://flux-ai.io/ai-music-video-generator/). Ручной процесс прост:
  • Загрузить 1–5 фотографий
  • Загрузить MP3
  • Введите короткое анимированное сообщение
  • Нажмите «Создать»
Сама генерация является асинхронной и может занять от 30 до 180 секунд (зависит от длины песни, модели и очереди). После нажатия кнопки «Создать» на странице отображается состояние загрузки (индикатор прогресса или что-то подобное), а затем, когда оно будет готово, заменяется видеоплеером + кнопкой загрузки. Я прекрасно справляюсь с загрузкой и отправкой формы, но у меня возникают трудности с частью «ожидания завершения». Что я уже пробовал:
python

Код: Выделить всё

# 1. Fixed wait – works but wasteful
await page.wait_for_timeout(120_000)

# 2. Wait for visible element (flaky – element sometimes appears before video is actually ready)
await page.wait_for_selector('#download-btn', state='visible', timeout=180_000)

# 3. Simple polling
async def wait_for_video():
for _ in range(60):  # ~3 min max
if await page.locator('.video-player').count() > 0 and await page.locator('.video-player video[src]').count() > 0:
return
await page.wait_for_timeout(3000)
raise TimeoutError
Проблемы, которые я наблюдаю:
  • DOM — это SPA в стиле React/Vue → элементы используются повторно, классы/идентификаторы меняются между поколениями.
  • Нет очевидного «идентификатора задания» или конечной точки опроса на вкладке сети (по крайней мере, не очевидно для меня).
  • Сеть простой не помогает, поскольку генерация происходит на стороне сервера.
Вопрос: Какой самый надежный способ определить, что видео завершило создание и готово к загрузке? Предпочтительные решения:
  • Использование page.wait_for_function() с условием JavaScript (например, проверка video.duration или src)
  • Ожидание определенного ответа сети (если есть окончательная конечная точка /result)
  • Любой другой шаблон, который люди используют для подобных инструментов ИИ (Runway, Pika, Kling и т. д. имеют аналогичные потоки)


Подробнее здесь: https://stackoverflow.com/questions/798 ... n-and-auto

Вернуться в «Python»