Programa en python para descargar videos de la web, en formato mp4 o solo el audio en mp3.
Funciona directamente desde python o se pueden crear los ejecutables.
Basado en la librería yt-dlp, con una interfaz gráfica muy simple creada con ttkbootstrap
Comprobado con YouTube, YouTubeMusic, Instagram (si el video es público) y TikTok, la documentación de la librería indica muchas otras compatibilidades, pero no pude probarlas aún.
Admite videos individuales o listas de reproducción en ese caso enumera como 001, 002,...
Por defecto las descargas se hacen en la carpeta genérica de Descargas (se adapta según el sistema operativo), sino, se puede editar el campo.
git clone https://github.com/ec4lab/DescargarVideos.gitIr a la carpeta el proyecto
cd DescargarVideosCrear entorno virtual
python3 -m venv .venv # En Ubuntu
python -m venv .venv # En WindowsActivar entorno virtual
source .venv/bin/activate # En Ubuntu
.venv\Scripts\Activate # En WindowsInstalar librerías
pip install -r requirements.txtSeleccionar interprete y está listo para utilizar
Si alguna página no funciona es posible que sea necesario actualizar yt-dlp y sus dependencias, ejecutar:
pip install --upgrade requestsCon el repositorio descargado, el entorno virtual creado e instalado requirements.txt, se debe instalar PyInstallerpara generar el binario
pip install pyinstaller Luego ejecutar
pyinstaller --onefile --noconsole --icon=icono.png --hidden-import=PIL._tkinter_finder --collect-all ttkbootstrap --collect-all PIL DownVideo.pySe generaran varios archivos y carpetas, nos interesa el contenido de dist
/DescargarVideos
└── dist/
└── DownVideo.exe
Se puede ejecutar directamente, o moverlo a otra carpeta que resulte más conveniente, con click derecho se puede anclar a inicio.
Con el programa descargado, el entorno virtual creado e instalado requirements.txt, se debe instalar pyinstallerpara generar el binario
pip install pyinstaller y luego ejecutar:
pyinstaller --onefile --noconsole --icon=icono.png \
--hidden-import=PIL._tkinter_finder \
--collect-all ttkbootstrap \
--collect-all PIL \
DownVideo.pyEsto genera varios archivos y carpetas, lo que interesa es:
/DescargarVideos
└── dist/
└── DownVideo
Se debe copiar el binario dist/DownVideo e icono.png a una carpeta definitiva, por ejemplo 'home/USUARIO/soft/', entonces en el mismo terminal de VSCode
mkdir ~/soft/
mkdir ~/soft/DownVideo/
cp dist/DownVideo ~/soft/DownVideo/DownVideo
cp icono.png ~/soft/DownVideo/icono.pngQuedando entonces:
/home/USUARIO/soft
└── DownVideo/
├── DownVideo
└── icono.png
En este punto es posible ejecutar directamente el binario, haciendo doble click o con click derecho Ejecutar, pero Nautilus no siempre funciona bien, además es probable que abra un terminal, asi que para evitar inconvenientes re recomienda agregar la app al menú de aplicaciones.
Se debe crear un archivo .desktop
sudo nano ~/.local/share/applications/downvideo.desktop # Usuario localsudo nano /usr/share/applications/downvideo.desktop #Todos los usuarios del sistemay dentro pegar
[Desktop Entry]
Type=Application
Name=DownVideo
Comment=Descargar videos de YouTube
#Reemplaza USUARIO con tu nombre
Exec=/home/USUARIO/Soft/DownVideo/DownVideo
Icon=/home/USUARIO/Soft/DownVideo/icono.png
Terminal=false
Categories=Utility;AudioVideo;
Hacer ejecutable el archivo
sudo chmod +x ~/.local/share/applications/downvideo.desktopLuego hay que marcarlo como confiable
gio set ~/.local/share/applications/downvideo.desktop metadata::trusted truey refrescar la base de datos de aplicaciones
update-desktop-database ~/.local/share/applications/Tip
Si todavía no aparece en las app, cerrar sesión y volver a ingresar
Listo! puedes buscar tu app en el menu de aplicaciones o buscándola con la tecla Super y escribir DownVideo
Para distribución se podría armar un zip con 4 archivos, de esta manera podría funcionar como un instalador, es básicamente realizar los pasos anteriores pero de manera automatizada, y evitando problemas de rutas harcodeadas.
Crear una carpeta DownVideo y dentro colocar el binario generado por PyInstaller, el icono y generar dos .sh:
sudo nano instalar.sh:Y dentro pegar:
#!/bin/bash
set -e
# Carpeta donde está este script (y por lo tanto el binario)
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
APP_NAME="DownVideo"
BIN_NAME="DownVideo"
ICON_NAME="icono.png"
DESKTOP_FILE="downvideo.desktop"
BIN_PATH="$DIR/$BIN_NAME"
ICON_PATH="$DIR/$ICON_NAME"
DESKTOP_DIR="$HOME/.local/share/applications"
DESKTOP_PATH="$DESKTOP_DIR/$DESKTOP_FILE"
echo "Instalando $APP_NAME..."
# Verificar que el binario existe
if [ ! -f "$BIN_PATH" ]; then
echo "Error: no se encontró el binario en $BIN_PATH"
exit 1
fi
# Dar permisos de ejecución al binario
chmod +x "$BIN_PATH"
# Crear carpeta de aplicaciones si no existe
mkdir -p "$DESKTOP_DIR"
# Generar el .desktop con rutas absolutas dinámicas
cat > "$DESKTOP_PATH" << EOF
[Desktop Entry]
Type=Application
Name=$APP_NAME
Comment=Descargar videos de YouTube
Exec=$BIN_PATH
Icon=$ICON_PATH
Path=$DIR
Terminal=false
Categories=Utility;AudioVideo;
EOF
# Dar permisos de ejecución al .desktop
chmod +x "$DESKTOP_PATH"
# Marcar como confiables (evita problemas con Nautilus)
if command -v gio &> /dev/null; then
gio set "$BIN_PATH" metadata::trusted true 2>/dev/null || true
gio set "$DESKTOP_PATH" metadata::trusted true 2>/dev/null || true
fi
# Refrescar base de datos de aplicaciones
if command -v update-desktop-database &> /dev/null; then
update-desktop-database "$DESKTOP_DIR" 2>/dev/null || true
fi
echo ""
echo " $APP_NAME instalado correctamente."
echo " Buscarlo en el menú de aplicaciones, o ejecutarlo directamente desde:"
echo " $BIN_PATH"
echo ""
echo " (Puede requerir cerrar sesión o reiniciar para que el ícono aparezca en el menú)"sudo nano desinstalar.sh:Y dentro pegar:
#!/bin/bash
DESKTOP_PATH="$HOME/.local/share/applications/downvideo.desktop"
echo "Desinstalando DownVideo..."
if [ -f "$DESKTOP_PATH" ]; then
rm "$DESKTOP_PATH"
echo "Acceso directo eliminado del menú de aplicaciones."
else
echo "No se encontró entrada en el menú (ya estaba desinstalado)."
fi
update-desktop-database "$HOME/.local/share/applications" 2>/dev/null || true
echo ""
echo "Nota: esto solo quita el acceso directo del menú."
echo "Si quieres borrar la aplicación por completo, elimina manualmente esta carpeta."Quedando la carpeta:
DownVideo/
├── DownVideo #binario generado por PyInstaller
├── icono.png
├── instalar.sh
└── desinstalar.sh
Comprimir la carpeta para enviar
tar -czvf DownVideo.tar.gz DownVideoDescomprimir el archivo
tar -xvf DownVideo.tar.gzMoverse a la carpeta
cd DownVideoHacer ejecutable el script
chmod +x instalar.shEjecutar el script
./instalar.shPara desinstalar
chmod +x desinstalar.sh
./desinstalar.shy eliminar la carpeta DownVideo/
Este proyecto está licenciado bajo la Licencia MIT.
Podés usar, copiar, modificar y distribuir el software libremente, siempre que incluyas el aviso de derechos de autor original.
Para más información, consultá el archivo LICENSE.


