Как скачать видео ютуб на питон?

Как скачать видео ютубе на питон?
Я пытался скачать видео через pytube, youtube_dl - либо ошибка или было что видео с звуком, но без картинки или просто видео файл без нечего (разные коды)

os linux ubuntu 20.04. Буду благодарен за ответ.


Ответы (3 шт):

Автор решения: Robot
from pytube import YouTube

yt = YouTube('https://www.youtube.com/watch?v=o5wC0QqqN1c') #ссылка на видео.
# yt.stream показывает какое видео ты можешь скачать 
# (mp4(720) + audio или только mp4(1080) без звука). 
# Сейчас стоит фильтр по mp4.
print(yt.streams.filter(file_extension='mp4')) 
stream = yt.streams.get_by_itag(22) #выбираем по тегу, в каком формате будем скачивать.
stream.download() #загружаем видео.
→ Ссылка
Автор решения: FanaticExplorer

Советую перейти форк youtube-dl - yt-dlp. Синтаксис полностью идентичен youtube-dl. К тому же, разработчики youtube-dl бросили проект и сказали всем перейти на yt-dlp. Так же у него немного больше функций, больше поддерживаемых сайтов для загрузки и больше скорость.

import yt_dlp

def download(link, name='%(title)s'):
    ydl_opts = {
        'format': 'bestvideo+bestaudio/best', #берем самое лучшее качество видео и фото
        'outtmpl': '{}.%(ext)s'.format(name), #наше выбраное имя, если его не было, то стандартное - название видео на самом сайте
    }
    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        info_dict = ydl.extract_info(link, download=True)
        downloaded_file_path = ydl.prepare_filename(info_dict)
    print(f"Видео {downloaded_file_path} успешно загружено!")
    return downloaded_file_path


print(download('https://www.youtube.com/watch?v=uHgt8giw1LY', 'Привет!'))

Вы можете ознакомиться с документацией здесь

P.S. Возможно, я немного перегнул палку. Без возвращения пути и функции можно облегчить код до:

import yt_dlp
ydl_opts = {'format': 'bestvideo+bestaudio/best'}
URLS = ['https://www.youtube.com/watch?v=uHgt8giw1LY']
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download(URLS)
→ Ссылка
Автор решения: Glagol_SpirinS
import os
from pytube import YouTube

link = input("Enter YouTube link: ")
yt = YouTube(link)
available_streams = yt.streams.filter(file_extension='mp4')
print("Available streams:")
for stream in available_streams:
    resolution = stream.resolution if stream.resolution else "audio only"
    fps = f", fps: {stream.fps}" if hasattr(stream, 'fps') else ""
    print(f"itag: {stream.itag}, resolution: {resolution}{fps}, type: {stream.mime_type}")

itag_value = int(input("Enter itag value of desired stream: "))
stream = yt.streams.get_by_itag(itag_value)

if stream:
    output_path = 'C:/Users/root/Videos'
    if not os.path.exists(output_path):
        os.makedirs(output_path)

    stream.download(output_path=output_path)
    print("Download completed!")
else:
    print("Error: Stream with the specified itag value is not available.")
→ Ссылка