И если с нетфликсом примерно понятно что делать - там сабы стабильны и количество сериалов не такое большое, то с ютубом начинатся проблемы - ты не можешь прекешировать абсолютно все триллионы видео, которые там есть и загружаются каждый день.
И поэтому было решено: надо дебажить ютуб и вытаскивать существующие сабы из веба.
И тут начинается проблема: инструментов для того, чтобы делать это удобно тупо нет.
Vitest - он имеет browser mode, но он работает исключительно со своим веб интерфейсом и не позволяет его инжектить на сторонние сайты. Не подходит
Playwright - умеет в page.evaluate, имеет playwright-cli, но делает ставку на управление браузером, а не выполнение кода. Поясню: evaluate(() => ...) работает максимально тупо: серилизует колбек в текст и передаёт его в браузер. В итоге ты не можешь использовать в этом колбеке замыкания, импорты и прочую вкусность. А самое главное - LLM вынуждена на каждый чих генерировать весь код на js(даже если он написан на TS), что бьёт по скорости, стоимости и корректности. И даже всякие попусы и гопоты не справляются в корректном копировании кода в девтулы, так как им надо работать тупо сборщиком.
В итоге мне пришлось написать cli тулу
inpagerun, которая работает максимально примивно: принимает через --code код, который надо запустить в девтулах браузера, собирает его через vite и запускает. В итоге есть поддержка async/await, импортов файлов и тайпскрипта. На данный момент вроде как самое удобное решение для того, чтобы на рандомном сайте потестить свой код. Просто выполняешь inpagerun -u <url> -c "const data = await import('./logic.ts'); console.log(data.foo())" и всё работает.https://github.com/xavescor/inpagerun
P.S. если вам интересно в ближайшее время потестить изучалку языков(на старте будет поддержка английского, испанского и португальского), то велком в комменты. С меня бесплатный сервис - с вас будущая обратная связь
