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

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

Сообщение Anonymous »

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

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

# 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)
  • Любой другой шаблон, который люди используют для подобных инструментов ИИ (Потоки похожие у «ВПП», «Пика», «Клинг» и т. д.)


Подробнее здесь: https://stackoverflow.com/questions/798 ... result-dyn

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