Э-э… не в курсе, что за сайт, и что за файл, но с типичными индексными файлами (передающими поток кусочками) это делается примерно так (в образовательных целях):
1. Открывается страница, содержащая видео
2. Запускается инспектор (F12, или Главное меню → Инструменты⧸Tools → Inspector, или правой кнопкой мыши где-нибудь на странице и далее в меню → Inspect element или что-то подобное)
3. В инспекторе переключиться на вкладку «Сеть⧸Net»
4. В окне бразуера, где видна страница, нажимаем F5 (или Ctrl+R). Обычно при запущенном инспекторе страница прогружается заново с нуля (кеш бразуера игнорируется). Грузить без кеша важно.
5. Среди подгруженных страницей файлов должен быть XML-файл, который называется index.xml (также вероятны имена типа playlist.xml, video.xml, stream.xml, вместо .xml может быть другое расширение, но браузер должен распознавать этот файл именно как XML, поэтому в случае затруднения всегда можно отсортировать подгруженные файлы по типу и среди XML найти искомое)
6. Если XML-файла так и не нашлось, вероятно, он подгружается динамично джаваскриптом, когда активируется окошко видео. Если у вас адблок или иной запретитель лджаваскрипта мешает видео сразу загрузиться и проигрываться, нужно добиться, чтобы видео можно было запустить по кнопке Play и чтобы оно начало проигрываться в бразуере. Вот тогда-то — видео пошло-поехало — следует поставить его быстренько на паузу и смотреть, что там нападало в подгруженных файлах на вкладке «Сеть» в инспекторе (инспектор следует всё время держать открытым). Как правило, индексный файл появляется, а за ним успевает подгрузиться ещё примерно дюжина.
7. На найденном индексном файле кликаем правой кнопкой мыши и выбираем Копировать URL.
8. Этот URL надо подать програме yt-dlp, она скачает видео. Работает из командной строки, и проще всего с ней тем, у кого стоит линукс. Хотя и в вендах есть возможность запускать её, но там это а) непривычно б) надо указывать yt-dlp, где лежит Python, на котором она написана.
9.
(для удобства) Индексный файл, как правило, содержит указатели на несколько форматов потоков. Вывести их названия, чтобы выбрать качество «по себе», можно, добавив после yt-dlp -F. Форматы называются по типу «url2080», «dash-1080» или как-то иначе. Обратите внимание, что формат может быть содержащим только видео или только звуковую дорожку. (См. шапку таблицы форматов, которую выведет yt-dlp.) В этом случае нужно их комбинировать. Тогда команда принимает вид
Код:
$ yt-dlp -f ФОРМАТ_ВИДЕО+ФОРМАТ_АУДИО --remux-video mkv ССЫЛКА
где, ФОРМАТ_ВИДЕО*—*нужный вам формат видео, ФОРМАТ_АУДИО*—*аналогично, знак «+» между ними должен соединять их без пробела, но между -f и форатами пробел должен быть. --remux-video перепаковывает отдельно скачиваемые потоки в один файл указанного формата, в данном случае MKV. Ну и ССЫЛКА*—*это URL того индексного файла, который достали из браузера.
Таким образом можно вытягивать видео, например, с playground.ru.
Другие полезные ключи:
Cкрытый текст -
--cookies ПУТЬ_ДО_ФАЙЛА_С_КУКАМИ
Пригождается, когда сайт требует аутентификации куками. То есть вы заходите под своим профилем на сайт (тот же ютуб во время приступов ярости у гугла требует куков), экспортируете куки сайта (только сайта, не надо все!) через какое-нибудь расширение для браузера (сотни их), и потом скармливаете этот файл yt-dlp.
--limit-rate 100K
Может понадобиться, если сайт злостно защищается против домогательств. Браузер-то стягивает видео джаваскриптом, потихоньку, с паузами и задержками во время проигрывания (хоть все и говорят, что раньше без этих «умных» задержек было лучше, болт везде клали на то, как пользователям лучше). Поэтому скачивание потока одним махом напрягает сервер и он может рубить канал. Чтобы этого не происходило, указываем yt-dlp использовать ограниченный канал.
--retries infinite
При обрыве соединения пытаться ещё раз, и так до бесконечности.
--fragment-retries infinite
То же самое, но для отдельного кусочка видео.
--http-chunk-size 100K
Ограничивает размер куска данных, запакованного в HTTP. Можно сказать, «ограничивает вес брутто» отдельного куска. Нужно редко.
--no-mtime
Записывает скачанное видео, задавая ему естественно получающееся при скачивании время последней модификации файла. (Иначе yt-dlp задаст это время в соответствии с метаданными файла). Влияет на то, где окажется файл, когда вы будете сортировать папку по времени файлов: будто вы его и правда стянули 15 лет назад или — всё-таки вчера.
--embed-subs
Если к видео есть субтитры (на ютубе часто есть), то запаковать их к видео.
--sub-format best
Выбирает лучший из доступных форматов видео (если их несколько). По идее, тут можно задавать конкретный формат, то есть вам даётся возможность скачивать не WebVTT, а что-то более вменяемое. Но более вменяемого часто нет,*поэтому приходится брать, что выложили, «best».
--sub-lang 'en.*'
Выбирает субтитры (если задано скачивание субтитров) по кодовому обозначению языка. В примере выбираются английские.