Делаем свой загрузчик видео с Ютуба
easy

Делаем свой загрузчик видео с Ютуба

Независимый и автономный

В интернете много сервисов по скачиванию видео с ютуба. Сегодня мы сделаем свой — простой, понятный и полностью настраиваемый. Для этого мы расчехлим Python — он хорошо справляется с подобными задачами. Если вы совсем новичок в Python — почитайте сначала нашу вводную статью:

Как установить Python на компьютер и начать на нём писать

Подключаем библиотеки

Для загрузки видео нам понадобится библиотека pytube — в ней уже есть всё, что нам нужно. Ещё мы будем использовать библиотеку tkinter для отрисовки интерфейса — мы уже работали с ней, когда писали свою игру на Python.

Для установки библиотек пишем в командной строке:

pip install tkinter
pip install pytube

Подключаем библиотеки

Теперь подключаем библиотеки в коде:

from tkinter import *
import pytube
from tkinter import messagebox

Рисуем интерфейс

Задача интерфейса — сделать так, чтобы мы смогли вставить ссылку на видео и нажать кнопку «Скачать». Для этого мы нарисуем:

  • поле ввода адреса, откуда надо скачать видео;
  • кнопку «Скачать» рядом с полем;
  • кнопки очистки и выхода.

Это самый простой и минимальный интерфейс, но он уже позволит решить нашу задачу.

Разместим элементы на форме с помощью кода. Если вам непонятно, что тут происходит, посмотрите статью про программу для ведения бюджета — мы там разобрали, как работает графический интерфейс.

# заголовок формы
lb=Label(root,text="---Загрузка видео с YouTube---",font=('Arial,15,bold'),bg='#D3D3D3')
lb.pack(pady=15)
# пояснительный текст для поля с адресом
lb1=Label(root,text="Ссылка на видео :",font=('Arial,15,bold'),bg='#D3D3D3')
lb1.place(x=10,y=80)

# поле ввода адреса видео
link1=StringVar()
En1=Entry(root,textvariable=link1,font=('Arial,15,bold'))
En1.place(x=230,y=80)

# кнопка скачивания
btn1=Button(root,text="Скачать",font=('Arial,10,bold'),bd=4,command=download)
btn1.place(x=330,y=130)

# кнопки очистки и выхода
btn2=Button(root,text="Очистить",font=('Arial,10,bold'),bd=4,command=reset)
btn2.place(x=160,y=190)
btn3=Button(root,text=" Выход ",font=('Arial,10,bold'),bd=4,command=Exit)
btn3.place(x=250,y=190)

# запускаем окно
root.mainloop()
Делаем свой загрузчик видео с Ютуба

Настраиваем кнопки

Начнём с простых — очистки и выхода:

# при нажатии на кнопку очистки очищаем строку с адресом видео
def reset():
    link1.set("")

# при нажатии на кнопку выхода — закрываем окно с интерфейсом
def Exit():
    root.destroy()

Теперь сделаем самое главное — настроим всё так, чтобы скрипт скачивал видео с ютуба в наилучшем качестве, которое там доступно. Логика такая:

  1. Берём адрес и с его помощью подключаемся к ютубу.
  2. Выясняем, какое у видео максимальное разрешение.
  3. Скачиваем это видео и сообщаем об этом пользователю.
  4. Если не получилось скачать видео по ссылке или получить данные о его качестве — выводим сообщение об ошибке.

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

# механика кнопки Скачать
def download():
    # пробуем скачать видео по ссылке
    try:
        # формируем адрес
        ytlink=link1.get()
        # переводим его в нужный формат
        youtubelink=pytube.YouTube(ytlink)
        # получаем ссылку на видео с самым высоким качеством
        video=youtubelink.streams.get_highest_resolution()
        # скачиваем видео
        video.download()
        # выводим результат
        Result="Загрузка завершена"
        messagebox.showinfo("Готово",Result)
    # если скачать не получилось
    except:
        # выводим сообщение об ошибке
        Result="Ссылка не работает"
        messagebox.showerror("Ошибка",Result)

Что дальше

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

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

Сделаем это в другой раз, а пока попробуйте сами добавить эти функции, используя библиотеку pytube.

# подключаем библиотеки
from tkinter import *
import pytube
from tkinter import messagebox

# рисуем главное окно
root=Tk()
root.geometry("500x250")
root.resizable(False,False)
# заголовок окна
root.title("Код")
# цвет фона
root.config(bg='#D3D3D3')

# механика кнопки Скачать
def download():
    # пробуем скачать видео по ссылке
    try:
        # формируем адрес
        ytlink=link1.get()
        # переводим его в нужный формат
        youtubelink=pytube.YouTube(ytlink)
        # получаем ссылку на видео с самым высоким качеством
        video=youtubelink.streams.get_highest_resolution()
        # скачиваем видео
        video.download()
        # выводим результат
        Result="Загрузка завершена"
        messagebox.showinfo("Готово",Result)
    # если скачать не получилось
    except:
        # выводим сообщение об ошибке
        Result="Ссылка не работает"
        messagebox.showerror("Ошибка",Result)

# при нажатии на кнопку очистки очищаем строку с адресом видео
def reset():
    link1.set("")

# при нажатии на кнопку выхода — закрываем окно с интерфейсом
def Exit():
    root.destroy()

# заголовок формы
lb=Label(root,text="---Загрузка видео с YouTube---",font=('Arial,15,bold'),bg='#D3D3D3')
lb.pack(pady=15)
# пояснительный текст для поля с адресом
lb1=Label(root,text="Ссылка на видео :",font=('Arial,15,bold'),bg='#D3D3D3')
lb1.place(x=10,y=80)

# поле ввода адреса видео
link1=StringVar()
En1=Entry(root,textvariable=link1,font=('Arial,15,bold'))
En1.place(x=230,y=80)

# кнопка скачивания
btn1=Button(root,text="Скачать",font=('Arial,10,bold'),bd=4,command=download)
btn1.place(x=330,y=130)

# кнопки очистки и выхода
btn2=Button(root,text="Очистить",font=('Arial,10,bold'),bd=4,command=reset)
btn2.place(x=160,y=190)
btn3=Button(root,text=" Выход ",font=('Arial,10,bold'),bd=4,command=Exit)
btn3.place(x=250,y=190)

# запускаем окно
root.mainloop()

Текст:

Михаил Полянин

Редактор:

Михаил Полянин

Обложка:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Мария Дронова

Соцсети:

Юлия Зубарева

Любишь Python? Зарабатывай на нём!
Изучите самый модный язык программирования и станьте крутым бэкенд-разработчиком. Старт — бесплатно.
Попробовать бесплатно
Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём!
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
easy