Descargue videos de Youtube o listas de reproducción completas con Python

Requisito previo:

Python ofrece múltiples opciones para desarrollar GUI (interfaz gráfica de usuario). De todos los métodos GUI, Tkinter es el método más utilizado. Es una interfaz estándar de Python para el kit de herramientas Tk GUI que se envía con Python. Python con Tkinter es la forma más rápida y sencilla de crear aplicaciones GUI.

En este artículo, discutiremos cómo podemos crear una aplicación GUI para descargar un video de YouTube o una lista de reproducción completa de YouTube usando python. 

Antes de comenzar, hablaremos sobre el módulo de pyyoutube . El módulo de pyyoutube proporciona una manera fácil de usar la API de datos de YouTube V3.

Instalación:

pip install python-youtube
pip install pytube

Descargar video seleccionado de la lista de reproducción de YouTube

En esta sección, aprenderemos cómo descargar solo videos seleccionados de la lista de reproducción de YouTube usando Tkinter en Python.

Acercarse:

  • Primero, buscaremos todos los enlaces de video de la lista de reproducción de YouTube usando el módulo pyyoutube .
  • Luego seleccionaremos el enlace del video, el cual queremos descargar.
  • Luego, descargaremos cada video uno por uno usando el módulo pytube .

A continuación se muestra el aspecto de la GUI:

Entendamos la implementación paso a paso:

  • Cree una ventana de Tkinter y agregue botones, etiquetas, barra de desplazamiento, etc.

Python3

# Import Required Modules
from tkinter import *
  
# Create Object
root = Tk()
  
# Set geometry
root.geometry('400x400')
  
# Add Label
Label(root, text="Youtube Playlist Downloader",
      font="italic 15 bold").pack(pady=10)
Label(root, text="Enter Playlist URL:-", font="italic 10").pack()
  
# Add Entry box
playlistId = Entry(root, width=60)
playlistId.pack(pady=5)
  
# Add Button
get_videos = Button(root, text="Get Videos")
get_videos.pack(pady=10)
  
# Add Scorllbar
scrollbar = Scrollbar(root)
scrollbar.pack(side=RIGHT, fill=BOTH)
list_box = Listbox(root, selectmode="multiple")
list_box.pack(expand=YES, fill="both")
list_box.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=list_box.yview)
  
download_start = Button(root, text="Download Start", state=DISABLED)
download_start.pack(pady=10)
  
# Execute Tkinter
root.mainloop()
  • Ahora vamos a crear tres funciones:
  1. get_list_videos: – Dará una lista de todos los enlaces de video de una lista de reproducción de YouTube.
  2. enhebrado: – Se utiliza para enhebrar en Tkinter.
  3. download_videos: – Se utiliza para descargar videos de YouTube.

Python3

def get_list_videos():
    global playlist_item_by_id
    # Clear ListBox
    list_box.delete(0, 'end')
  
    # Create API Object
    api = Api(api_key='Enter API Key')
  
    if "youtube" in playlistId.get():
        playlist_id = playlistId.get()[len(
            "https://www.youtube.com/playlist?list="):]
    else:
        playlist_id = playlistId.get()
  
    # Get list of video links
    playlist_item_by_id = api.get_playlist_items(
        playlist_id=playlist_id, count=None, return_json=True)
  
    # Iterate through all video links and insert into listbox
    for index, videoid in enumerate(playlist_item_by_id['items']):
        list_box.insert(
            END, f" {str(index+1)}. {videoid['contentDetails']['videoId']}")
  
    download_start.config(state=NORMAL)
  
  
def threading():
    # Call download_videos function
    t1 = Thread(target=download_videos)
    t1.start()
  
  
def download_videos():
    download_start.config(state="disabled")
    get_videos.config(state="disabled")
  
    # Iterate through all selected videos
    for i in list_box.curselection():
        videoid = playlist_item_by_id['items'][i]['contentDetails']['videoId']
  
        link = f"https://www.youtube.com/watch?v={videoid}"
  
        yt_obj = YouTube(link)
  
        filters = yt_obj.streams.filter(progressive=True, file_extension='mp4')
  
        # download the highest quality video
        filters.get_highest_resolution().download()
  
    messagebox.showinfo("Success", "Video Successfully downloaded")
    download_start.config(state="normal")
    get_videos.config(state="normal")

A continuación se muestra la implementación completa:

Python3

# Import Required Modules
from tkinter import *
from pyyoutube import Api
from pytube import YouTube
from threading import Thread
from tkinter import messagebox
  
  
def get_list_videos():
    global playlist_item_by_id
    # Clear ListBox
    list_box.delete(0, 'end')
  
    # Create API Object
    api = Api(api_key='Enter API Key')
  
    if "youtube" in playlistId.get():
        playlist_id = playlistId.get()[len(
            "https://www.youtube.com/playlist?list="):]
    else:
        playlist_id = playlistId.get()
  
    # Get list of video links
    playlist_item_by_id = api.get_playlist_items(
        playlist_id=playlist_id, count=None, return_json=True)
  
    # Iterate through all video links and insert into listbox
    for index, videoid in enumerate(playlist_item_by_id['items']):
        list_box.insert(
            END, f" {str(index+1)}. {videoid['contentDetails']['videoId']}")
  
    download_start.config(state=NORMAL)
  
  
def threading():
    # Call download_videos function
    t1 = Thread(target=download_videos)
    t1.start()
  
  
def download_videos():
    download_start.config(state="disabled")
    get_videos.config(state="disabled")
  
    # Iterate through all selected videos
    for i in list_box.curselection():
        videoid = playlist_item_by_id['items'][i]['contentDetails']['videoId']
  
        link = f"https://www.youtube.com/watch?v={videoid}"
  
        yt_obj = YouTube(link)
  
        filters = yt_obj.streams.filter(progressive=True, file_extension='mp4')
  
        # download the highest quality video
        filters.get_highest_resolution().download()
  
    messagebox.showinfo("Success", "Video Successfully downloaded")
    download_start.config(state="normal")
    get_videos.config(state="normal")
  
  
# Create Object
root = Tk()
# Set geometry
root.geometry('400x400')
  
# Add Label
Label(root, text="Youtube Playlist Downloader",
      font="italic 15 bold").pack(pady=10)
Label(root, text="Enter Playlist URL:-", font="italic 10").pack()
  
# Add Entry box
playlistId = Entry(root, width=60)
playlistId.pack(pady=5)
  
# Add Button
get_videos = Button(root, text="Get Videos", command=get_list_videos)
get_videos.pack(pady=10)
  
# Add Scrollbar
scrollbar = Scrollbar(root)
scrollbar.pack(side=RIGHT, fill=BOTH)
list_box = Listbox(root, selectmode="multiple")
list_box.pack(expand=YES, fill="both")
list_box.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=list_box.yview)
  
download_start = Button(root, text="Download Start",
                        command=threading, state=DISABLED)
download_start.pack(pady=10)
  
# Execute Tkinter
root.mainloop()

Producción:

Descargar lista de reproducción completa de YouTube

Aquí, aprenderemos cómo descargar la lista de reproducción completa de YouTube en Tkinter usando Python.

Acercarse:

  • Primero, buscaremos todos los enlaces de video de la lista de reproducción de YouTube usando el módulo pyyoutube .
  • Luego iteraremos a través de todos los videos y descargaremos cada video uno por uno usando el módulo pytube .

A continuación se muestra el aspecto de la GUI:

Entendamos la implementación paso a paso:

  • Cree una ventana de Tkinter y agregue botones, etiquetas, etc.

Python3

# Import Required Modules
from tkinter import *
  
# Create Object
root = Tk()
  
# Set geometry
root.geometry('400x200')
  
# Add Label
Label(root, text="Youtube Playlist Downloader",
      font="italic 15 bold").pack(pady=10)
Label(root, text="Enter Playlist URL:-", font="italic 10").pack()
  
# Add Entry box
playlistId = Entry(root, width=60)
playlistId.pack(pady=5)
  
download_start = Button(root, text="Download Start")
download_start.pack(pady=10)
  
# Execute Tkinter
root.mainloop()
  • Ahora vamos a crear dos funciones:
  1. enhebrado: – Se utiliza para enhebrar en Tkinter.
  2. download_videos: – Se utiliza para descargar videos de YouTube.

Python3

def threading():
    # Call download_videos function
    t1 = Thread(target=download_videos)
    t1.start()
  
  
def download_videos():
    # Create API Object
    api = Api(api_key='Enter API Key')
  
    if "youtube" in playlistId.get():
        playlist_id = playlistId.get()[len(
            "https://www.youtube.com/playlist?list="):]
    else:
        playlist_id = playlistId.get()
  
    # Get list of video links
    playlist_item_by_id = api.get_playlist_items(
        playlist_id=playlist_id, count=None, return_json=True)
  
    # Iterate through all video links
    for index, videoid in enumerate(playlist_item_by_id['items']):
  
        link = f"https://www.youtube.com/watch?v={videoid['contentDetails']['videoId']}"
  
        yt_obj = YouTube(link)
  
        filters = yt_obj.streams.filter(progressive=True, file_extension='mp4')
  
        # download the highest quality video
        filters.get_highest_resolution().download()
  
        print(f"Downloaded:- {link}")
  
    messagebox.showinfo("Success", "Video Successfully downloaded")

A continuación se muestra la implementación completa:

Python3

# Import Required Modules
from tkinter import *
from pyyoutube import Api
from pytube import YouTube
from threading import Thread
from tkinter import messagebox
  
  
def threading():
    # Call download_videos function
    t1 = Thread(target=download_videos)
    t1.start()
  
  
def download_videos():
    # Create API Object
    api = Api(api_key='Enter API Key')
  
    if "youtube" in playlistId.get():
        playlist_id = playlistId.get()[len(
            "https://www.youtube.com/playlist?list="):]
    else:
        playlist_id = playlistId.get()
  
    # Get list of video links
    playlist_item_by_id = api.get_playlist_items(
        playlist_id=playlist_id, count=None, return_json=True)
  
    # Iterate through all video links
    for index, videoid in enumerate(playlist_item_by_id['items']):
  
        link = f"https://www.youtube.com/watch?v={videoid['contentDetails']['videoId']}"
  
        yt_obj = YouTube(link)
  
        filters = yt_obj.streams.filter(progressive=True, file_extension='mp4')
  
        # download the highest quality video
        filters.get_highest_resolution().download()
  
        print(f"Downloaded:- {link}")
  
    messagebox.showinfo("Success", "Video Successfully downloaded")
  
  
# Create Object
root = Tk()
# Set geometry
root.geometry('400x200')
  
# Add Label
Label(root, text="Youtube Playlist Downloader",
      font="italic 15 bold").pack(pady=10)
Label(root, text="Enter Playlist URL:-", font="italic 10").pack()
  
# Add Entry box
playlistId = Entry(root, width=60)
playlistId.pack(pady=5)
  
download_start = Button(root, text="Download Start", command=threading)
download_start.pack(pady=10)
  
# Execute Tkinter
root.mainloop()

Producción:

Publicación traducida automáticamente

Artículo escrito por abhigoya 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 *