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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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