04 августа 2020

Как я видео с YouTube качал и ограничения обходил.


В наше неспокойное время информация имеет свойство быстро появляться и исчезать практически бесследно. С некоторых пор у меня появилась привычка сохранять локально информацию, которая имеет для хотя бы минимальную ценность, в том числе видео.

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

Про видео и пойдёт разговор.

Для скачивания видео я довольно давно пользуюсь программой youtube-dl. Она поддерживает огромное множество хостингов, умеет скачивать и конвертировать субтитры, а так же сохранять постеры и описания. Пишут её очень упорные люди, потому что исправления для обхода нового финта со стороны хостингов выходит буквально в течение нескольких дней.

Но есть у неё и недостатки. Механизм скачивания видео под своей учётной записью Google с указанием адреса электронной почты чаще не работает, чем работает. Из-за этого скачивание видео с ограничениями заканчивается ошибкой.

Раньше с подобным я сталкивался крайне редко и обычно забивал, но вот возникла ситуация, когда видео очень хотелось заполучить в виде файла на диске.

Youtube-dl выдавал сообщение "YouTube said: Unable to extract video data" и ничего не качал. Тогда я решил поискать решение с помощью online-качалок. В большинстве своём они выдавали такое же сообщение, но два сервиса всё же справились с роликом.

Первым из них был savefrom.net. Вместо ошибки он выдал ссылки на скачивание всех возможных вариантов разрешений. Варианты видео с самый высокими разрешениями были без звука. Его надо брать из других вариантов и собирать потом результат в MKVToolNix, например, т.е. скачать видео надо минимум два раза.

Вторым сервисом, который смог, оказался ddownr. При вставки ссылки информации о ролике никакой не отобразилось, но при попытке скачать вариант "WEBM 4K" вместо ошибка началась загрузка видео сервисом, после чего он выдал ссылка на загрузку готового файла на диск.

А чуть позже я узнал способ, с помощью которого можно скачать этот ролик средствами youtube-dl. Последний умеет не только авторизоваться на сайте, но и использовать cookies из файла. Для сохранения cookies в файл я использовал расширение cookies.txt для Firefox. Оно добавляет кнопку на панель, при нажатии на которую появляется меню из двух пунктов:
  • ALL - сохранить все cookies в файл;
  • Current site - сохранить cookies только для сайта в активной вкладке.
В обоих случаях появляется окно сохранения файла "cookies.txt", но во втором варианте его размер будет заметно меньше. Первый вариант пригодится, если cookies из второго будет не достаточно.

Я проделал описанную операцию на вкладке с открытой главной страницей YouTube и получил файл размером 1,7 кБ. Потом я скормил его вместе со ссылкой на видео и другими параметрами программе youtube-dl:
$ youtube-dl "https://www.youtube.com/watch?v=***********" --convert-subs ass --all-subs --add-metadata --write-thumbnail --write-description --cookies cookies.txt
[youtube] youtube-id: Downloading webpage
WARNING: video doesn't have subtitles
[info] Writing video description to: video-youtube-id.description
[youtube] youtube-id: Downloading thumbnail ...
[youtube] youtube-id: Writing thumbnail to: video-youtube-id.webp
[download] Destination: video-youtube-id.f315.webm
[download] 100% of 652.52MiB in 02:52
[download] Destination: video-youtube-id.f251.webm
[download] 100% of 3.13MiB in 00:00
[ffmpeg] Merging formats into "video-youtube-id.webm"
Deleting original file video-youtube-id.f315.webm (pass -k to keep)
Deleting original file video-youtube-id.f251.webm (pass -k to keep)
[ffmpeg] Adding metadata to 'video-youtube-id.webm'
[ffmpeg] There aren't any subtitles to convert

Видео успешно скачалось в максимальном разрешении со звуком, описанием и постером.

В сухом остатке есть аж два ресурса, которые скорее всего не подведут в случае единичного ролика, и вариант, когда надо будет скачать сразу несколько роликов, которые в браузере открываются, а качаться не хотят.