Repository navigation
refactor: migrate to WXT and overhaul codebase - #1906
NullVerdict wants to merge 15 commits into
Conversation
[WIP] The Next Update
Add a mediaProxyHost setting next to the proxy worker host and pass it to vot.js as the mediaProxy option. The value is normalized to a bare host[:port]; empty or invalid input falls back to the default.
Phrase added to all locales with bun localize, hashes updated.
…y-v2 feat: make media proxy host configurable
|
@ilyhalight В целом всё готово. Единственный вопрос по стратегиям от @Acobat12: они ломаются только в очень старых версиях Chrome (в 104 версии точно не работают). |
|
в коде в большинстве случаев используется из .output пропала папка sourcemaps из-за чего sourcemap не загружаются в Bugsink. Лишний zip в артефакте workflow. autobuild оставляет в .output неподписанный vot-extension--firefox.zip, и он попадает в артефакт .output/.zip. |
| @@ -63,38 +105,34 @@ export function bytesToBase64(bytes: Uint8Array): string { | |||
| if (typeof btoaFn !== "function") { | |||
There was a problem hiding this comment.
может быть еще стоит btoaFn / atobFn просто на btoa / atob заменить, они вроде и так везде есть
| * (field 1 = ClientAbrState). Existing field 69 entries are replaced, every | ||
| * other field is copied byte-for-byte. | ||
| */ | ||
| export function setGeneratedSabrAudioTrackId( |
There was a problem hiding this comment.
нигде кроме тестов самой этой функции не используется
There was a problem hiding this comment.
ещё вот
Мёртвый код, четыре предупреждения lint:
youtubeSabrPlayer.ts:8: импорт WebEmbeddedFormat;youtubeSabrSupport.ts:5: импорт debug;youtubeSabrSupport.ts:437: CurrentYouTubeAudioEvidence;youtubeSabrSupport.ts:447: isVotSupportedAudioLanguage. Сама проверка поддерживаемых языков не потеряна, она переехала в resolveSabrAudioTrackId.
There was a problem hiding this comment.
Поправил. Есть ещё какие-то моменты?
There was a problem hiding this comment.
вроде нет, единственное из-за typescript 7, возможно, в ноде будет падать. Если там проблема только в моих либах, то обновлю их попозже
|
Привет! Раз уж вы сейчас перерабатываете логику выбора аудиодорожек, возможно, стоит учесть ещё один момент, о котором я ранее писал. Иногда YouTube показывает несколько дорожек одного языка, например Из-за этого может быть выбрана Возможно, стоит немного изменить выбор: если среди дорожек нужного языка есть Сейчас: const exact = availableTrackIds.find(
(trackId) => sabrTrackLanguage(trackId) === requested,
);Можно заменить на: const exactMatches = availableTrackIds.filter(
(trackId) => sabrTrackLanguage(trackId) === requested,
);
const exact =
exactMatches.find((trackId) => trackId.endsWith(".4")) ??
exactMatches[0];Таким образом, если среди дорожек нужного языка присутствует .4, будет выбрана именно она как оригинальная дорожка. Если .4 отсутствует, сохранится прежнее поведение, выбор первой подходящей дорожки. Это небольшое изменение позволит отдавать приоритет оригинальному аудио, не ломая существующую логику загрузки и резервные варианты. Разумеется, решение за вами. Просто предлагаю небольшое улучшение, поскольку, когда я изначально работал над SABR, ещё не до конца разобрался с особенностями выбора аудиодорожек. |
Старые версии Chrome я не тестировал. Проверял стратегии в разных браузерах, даже в Safari специально для этого создавал виртуальную машину с macOS. Также проверял Supermium. Времени всё детально протестировать не было, хотя хотелось, чтобы потом пользователи не жаловались на ошибки :) Что делать со старыми версиями Chrome, я даже сейчас не знаю. Другого решения у меня пока нет. Что касается Supermium, то в нём стратегии работают. Это форк Chromium с поддержкой даже Windows XP: https://github.com/win32ss/supermium Поэтому пользователи старых систем, которым нужен перевод, могут установить Supermium вместо устаревшего Chrome. |
|
@Acobat12 Интересное предложение, но хардкодить .4 нет смысла, эти цифры всегда разные. Единственный нормальный вариант это фильтровать по метаданным. Но пока никто на проблемы не жалуется, думаю, трогать это не стоит |
вообще странно, что никто не жалуется. Судя по логам, относительно много неудачных попыток загрузки через web_sabr, хоть и примерно 2/3 из них, судя по всему, по итогу, успешно загружают аудио через обычный web_abr. В будущем нужно будет обязательно расширить этот лог, чтобы понимать в чем причина т.к. сейчас ~90% |
|
можешь в vot.js дофиксить pr, чтобы я оба замержил сразу? |
|
Тяжело объяснить на словах, как это будет работать, но логика довольно простая. Если пользователь выбрал английский, сначала ищется именно английская дорожка, и только среди совпадений отдаётся приоритет .4. Например, если пользователь выбрал испанский, а у видео доступны es-US.10 и оригинальная en-US.4, будет выбрана испанская es-US.10, а не английская. Не бойтесь, этим изменением вы не сломаете переводы :) Наоборот, оно защищает от конкретной ошибки выбора аудиодорожки, о которой я ещё писал в PR #1873. В остальных случаях логика остаётся прежней. |
Кроме уже предложенной замены выше 1.
|
|
После этих изменений, останется только один возможный сценарий, который в будущем может решиться сам собой, причём изменять код для этого не потребуется. Например, оригинальный язык видео португальский ( Однако если YouTube позже добавит к этому видео автоматический дубляж на английский или другой поддерживаемый язык, при повторной попытке скрипт сможет выбрать эту дорожку и отправить её на перевод уже без каких-либо изменений в коде. А то, что пользователи сейчас особо не жалуются, вполне объяснимо. Когда VOT предлагает авторизоваться на YouTube, пользователь просто следует инструкции и пробует снова. Для него это выглядит как обычный шаг для продолжения перевода, а не как ошибка загрузки аудио. Поэтому отсутствие жалоб ещё не означает, что проблем с Так что тишина в комментариях не обязательно признак того, что всё работает идеально. Но, согласитесь, такая тишина тоже немного настораживает?)) У меня в форке такая же история тишина, блин! 😄 |
|
Небольшое дополнение к моему предыдущему комментарию. Кажется, я всё-таки упустил один важный момент. Даже если YouTube со временем добавит к видео автодубляж на поддерживаемый язык, это ещё не гарантирует, что скрипт сможет отправить новую дорожку на перевод. Проблема в том, что Яндекс может вернуть уже существующий результат перевода и не запросить аудио повторно. В таком случае логика выбора дорожек в Ранее я уже описывал способ принудительно запросить новый перевод в issue #1828. В моих тестах для этого помогала передача videoData: {
...videoData,
duration: videoData.duration + 300,
},
extraOpts: {
wasStream: true,
},Поэтому, возможно, стоит добавить отдельный режим принудительного запроса нового перевода. Как вариант, эту логику можно реализовать в При активации такого режима можно изменять Не уверен, что это самое подходящее место с точки зрения текущей архитектуры, но, возможно, такой вариант будет проще реализовать. Тогда сценарий, который я описывал ранее, действительно сможет работать: если YouTube позже добавит поддерживаемую дорожку, можно будет принудительно запустить повторную обработку и попытаться отправить Яндексу уже её. В моих тестах такой подход позволял обходить получение уже существующего перевода. Получается, с фразой "изменять код не потребуется" я немного поспешил. 😄 |
Move extension builds to WXT and improve translation reliability.
autosource-language handling for Live Voice and improve translation restarts.