Cesar Systems

Herramientas Informaticas

🎉 ¡Actualización! Ahora tu descargador de YouTube en Python también baja subtítulos

Entrada fija

🎉 ¡Actualización! Ahora tu descargador de YouTube en Python también baja subtítulos

¿Ya creaste tu app para descargar videos de YouTube con interfaz gráfica y arte ASCII? ¡Excelente! Ahora te traigo una mejora súper útil: descargar automáticamente los subtítulos si están disponibles. Aquí te explico qué cambió y cómo funciona.


🆕 ¿Qué incluye esta actualización?

  • ✅ Detecta si hay subtítulos disponibles (en español o inglés).
  • ✅ Los descarga en formato .srt.
  • ✅ Guarda los subtítulos en la misma carpeta que el video.
  • ✅ Notifica al usuario si no hay subtítulos disponibles.

🔧 ¿Cómo funciona?

Cuando pegas la URL del video y haces clic en “Descargar video”, la app ahora:

  1. Descarga el video como antes.
  2. Revisa si el video tiene subtítulos en español (es) o inglés (en).
  3. Si encuentra alguno, los convierte a .srt y los guarda.
  4. Muestra una notificación confirmando ambos archivos (video y subtítulos), o indica que no se encontraron subtítulos.

💡 Detalles técnicos

  • Usa la biblioteca pytubefix para extraer subtítulos.
  • Detecta tanto subtítulos manuales como automáticos (a.en).
  • El archivo de subtítulos se nombra con el título del video, con extensión .srt.

🐍 ¿Necesito actualizar algo?

Sí. Asegúrate de tener la versión más reciente de pytubefix. Puedes instalarla o actualizarla con este comando:

pip install -U pytubefix

📷 Vista general de la app

La app conserva su diseño clásico en consola con una ventana gráfica simple, amigable, y un toque especial con arte ASCII. Ahora además te avisa si los subtítulos están disponibles:

Estado: Video descargado. Subtítulos encontrados y guardados.

O, si no hay subtítulos:

Estado: Video descargado. No se encontraron subtítulos.

🧪 Código completo del programa actualizado


import tkinter as tk
from tkinter import ttk, messagebox, filedialog
from pytubefix import YouTube
import threading
import os

def descargar_video():
    url = entrada_url.get()
    carpeta = ruta_descarga.get()

    if not url:
        messagebox.showwarning("Advertencia", "Por favor, ingresa una URL de YouTube.")
        return

    try:
        boton_descargar.config(state=tk.DISABLED)
        estado.set("Descargando video...")

        yt = YouTube(url)
        video = yt.streams.filter(progressive=True, file_extension='mp4').order_by('resolution').desc().first()

        if not video:
            raise Exception("No se encontró un stream compatible.")

        video_path = video.download(output_path=carpeta)
        estado.set("Video descargado. Buscando subtítulos...")

        # Descargar subtítulos si existen
        captions = yt.captions
        caption = None

        if 'es' in captions:
            caption = captions['es']
        elif 'a.en' in captions:
            caption = captions['a.en']
        elif 'en' in captions:
            caption = captions['en']

        if caption:
            srt = caption.generate_srt_captions()
            titulo_archivo = yt.title.replace(" ", "_").replace("/", "_") + ".srt"
            ruta_srt = os.path.join(carpeta, titulo_archivo)
            with open(ruta_srt, "w", encoding="utf-8") as f:
                f.write(srt)
            estado.set("Video y subtítulos descargados.")
            messagebox.showinfo("Completado", f"Video y subtítulos guardados:\n{video_path}\n{ruta_srt}")
        else:
            estado.set("Video descargado. No se encontraron subtítulos.")
            messagebox.showinfo("Completado", f"Video descargado:\n{video_path}\n(No se encontraron subtítulos)")

    except Exception as e:
        estado.set("Error en la descarga.")
        messagebox.showerror("Error", str(e))
    finally:
        boton_descargar.config(state=tk.NORMAL)

def elegir_carpeta():
    carpeta = filedialog.askdirectory()
    if carpeta:
        ruta_descarga.set(carpeta)

def iniciar_descarga():
    hilo = threading.Thread(target=descargar_video)
    hilo.start()

# Crear ventana
ventana = tk.Tk()
ventana.title("Descargador de YouTube con Subtítulos")
ventana.geometry("600x460")
ventana.resizable(False, False)
ventana.configure(bg="#ffffff")

# Variables
ruta_descarga = tk.StringVar()
estado = tk.StringVar(value="Esperando URL...")

# Arte ASCII
ascii_art = r"""
 __     __     ______     __         ______     __   __    
/\ \  _ \ \   /\  __ \   /\ \       /\  ___\   /\ "-.\ \   
\ \ \/ ".\ \  \ \ \/\ \  \ \ \____  \ \  __\   \ \ \-.  \  
 \ \__/".~\_\  \ \_____\  \ \_____\  \ \_____\  \ \_\\"\_\ 
  \/_/   \/_/   \/_____/   \/_____/   \/_____/   \/_/ \/_/ 
"""
etiqueta_ascii = tk.Label(
    ventana,
    text=ascii_art,
    font=("Courier", 10),
    bg="#ffffff",
    fg="#cc0000",
    justify="left"
)
etiqueta_ascii.pack(pady=(5, 0))

# Estilo
estilo = ttk.Style()
estilo.theme_use("clam")
estilo.configure("TButton", font=("Segoe UI", 10), padding=6)
estilo.configure("TLabel", font=("Segoe UI", 10), background="#ffffff")
estilo.configure("TEntry", font=("Segoe UI", 10))

# Widgets
ttk.Label(ventana, text="URL del video de YouTube:").pack(pady=10)
entrada_url = ttk.Entry(ventana, width=60)
entrada_url.pack(pady=5)

frame_carpeta = ttk.Frame(ventana)
frame_carpeta.pack(pady=10)

ttk.Entry(frame_carpeta, textvariable=ruta_descarga, width=45).pack(side=tk.LEFT, padx=(0, 10))
ttk.Button(frame_carpeta, text="Elegir carpeta", command=elegir_carpeta).pack(side=tk.LEFT)

boton_descargar = ttk.Button(ventana, text="Descargar Video", command=iniciar_descarga)
boton_descargar.pack(pady=15)

ttk.Label(ventana, textvariable=estado, foreground="blue").pack(pady=5)

ventana.mainloop()

🚀 ¿Qué sigue?

Próximas mejoras que puedes añadir:

  • Selección manual de idioma de subtítulos.
  • Conversión automática a .txt.
  • Compatibilidad con listas de reproducción.

¿Te gustaría que te ayude con alguna de estas mejoras? ¡Déjamelo saber en los comentarios!

🐧💚 Cómo Instalar OBS Studio con Eliminación de Fondo en Linux Mint Xia (Xfce) – ¡Rápido, sin errores y sin croma verde! 🎥✨

Entrada fija

🐧💚 Cómo Instalar OBS Studio con Eliminación de Fondo en Linux Mint Xia (Xfce) – ¡Rápido, sin errores y sin croma verde! 🎥✨

¿Usas Linux Mint Xfce (Xia) y quieres eliminar el fondo de tu webcam en OBS sin usar pantalla verde ni sufrir con dependencias rotas?

🎯 ¡Esta es la guía que buscabas! Con solo 2 comandos Flatpak tendrás OBS Studio con Background Removal funcionando como magia.


📦 ¿Qué necesitas?

  • ✅ Tener Flatpak habilitado (Linux Mint lo trae por defecto)
  • ✅ Conexión a Internet
  • ✅ Una cámara web decente
  • ✅ ¡Y ganas de brillar en tus streams, reuniones o clases! 🌟

🧙‍♂️ 1. Los comandos mágicos

Abre tu terminal y ejecuta:

flatpak install flathub com.obsproject.Studio

🔹 Esto instala la versión oficial y estable de OBS Studio desde Flathub.

Ahora, añade el plugin de eliminación de fondo:

flatpak install flathub com.obsproject.Studio.Plugin.BackgroundRemoval

🔹 ¡Y listo! Ahora OBS tendrá la opción de quitar el fondo de tu cámara sin necesidad de croma verde.


🧪 2. Cómo activar Background Removal

  1. Ejecuta OBS con este comando:
  2. Agrega una fuente de cámara (Video Capture Device).
  3. Haz clic derecho sobre la fuente → Filtros.
  4. En la sección “Efectos” haz clic en + → elige Background Removal.
  5. Ajusta el tipo de eliminación: segmentation, blur o custom background.

🎨 Resultado visual

📷 ANTES
Fondo antes de limpiar
📷 DESPUÉS
Fondo removido con plugin

💡 ¿Por qué usar esta solución Flatpak?

  • ✔️ Sin dependencias rotas
  • ✔️ Sin compilar nada
  • ✔️ Funciona perfecto en Linux Mint Xfce (Xia)
  • ✔️ Actualizado desde Flathub
  • ✔️ 100% visual y funcional desde el primer clic

🧠 ¿A quién le sirve?

  • 🎮 Streamers: Tu juego + tú, sin fondo feo
  • 🎓 Profesores y estudiantes: Más foco en ti
  • 🎥 Youtubers: Look profesional sin invertir en un estudio
  • 🗣️ Gente en reuniones virtuales: Adiós al cuarto desordenado 😅

❤️ ¿Te sirvió?

Compártelo con tus compas linuxeros. Y si quieres una versión con imágenes reales, video demo o un instalador automático para Linux Mint, ¡dímelo en los comentarios!

📘 Manual de instalación de PHP 8.2 en Deepin 23

Entrada fija

📘 Manual de instalación de PHP 8.2 en Deepin 23

Instalación de PHP 8.2 compilado desde fuente, con extensiones clave y configuración por PATH.


🔧 1. Instalar dependencias necesarias

sudo apt update
sudo apt install -y \
  build-essential \
  autoconf \
  bison \
  re2c \
  libxml2-dev \
  libcurl4-openssl-dev \
  libjpeg-dev \
  libpng-dev \
  libwebp-dev \
  libxpm-dev \
  libzip-dev \
  libssl-dev \
  libreadline-dev \
  libonig-dev \
  libicu-dev \
  libxslt-dev \
  pkg-config \
  wget \
  tar \
  unzip

📥 2. Descargar y descomprimir PHP 8.2

cd /tmp
wget https://www.php.net/distributions/php-8.2.18.tar.gz
tar -xzf php-8.2.18.tar.gz
cd php-8.2.18

⚙️ 3. Configurar para compilación

./configure --prefix=/opt/php8 \
  --with-openssl \
  --with-zlib \
  --with-curl \
  --with-readline \
  --enable-mbstring \
  --enable-intl \
  --enable-soap \
  --enable-opcache \
  --enable-bcmath \
  --enable-ftp \
  --enable-exif \
  --enable-sockets \
  --with-zip \
  --with-xsl \
  --with-gettext \
  --with-iconv \
  --with-pdo-mysql \
  --with-mysqli \
  --with-pdo-sqlite \
  --enable-fpm

🧱 4. Compilar e instalar

make -j$(nproc)
sudo make install

🧩 5. Activar PHP 8.2 por defecto usando $PATH

Agrega al final de tu archivo ~/.bashrc:

export PATH=/opt/php8/bin:$PATH

Aplica los cambios con:

source ~/.bashrc

✅ 6. Verificar instalación

php -v

Deberías ver algo como:

PHP 8.2.18 (cli) (built: ...)

🛠️ 7. Crear archivo php.ini (opcional)

sudo cp php.ini-development /opt/php8/lib/php.ini
nano /opt/php8/lib/php.ini

📦 8. Instalar Composer (opcional)

/opt/php8/bin/php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
/opt/php8/bin/php composer-setup.php
sudo mv composer.phar /usr/local/bin/composer

📚 9. Verificar extensiones cargadas

php -m

Debes ver extensiones como:

curl
intl
mbstring
openssl
readline
xsl
zip

📌 10. Alias útiles (opcional)

Agrega también a ~/.bashrc:

alias php="/opt/php8/bin/php"
alias phpize="/opt/php8/bin/phpize"
alias php-config="/opt/php8/bin/php-config"
alias composer="/opt/php8/bin/php /usr/local/bin/composer"

Y aplica con:

source ~/.bashrc

🎉 ¡Listo!

PHP 8.2 está instalado y funcionando con extensiones clave, sin afectar el sistema base de Deepin.

¡Descubre Linux Mint 22.1 “Xia”! Night Light y Rendimiento Potenciado.

Entrada fija

✨ Tu Escritorio, Más Hermoso Que Nunca

Prepárate para enamorarte de Cinnamon 6.4, el entorno de escritorio que se renueva con un tema por defecto espectacular: ¡diseño moderno, esquinas redondeadas y una sensación “flotante” que te encantará! Navegar por tu sistema nunca se vio tan bien.


 Descanso para tus Ojos con Night Light

¡Dile adiós a la fatiga visual! Con la nueva función Night Light, Linux Mint 22.1 ajusta automáticamente el color de tu pantalla para proteger tus ojos, especialmente durante la noche. ¡Tu vista te lo agradecerá! 


 Más Rápido y Eficiente “Bajo el Capó”

No solo es bonito, ¡también es potente! Gracias a la modernización de APT, la gestión de paquetes es ahora más rápida y estable, con traducciones impecables y un rendimiento que notarás. Además, Pipewire es el nuevo servidor de sonido por defecto, lo que significa un audio impecable y una mejor compatibilidad con tus apps favoritas.


 Pequeños Detalles, Gran Diferencia

  • Nemo ahora soporta miniaturas de archivos .ora.
  • Bulky te ayuda a limpiar los nombres de tus archivos.
  • Modos de energía para que tu sistema se adapte a ti.
  • ¡Y mucho más!

Basado en Ubuntu 24.04 LTS y con el Kernel 6.8, “Xia” es sinónimo de estabilidad y soporte a largo plazo hasta 2029.

¿Listo para transformar tu experiencia Linux? ¡Descarga ya Linux Mint 22.1 “Xia” y descubre un sistema operativo diseñado para deleitarte!


¡Corre la voz y comparte esta buena noticia! ¿Cuál es la característica que más te emociona de “Xia”?

🛠️ Guía Fácil: Cómo Instalar OSPOS (Open Source Point of Sale)

Entrada fija

🛒✨ ¿Buscas un sistema de punto de venta eficiente y gratuito? Descubre OSPOS ✨🛒

¿Eres emprendedor o dueño de un negocio y necesitas controlar tus ventas, inventario y clientes sin pagar costosas licencias?

OSPOS (Open Source Point of Sale) es la solución perfecta para ti:

  • ✅ 100% gratuito y de código abierto
  • ✅ Control de inventario y stock en tiempo real
  • ✅ Gestión de clientes y proveedores
  • ✅ Informes detallados de ventas
  • ✅ Soporte para múltiples idiomas y monedas
  • ✅ Interfaz web accesible desde cualquier navegador

🔧 ¡Personalizable y fácil de instalar en tu propio servidor o en la nube!

📦 Descárgalo en: https://github.com/opensourcepos/opensourcepos

¿Ya lo usas? Cuéntanos tu experiencia en los comentarios 👇


🛠️ Guía Fácil: Cómo Instalar OSPOS (Open Source Point of Sale)

Requisitos previos:

  • PHP 7.4 o superior
  • MySQL o MariaDB
  • Apache o Nginx
  • Composer
  • Git (opcional)

🔸 Opción 1: Instalación en Windows con XAMPP

  1. Instala XAMPP
    Descárgalo desde: https://www.apachefriends.org/index.html
  2. Descarga OSPOS
    Desde: Releases en GitHub
    Extrae el zip en: C:\xampp\htdocs\ospos
  3. Crea la base de datos
    Abre phpMyAdmin y crea una base de datos llamada ospos
  4. Importa la base de datos
    Usa el archivo database/database.sql
  5. Configura la conexión
    Edita application/config/database.php y cambia: 'username' => 'root', 'password' => '', 'database' => 'ospos', 'hostname' => 'localhost',
  6. Accede a OSPOS
    Ve a http://localhost/ospos/public
    Usuario: admin | Contraseña: pointofsale

🔸 Opción 2: Instalación en Linux (Ubuntu/Debian)

  1. Instala dependencias sudo apt update sudo apt install apache2 mariadb-server php php-mysql php-intl php-bcmath php-curl php-zip unzip git composer
  2. Descarga OSPOS cd /var/www/html sudo git clone https://github.com/opensourcepos/opensourcepos.git ospos cd ospos
  3. Crea la base de datos sudo mysql -u root CREATE DATABASE ospos; EXIT; mysql -u root ospos < database/database.sql
  4. Configura la conexión
    Edita application/config/database.php
  5. Permisos sudo chown -R www-data:www-data /var/www/html/ospos sudo chmod -R 755 /var/www/html/ospos
  6. Accede desde el navegador
    Ve a http://localhost/ospos/public

🧪 Solución de Problemas Comunes

  • Pantalla en blanco: Verifica versión de PHP y que mod_rewrite esté habilitado
  • No carga CSS/JS: Asegúrate de entrar por /public
  • Errores de permisos: Verifica carpetas application/cache y public/uploads

¿Te gustaría una guía en PDF o video? ¡Déjalo en los comentarios!


#OSPOS #PuntoDeVenta #OpenSource #Emprendimiento #Gratis

🧰 Cómo instalar Composer en Deepin Linux 23

Entrada fija

🧰 Cómo instalar Composer en Deepin Linux 23

Composer es el gestor de dependencias más popular para PHP. Esta guía te mostrará cómo instalarlo correctamente en Deepin Linux 23 paso a paso.


✅ Paso 1: Verificar si PHP está instalado

Abre una terminal y ejecuta:

php -v

Si no tienes PHP instalado, puedes hacerlo con:

sudo apt update
sudo apt install php-cli php-mbstring unzip curl

✅ Paso 2: Descargar e instalar Composer

Ejecuta estos comandos en la terminal:

cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php

(Opcional) Verifica la integridad del instalador:

HASH=$(curl -sS https://composer.github.io/installer.sig)
php -r "if (hash_file('sha384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Instala Composer de forma global:

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

✅ Paso 3: Verificar la instalación

Comprueba que Composer se instaló correctamente:

composer --version

Deberías ver algo como:

Composer version 2.x.x 202x-xx-xx

🔄 ¿Cómo actualizar Composer?

Para actualizar Composer más adelante:

composer self-update

📌 Notas finales

  • Composer se instala globalmente, por lo que puedes usarlo desde cualquier proyecto PHP.
  • Si deseas desinstalarlo, simplemente elimina el archivo /usr/local/bin/composer.

🎉 ¡Listo! Ya tienes Composer instalado y funcionando en tu sistema Deepin 23. Puedes comenzar a gestionar tus dependencias PHP de manera profesional.

🚀 Cómo Instalar Apache, PHP, MariaDB y Certbot en Deepin 23 (Servidor LAMP + HTTPS)

Entrada fija


🎯 Objetivo

En esta guía aprenderás a configurar un servidor web local con Apache, PHP y MariaDB en Deepin 23 y utilizar un alias personalizado como tusitio.localhost para tus desarrollos. Ideal para entornos de prueba de proyectos como Laravel, WordPress, etc.

1. 🔄 Actualizar el sistema

sudo apt update && sudo apt upgrade -y

2. 🌐 Instalar Apache

sudo apt install apache2 -y
sudo systemctl status apache2

Verifica accediendo a http://localhost.

3. 🐘 Instalar PHP y módulos necesarios

sudo apt install php libapache2-mod-php php-mysql php-cli php-xml php-curl php-mbstring php-zip php-gd -y
php -v

4. 🛢️ Instalar MariaDB

sudo apt install mariadb-server mariadb-client -y
sudo systemctl status mariadb

5. 🔐 Asegurar MariaDB

sudo mariadb
ALTER USER 'root'@'localhost' IDENTIFIED BY 'TuContraseñaSegura';
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host!='localhost';
DROP DATABASE IF EXISTS test;
FLUSH PRIVILEGES;
EXIT;

6. 🛠️ Crear VirtualHost local tusitio.localhost

sudo mkdir -p /var/www/tusitio
sudo nano /etc/apache2/sites-available/tusitio.conf

Pega el siguiente contenido:

<VirtualHost *:80>
    ServerAdmin admin@localhost
    ServerName tusitio.localhost
    DocumentRoot /var/www/tusitio

    <Directory /var/www/tusitio>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/tusitio_error.log
    CustomLog ${APACHE_LOG_DIR}/tusitio_access.log combined
</VirtualHost>

Habilitar el sitio y reiniciar Apache:

sudo a2ensite tusitio.conf
sudo systemctl reload apache2

7. 📝 Añadir alias en /etc/hosts

sudo nano /etc/hosts

Agrega al final del archivo:

127.0.0.1   tusitio.localhost

8. 🚀 Probar

Crea un archivo de prueba:

echo "<?php echo 'Hola desde tusitio.localhost'; ?>" | sudo tee /var/www/tusitio/index.php

Abre en el navegador: http://tusitio.localhost

✅ Resultado

ComponenteEstado
ApacheActivo
PHPFuncional
MariaDBProtegida
Alias localtusitio.localhost operativo

📌 Conclusión

Ya tienes un entorno de desarrollo web local usando un alias personalizado (tusitio.localhost) ideal para trabajar de forma organizada, simulando servidores reales. Puedes replicar este proceso para todos tus proyectos locales.

🖥️ Cómo instalar xRDP con XFCE en Deepin 23.1

Entrada fija

¿Quieres acceder de forma remota a tu escritorio Deepin? Aquí tienes una guía paso a paso para instalar xRDP con el entorno XFCE en Deepin 23.1. Ideal para sesiones remotas rápidas y ligeras.

🔧 Requisitos previos

  • Deepin 23.1 instalado
  • Acceso como usuario con privilegios de sudo

📜 Script completo (xrdp_deepin23_instalar.sh)

Este script automatiza toda la instalación y configuración:

#!/bin/bash

echo "=== Instalando xRDP y XFCE en Deepin 23.1 ==="

# Actualizar repositorios
sudo apt update

# Instalar XFCE y plugins útiles
sudo apt install -y xfce4 xfce4-whiskermenu-plugin xfce4-weather-plugin \
xfce4-volumed-pulse thunar-vcs-plugins thunar-media-tags-plugin thunar-gtkhash

# Instalar xRDP y backend Xorg
sudo apt install -y xrdp xorgxrdp freerdp2-x11

# Configurar XFCE como entorno por defecto para RDP
echo 'exec env -u SESSION_MANAGER -u DBUS_SESSION_BUS_ADDRESS startxfce4' | sudo tee /etc/xrdp/startwm.sh
sudo chmod +x /etc/xrdp/startwm.sh

# Habilitar e iniciar servicio xRDP
sudo systemctl enable xrdp
sudo systemctl restart xrdp

echo "✅ Instalación completa. Puedes conectarte vía RDP y usar XFCE."

🚀 Cómo ejecutar el script


# Guardar el script
nano xrdp_deepin23_instalar.sh

# Pegar el contenido, guardar y cerrar (Ctrl+O, Enter, Ctrl+X)

# Dar permisos de ejecución
chmod +x xrdp_deepin23_instalar.sh

# Ejecutar el script
./xrdp_deepin23_instalar.sh

✅ Resultado

Una vez completado, podrás conectarte por RDP a tu máquina Deepin y usar el entorno XFCE. Esto no afecta tu escritorio local Deepin (DDE).

🧩 Consejo adicional

Evita tener la sesión iniciada localmente con el mismo usuario antes de conectarte por RDP, ya que xRDP no admite sesiones gráficas múltiples con el mismo usuario.

📦 Cómo convertir tu script de Python en un archivo EXE con interfaz gráfica

Entrada fija

Ya creaste tu aplicación para descargar videos de YouTube con una interfaz bonita y arte ASCII. Ahora te gustaría compartirla con otros sin que tengan que instalar Python, ¿cierto? Aquí te enseño cómo convertir tu script en un archivo ejecutable .exe de un solo archivo, listo para usar en Windows.


🧰 Requisitos previos

Debes tener instalado:

  • Python 3.10 o 3.11 (recomendado)
  • pip funcionando
  • El script principal, por ejemplo: descargador_youtube.py

🔧 Paso 1: Instalar pyinstaller

Abre una terminal (CMD o PowerShell) y ejecuta:


pip install pyinstaller

📦 Paso 2: Crear el archivo EXE de un solo archivo

Usa el siguiente comando para generar un ejecutable compacto:


pyinstaller --onefile --noconsole descargador_youtube.py

Opciones importantes:

  • --onefile: empaqueta todo en un solo archivo .exe
  • --noconsole: oculta la ventana de consola al abrir (ideal para apps con interfaz gráfica)

📂 Paso 3: Buscar el archivo generado

Después de ejecutar el comando, se generarán carpetas como dist y build. Tu ejecutable estará en la carpeta dist:


/dist/descargador_youtube.exe

¡Ese es el archivo que puedes compartir con otros usuarios de Windows! No necesitan instalar Python ni dependencias.


🧪 Paso 4: Probar el EXE

Haz doble clic en el archivo descargador_youtube.exe. Si todo salió bien, verás tu interfaz gráfica funcionando con arte ASCII incluido. Puedes elegir la carpeta, pegar una URL de YouTube y descargar.


🐞 ¿Problemas comunes?

  • 🔁 Si el video no descarga, asegúrate de estar usando pytubefix y no pytube.
  • 🖼 Si ves un error con tkinter, asegúrate de que tu Python lo incluya (instalación completa desde python.org).
  • 🛠 ¿No funciona en otra PC? Usa la opción --add-data si tienes archivos externos o logos.

💡 Bonus: crear un icono personalizado

Si tienes un ícono (.ico), puedes usarlo así:


pyinstaller --onefile --noconsole --icon=icono.ico descargador_youtube.py

📤 Compartir tu app

Ahora puedes subir el .exe a Google Drive, Dropbox o empaquetarlo en un archivo ZIP para compartir fácilmente.


🚀 ¿Quieres más?

  • Convertir a ejecutable en Linux o macOS
  • Versión con barra de progreso
  • Soporte para listas de reproducción

Déjamelo saber en los comentarios 👇

🎬 Cómo Crear un Descargador de Videos de YouTube con Interfaz Gráfica en Python

Entrada fija

🎬 Cómo Crear un Descargador de Videos de YouTube con Interfaz Gráfica en Python

¿Quieres tu propia app para descargar videos de YouTube de forma sencilla? Aquí te explico cómo hacerlo con Python, usando una interfaz gráfica moderna y arte ASCII decorativo. Usaremos pytubefix para evitar errores comunes como el 400 Bad Request.


✅ Paso 1: Instala las dependencias

Abre la terminal y escribe:


pip install pytubefix

🧱 Paso 2: Código completo del programa

Crea un archivo llamado descargador_youtube.py y copia el siguiente contenido:


import tkinter as tk
from tkinter import ttk, messagebox, filedialog
from pytubefix import YouTube
import threading

def descargar_video():
    url = entrada_url.get()
    carpeta = ruta_descarga.get()

    if not url:
        messagebox.showwarning("Advertencia", "Por favor, ingresa una URL de YouTube.")
        return

    try:
        boton_descargar.config(state=tk.DISABLED)
        estado.set("Descargando video...")

        yt = YouTube(url)
        video = yt.streams.filter(progressive=True, file_extension='mp4').order_by('resolution').desc().first()

        if not video:
            raise Exception("No se encontró un stream compatible.")

        video.download(output_path=carpeta)
        estado.set("¡Descarga completada!")
        messagebox.showinfo("Éxito", f"Video descargado: {yt.title}")
    except Exception as e:
        estado.set("Error en la descarga.")
        messagebox.showerror("Error", str(e))
    finally:
        boton_descargar.config(state=tk.NORMAL)

def elegir_carpeta():
    carpeta = filedialog.askdirectory()
    if carpeta:
        ruta_descarga.set(carpeta)

def iniciar_descarga():
    hilo = threading.Thread(target=descargar_video)
    hilo.start()

# Crear ventana
ventana = tk.Tk()
ventana.title("Descargador de YouTube")
ventana.geometry("600x460")
ventana.resizable(False, False)
ventana.configure(bg="#ffffff")

# Variables
ruta_descarga = tk.StringVar()
estado = tk.StringVar(value="Esperando URL...")

# Arte ASCII decorativo
ascii_art = r"""
 __     __     ______     __         ______     __   __    
/\ \  _ \ \   /\  __ \   /\ \       /\  ___\   /\ "-.\ \   
\ \ \/ ".\ \  \ \ \/\ \  \ \ \____  \ \  __\   \ \ \-.  \  
 \ \__/".~\_\  \ \_____\  \ \_____\  \ \_____\  \ \_\\"\_\ 
  \/_/   \/_/   \/_____/   \/_____/   \/_____/   \/_/ \/_/ 
"""
etiqueta_ascii = tk.Label(
    ventana,
    text=ascii_art,
    font=("Courier", 10),
    bg="#ffffff",
    fg="#cc0000",
    justify="left"
)
etiqueta_ascii.pack(pady=(5, 0))

# Estilo
estilo = ttk.Style()
estilo.theme_use("clam")
estilo.configure("TButton", font=("Segoe UI", 10), padding=6)
estilo.configure("TLabel", font=("Segoe UI", 10), background="#ffffff")
estilo.configure("TEntry", font=("Segoe UI", 10))

# Widgets
ttk.Label(ventana, text="URL del video de YouTube:").pack(pady=10)
entrada_url = ttk.Entry(ventana, width=60)
entrada_url.pack(pady=5)

frame_carpeta = ttk.Frame(ventana)
frame_carpeta.pack(pady=10)

ttk.Entry(frame_carpeta, textvariable=ruta_descarga, width=45).pack(side=tk.LEFT, padx=(0, 10))
ttk.Button(frame_carpeta, text="Elegir carpeta", command=elegir_carpeta).pack(side=tk.LEFT)

boton_descargar = ttk.Button(ventana, text="Descargar Video", command=iniciar_descarga)
boton_descargar.pack(pady=15)

ttk.Label(ventana, textvariable=estado, foreground="blue").pack(pady=5)

ventana.mainloop()

🧪 Paso 3: Ejecuta tu aplicación


python descargador_youtube.py

🎨 Resultado del arte ASCII


 __     __     ______     __         ______     __   __    
/\ \  _ \ \   /\  __ \   /\ \       /\  ___\   /\ "-.\ \   
\ \ \/ ".\ \  \ \ \/\ \  \ \ \____  \ \  __\   \ \ \-.  \  
 \ \__/".~\_\  \ \_____\  \ \_____\  \ \_____\  \ \_\\"\_\ 
  \/_/   \/_/   \/_____/   \/_____/   \/_____/   \/_/ \/_/ 

💡 Siguientes pasos sugeridos

  • Agregar barra de progreso visual
  • Soporte para listas de reproducción
  • Conversión a MP3 automática

¿Te gustaría que publique otra guía con alguna de estas mejoras? ¡Déjame un comentario! 🚀

Página 5 de 141

Creado con WordPress & Tema de Anders Norén