Crear GUI para descargar videos de Youtube usando Python

Requisitos previos: interfaz gráfica de usuario de Python – tkinter

YouTube es un sitio web muy popular para compartir videos. Descargar un video/lista de reproducción de YouTube es una tarea tediosa. Descargar ese video a través de Downloader o intentar descargarlo de un sitio web aleatorio aumenta el riesgo de lamer sus datos personales. Usando el paquete Python Tkinter, esta tarea es muy simple, eficiente y segura. Pocos códigos de grupo descargarán el video por ti. Para esto, hay dos bibliotecas de Python: Tkinter y pytube
 

Módulos Requeridos:

  • pytube: pytube es una biblioteca de Python liviana, fácil de usar y sin dependencias que se usa para descargar videos de la web. pytube, no es una biblioteca configurada automáticamente. Necesitas instalarlo antes de usarlo. La instalación de pytube es fácil cuando tienes pip. En la Terminal o Símbolo del sistema, escriba el siguiente comando para instalar pytube.
    Si está en Mac OS X o Linux, lo más probable es que uno de los siguientes dos comandos funcione para usted:

pip instalar pytube 
git clone git://github.com/NFicano/pytube.git pytube | pitube de cd | instalar python setup.py

  • Si estás en Windows 
pip install pytube3
  • Tkinter : Tkinter es un enlace de Python al kit de herramientas de la GUI de Tk. Es la interfaz estándar de Python para el kit de herramientas Tk GUI o, en palabras simples, Tkinter se usa como una interfaz gráfica de usuario de Python. Tkinter es la biblioteca nativa, no necesita instalarla externamente, solo importe, mientras la usa.

A continuación se muestra la implementación.

Python3

# Importing necessary packages
import tkinter as tk
from tkinter import *
from pytube import YouTube
from tkinter import messagebox, filedialog
 
 
# Defining CreateWidgets() function
# to create necessary tkinter widgets
def Widgets():
 
    head_label = Label(root, text="YouTube Video Downloader Using Tkinter",
                       padx=15,
                       pady=15,
                       font="SegoeUI 14",
                       bg="palegreen1",
                       fg="red")
    head_label.grid(row=1,
                    column=1,
                    pady=10,
                    padx=5,
                    columnspan=3)
 
    link_label = Label(root,
                       text="YouTube link :",
                       bg="salmon",
                       pady=5,
                       padx=5)
    link_label.grid(row=2,
                    column=0,
                    pady=5,
                    padx=5)
 
    root.linkText = Entry(root,
                          width=35,
                          textvariable=video_Link,
                          font="Arial 14")
    root.linkText.grid(row=2,
                       column=1,
                       pady=5,
                       padx=5,
                       columnspan=2)
 
 
    destination_label = Label(root,
                              text="Destination :",
                              bg="salmon",
                              pady=5,
                              padx=9)
    destination_label.grid(row=3,
                           column=0,
                           pady=5,
                           padx=5)
 
 
    root.destinationText = Entry(root,
                                 width=27,
                                 textvariable=download_Path,
                                 font="Arial 14")
    root.destinationText.grid(row=3,
                              column=1,
                              pady=5,
                              padx=5)
 
 
    browse_B = Button(root,
                      text="Browse",
                      command=Browse,
                      width=10,
                      bg="bisque",
                      relief=GROOVE)
    browse_B.grid(row=3,
                  column=2,
                  pady=1,
                  padx=1)
 
    Download_B = Button(root,
                        text="Download Video",
                        command=Download,
                        width=20,
                        bg="thistle1",
                        pady=10,
                        padx=15,
                        relief=GROOVE,
                        font="Georgia, 13")
    Download_B.grid(row=4,
                    column=1,
                    pady=20,
                    padx=20)
 
 
# Defining Browse() to select a
# destination folder to save the video
 
def Browse():
    # Presenting user with a pop-up for
    # directory selection. initialdir
    # argument is optional Retrieving the
    # user-input destination directory and
    # storing it in downloadDirectory
    download_Directory = filedialog.askdirectory(
        initialdir="YOUR DIRECTORY PATH", title="Save Video")
 
    # Displaying the directory in the directory
    # textbox
    download_Path.set(download_Directory)
 
# Defining Download() to download the video
 
 
def Download():
 
    # getting user-input Youtube Link
    Youtube_link = video_Link.get()
 
    # select the optimal location for
    # saving file's
    download_Folder = download_Path.get()
 
    # Creating object of YouTube()
    getVideo = YouTube(Youtube_link)
 
    # Getting all the available streams of the
    # youtube video and selecting the first
    # from the
    videoStream = getVideo.streams.first()
 
    # Downloading the video to destination
    # directory
    videoStream.download(download_Folder)
 
    # Displaying the message
    messagebox.showinfo("SUCCESSFULLY",
                        "DOWNLOADED AND SAVED IN\n"
                        + download_Folder)
 
 
# Creating object of tk class
root = tk.Tk()
 
# Setting the title, background color
# and size of the tkinter window and
# disabling the resizing property
root.geometry("520x280")
root.resizable(False, False)
root.title("YouTube Video Downloader")
root.config(background="PaleGreen1")
 
# Creating the tkinter Variables
video_Link = StringVar()
download_Path = StringVar()
 
# Calling the Widgets() function
Widgets()
 
# Defining infinite loop to run
# application
root.mainloop()

Producción:

Publicación traducida automáticamente

Artículo escrito por akash_kumar_singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *