Pytube: скачиваем Youtube видео с помощью Python

Pytube: скачиваем Youtube видео с помощью Python


Pytube это библиотека для скачивания видео с Youtube. Как сказано в документации, у неё нет сторонних зависимостей и она построена на стандартной библиотеке.

Установка

Установить пакет можно с помощью менеджера пакетов pip:

pip install pytube

Эта команда найдёт пакет в репозитории, скачает его и установит на локальную машину. Вывод команды будет примерно таким:

Collecting pytube
  Downloading pytube-6.2.2-py2-none-any.whl
Installing collected packages: pytube
Successfully installed pytube-6.2.2
Работаем с pytube

После завершения установки откройте консоль python и импортируйте пакет pytube:

import pytube

Класс YouTube представляет экземпляр YouTube-сессии, поэтому его нужно инициализировать так:

yt = pytube.YouTube('https://www.youtube.com/watch?v=xtZOnyYu16U')

После этого в переменной yt будет храниться вся информация о переданном видео, к примеру название файла:

fn = yt.filename

Как известно, чтобы получить значение переменной в консоли python, нужно ввести её наименование и нажить кнопку Ввод на клавиатуре:

fn
Вы должны увидеть следующее:

u'Stoto - Late Night (Original Mix)'

Всё довольно очевидно — вы видите имя файла от переданной ссылки на видео при создании экземпляра класса в его методе YouTube.__init__.

Также нам доступен атрибут video_id, который определяется при создании экземпляра класса. Можно вывести его так:

video_id = yt.video_id
print(video_id)
'xtZOnyYu16U'

Доступные для скачивания видео можно получить методом get_videos:

videos = yt.get_videos()

Выведем в цикле каждое из них:

for v in videos:
    print(v)

Для моего видео вывод будет таким:

<Video: MPEG-4 Visual (.3gp) - 144p - Simple>
<Video: MPEG-4 Visual (.3gp) - 240p - Simple>
<Video: H.264 (.mp4) - 360p - Baseline>
<Video: H.264 (.mp4) - 720p - High>
<Video: VP8 (.webm) - 360p - N/A>

Тип каждого объекта получим так:

for v in videos:
    print(type(v))

Вывод должен быть таким:

<class 'pytube.models.Video'>
<class 'pytube.models.Video'>
<class 'pytube.models.Video'>
<class 'pytube.models.Video'>
<class 'pytube.models.Video'>

Класс pytube.models.Video используется для создания отдельных экземпляров видео с дальнейшим скачиванием.

Первый экземпляр можно получить по его индексу:

first_video = videos[0]
print(first_video)

Video имеет много атрибутов, таких как filename, url, extension, video_codec, audio_codec, audio_bitrate, resolution и т.д.

Расширение видео получим так:

first_video.extension
'3gp'

Качество видео:

quality = first_video.resolution
print(quality)
'144p'

Битрейт:

audio_bitrate = first_video.audio_bitrate
video_bitrate = first_video.video_bitrate
print(audio_bitrate)
print(video_bitrate)

Скачать видео также просто:

first_video.download('/Users/oltjano/Desktop')

Выбранное видео будет загружено в папку /Users/oltjano/Desktop

А если вам нужно перезаписать загруженное ранее видео, присвойте переменной force_overwrite значение True:

first_video.download(path='/Users/oltjano/Desktop', force_overwrite=True)

Скачиваем видео определённого формата

Начнём с начала. Перезапустите консоль python и введите:

import pytube
video_link = 'https://www.youtube.com/watch?v=8ZpVwAeLzm4'

Создадим Youtube сессию и запросим доступные форматы:

yt = pytube.YouTube(video_link)
videos = yt.videos

Используя метод get можно отфильтровать видео по формату и качеству:

video = yt.get('mp4', '720p')
Если такое видео будет доступно, в переменной появятся ссылки на него, иначе — будет выведена ошибка.

Итак, у нас нет ошибки, значит, видео можно скачать. Зададим путь для загруженного файла и загрузим видео:

path = '/Users/Oltjano/Desktop'
video.download(path)

Готово!

Источник: «Pytube: How to Download Youtube Videos with this Python Tool»

3 thoughts on “Pytube: скачиваем Youtube видео с помощью Python

    • А что делать, если нужно скачать не все видео, а только часть его?
      Пробывал скачивать все и нарезать, но в связке андроид+Python это выглядит нереально

Leave a Comment