Найти тему
[PYTHON:TODAY]

Как скачать видео с youtube с помощью Python

Друзья всем привет, вы на канале PYTHONTODAY, добро пожаловать в рубрику #tipsandtricks , в которой мы создаём интересные, полезные и весьма простые программы на языке Python.

Сегодня мы напишем свою собственную программу для скачивания видео с YouTube.

pythontoday
pythontoday

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

Мне стала интересна оценочная стоимость и посещаемость подобных ресурсов, и как следствие появился коммерческий интерес создания аналога и желание разобраться как это всё работает.

pythontoday
pythontoday

Сегодня мы напишем скрипт с помощью которого сможем выбирать качество видео файла, а затем скачивать его.

pythontoday
pythontoday

Окей, давайте приступим к написанию кода.

Установим две библиотеки youtube-dl и pafy:

pythontoday
pythontoday

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

Импортируем библиотеку и первым делом создадим переменную url, это будет ссылка на какой нибудь ролик:

pythontoday
pythontoday

Напечатаем подсказку пользователю и обернём получение ссылки в функцию input:

pythontoday
pythontoday

Создадим функцию download(url) которая будет принимать один параметр, полученный от пользователя url:

pythontoday
pythontoday

Создаём объект pafy и сразу обернём код в try | except:

pythontoday
pythontoday

Получим все видео потоки содержащие звуковую дорожку:

pythontoday
pythontoday

Создадим словарь available_streams и переменную count:

pythontoday
pythontoday

И в цикле пробегаясь по нашему списку потоков, будем наполнять словарь ключами count и значениями stream, а после увеличивать count += 1:

pythontoday
pythontoday

Вызовим функцию download(url), запустим скрипт и передадим ссылку на YouTube видео:

pythontoday
pythontoday
pythontoday
pythontoday

Отлично, мы получаем список из возможных вариантов для скачивания.

Далее запросим у пользователя желаемое качество:

pythontoday
pythontoday

Обратимся к списку наших потоков и передадим в качестве индекса stream_count - 1, далее вызвав метод .download():

pythontoday
pythontoday

Почему - 1? Потому, что мы задали count = 1 Если бы он был равен 0, то нужды отнимать единицу не было бы. Но, я подумал, что отчёт с 1 для пользователя будет привычней.

В конце добавим print об успешном скачивании:

pythontoday
pythontoday

Тестируем код:

pythontoday
pythontoday

Наш код отлично работает. Реализацию полной программы вы можете посмотреть На YouTube канале PYTHONTODAY на котором найдете видеоуроки:

  • - по созданию ботов
  • - парсингу сайтов
  • - приложений на смартфон
  • - машинному обучению и big data с нуля

Освой сетевую безопасность, и задавай вопросы в клубе.

Вступай в клуб Python разработчиков!

Код из видео доступен на Github и телеграм канале. Вот собственно и всё. Enjoy!

Читайте так-же:

Конвертер текста в аудио на Python

Полный гайд по строкам в Python

Числа в Python

Настраиваем свой VPN

Как узнать процент заряда батареи на Python

Установка Python на Windows

Как подключить PostgreSQL к Django

Спасибо, что дочитали до конца. Вы меня очень поддержите, если поставите "Лайк", оставите комментарий или ПОДПИШИТЕСЬ на мой канал :)