1.11.9 #1822
Replies: 2 comments 1 reply
|
Что-то с новым вообще ничего не переводится, сразу ошибку кидает, сидел на 1.1.7 версии там через раз но переводил. Не знаю у меня ли только так. |
|
спросил у Claude Что поменяли и почему. Старый способ скачать оригинальную звуковую дорожку с YouTube (через yt-dlp-подобную логику) сломался после 1 сентября — YouTube изменил формат (см. yt-dlp/yt-dlp#17461). Взамен автор в 1.11.9 сделал новый механизм: расширение создаёт скрытый <iframe src="youtube.com/embed/ID">, подсовывает туда прокси на MediaSource/SourceBuffer.appendBuffer, вручную запускает проигрывание и таким образом "подслушивает" аудио-чанки прямо из плеера. Штука сложная и завязана на тайминги (автоплей в фоновом iframe, готовность плеера, readyState, и т.д.) — сама по себе хрупкая. Но похоже, что дело не только в хрупкости, а в конкретном баге. В src/core/translationHandler.ts (метод translateVideoImpl) скачивание аудио запускается так: js То есть runAudioDownload для одного и того же translationId вызывается два раза подряд — сначала отдельно (и полностью отрабатывает, пока не закончится: успехом или ошибкой), а сразу следом — ещё раз внутри Promise.all. Это очень похоже на забытый кусок кода после рефакторинга (видимо, раньше был только первый вызов, потом добавили паттерн с ожиданием через Promise.all, а старую строку не убрали). Эффект: к моменту второго вызова первый уже успел выставить this.downloading = false (через finishDownloadSuccess/finishDownloadFailure), поэтому waitForAudioDownloadCompletion тут же резолвится ничего не дожидаясь, а ошибка из первого (реального) прогона скачивания просто теряется — слушателей на неё в этот момент ещё нет. Плюс второй вызов открывает ещё один параллельный скрытый iframe для того же видео — то есть два конкурирующих MediaSource-перехвата на одну и ту же страницу, что для и без того гоночной логики только добавляет нестабильности. Всё это вполне может объяснять именно мгновенную ошибку вместо честного ожидания/таймаута. В настройках расширения VOT снять галочку «Использовать загрузку аудио» (с предупреждением, что это может нарушить работу — но раз оно и так не работает, это временный обходной путь: расширение перестанет пытаться тащить звук через этот новый MSE-механизм и попросит сервер справиться самому). Это помогло, без галочки все заработало. Может поможет исправить, спасибо за труды и отличный инструмент |
Uh oh!
There was an error while loading. Please reload this page.
Note
Версия для Chrome Web Store и Firefox Add-ons еще на проверке
What's Changed
Full Changelog: 1.11.8...1.11.9
This discussion was created from the release 1.11.9.
All reactions