Aplicación para escritorio con Python y Tkinter para descargar desde Youtube en MacOS
Hay veces que necesitamos descargar videos desde Youtube para poder verlos offline, o quizás para conservarlos y tenemos que buscar una página para descargarlos. Y no solo buscar la página sino, a veces, tener que aguantar varias páginas de publicidad.
Este es un script que funciona en la consola, en primera instancia y en el que el único parámetro que tenemos que modificar es en la línea 9 la variable save_path
que se encarga de guardar la ubicación donde se guardará nuestro vídeo descargado.
Hay que tener en cuenta que tenemos que importar las librerías tkinter
y pytube
.
Para ejecutar el script, desde la terminal, simplemente escribir python3 nombre_script.py
. Se nos abrirá una ventana y en ella podemos poner la URL del vídeo de Youtube a descargar.
import tkinter as tk
from tkinter import ttk
from pytube import YouTube
import threading
import os
def download_video():
video_url = entry.get()
save_path = "/Users/nombre/Downloads/" # insert path where you want to save the video
try:
# Create a YouTube object
yt = YouTube(video_url)
# Get the highest resolution stream
video_stream = yt.streams.get_highest_resolution()
# Disable the download button
button.config(state=tk.DISABLED)
# Create a progress bar and label
progress_label = tk.Label(window, text="Downloading...")
progress_label.pack()
progress_bar = ttk.Progressbar(window, orient=tk.HORIZONTAL, length=300, mode='indeterminate')
progress_bar.pack()
# Start the download in a separate thread
download_thread = threading.Thread(target=perform_download, args=(video_stream, save_path, progress_bar))
download_thread.start()
except Exception as e:
print("Error:", str(e))
status_label.config(text="Error: " + str(e))
def perform_download(video_stream, save_path, progress_bar):
# Start the progress bar animation
progress_bar.start()
try:
# Download the video
video_filename = video_stream.default_filename
save_location = os.path.join(save_path, video_filename)
video_stream.download(output_path=save_path, filename=video_filename)
print("Download completed!")
status_label.config(text="Download completed!")
except Exception as e:
print("Error:", str(e))
status_label.config(text="Error: " + str(e))
# Stop the progress bar animation
progress_bar.stop()
# Enable the download button
button.config(state=tk.NORMAL)
# Create the main window
window = tk.Tk()
window.title("YouTube Video Downloader")
# Set the dimensions of the window
window_width = 400
window_height = 250
screen_width = window.winfo_screenwidth()
screen_height = window.winfo_screenheight()
x_coordinate = int((screen_width / 2) - (window_width / 2))
y_coordinate = int((screen_height / 2) - (window_height / 2))
window.geometry(f"{window_width}x{window_height}+{x_coordinate}+{y_coordinate}")
# Create the input label and entry
label = tk.Label(window, text="Enter YouTube video URL:")
label.pack()
entry = tk.Entry(window)
entry.pack()
# Create the download button
button = tk.Button(window, text="Download", command=download_video)
button.pack()
# Create the status label
status_label = tk.Label(window, text="")
status_label.pack()
# Start the Tkinter event loop
window.mainloop()
Aplicación gráfica para escritorio para descargar desde Youtube
Si queremos crear una pequeña aplicación gráfica que podamos ejecutar sin tener que invocarla a través de la consola podemos seguir los siguientes pasos:
- Instalamos
pyinstaller
si previamente no lo tenemos.
pip install pyinstaller
- En el mismo directorio donde tenemos nuestro script ejecutamos:
pyinstaller --onefile --windowed nombre_script.py
Nos creará un directorio llamado dist
donde nos habrá creado la aplicación llamada nombre_script.app
para MacOS.
Para ejecutarla lo haremos como cualquier otro programa que tengamos instalado.