downloader sh, a yt-dltp wrapper
This commit is contained in:
		
							parent
							
								
									399f3b9b89
								
							
						
					
					
						commit
						264cf4f096
					
				
							
								
								
									
										92
									
								
								downloader.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								downloader.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,92 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
###
 | 
			
		||||
#  downloader.sh
 | 
			
		||||
#  Descarga video y/o auido usando yt-dlp
 | 
			
		||||
#  uso:
 | 
			
		||||
#  ./downloader.sh <URL> [-v] [-a]
 | 
			
		||||
#  -v     Descarga el video en video.mp4
 | 
			
		||||
#  -a     Descarga el audio en audio.mp3
 | 
			
		||||
###
 | 
			
		||||
 | 
			
		||||
install_dependencies() {
 | 
			
		||||
    if command -v apt &> /dev/null; then
 | 
			
		||||
        sudo apt update
 | 
			
		||||
        sudo apt install -y ffmpeg python3-pip
 | 
			
		||||
        sudo pip3 install yt-dlp
 | 
			
		||||
    elif command -v pacman &> /dev/null; then
 | 
			
		||||
        sudo pacman -Syu --noconfirm ffmpeg yt-dlp
 | 
			
		||||
    elif command -v dnf &> /dev/null; then
 | 
			
		||||
        sudo dnf install -y ffmpeg yt-dlp
 | 
			
		||||
    else
 | 
			
		||||
        echo "Distro no soportada. Instala ffmpeg y yt-dlp manualmente en tu s.o."
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# yt-dlp & ffmpeg son necesarios 
 | 
			
		||||
if ! command -v yt-dlp &> /dev/null || ! command -v ffmpeg &> /dev/null; then
 | 
			
		||||
    echo "No se encontraron yt-dlp y/o ffmpeg instaladas. Instalando..."
 | 
			
		||||
    install_dependencies
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# si no hay url te dice como se usa
 | 
			
		||||
if [ -z "$1" ]; then
 | 
			
		||||
    echo "Uso: $0 <url> [-v] [-a]"
 | 
			
		||||
    echo "  -v: Descargar video"
 | 
			
		||||
    echo "  -a: Descargar audio"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
URL=$1
 | 
			
		||||
DOWNLOAD_VIDEO=false
 | 
			
		||||
DOWNLOAD_AUDIO=false
 | 
			
		||||
 | 
			
		||||
# Parse arguments
 | 
			
		||||
shift
 | 
			
		||||
while [[ $# -gt 0 ]]; do
 | 
			
		||||
    case $1 in
 | 
			
		||||
        -v) DOWNLOAD_VIDEO=true ;;
 | 
			
		||||
        -a) DOWNLOAD_AUDIO=true ;;
 | 
			
		||||
        *) echo "Esta opcion no es soportada por el script! : $1"; exit 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
    shift
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
# Validate options
 | 
			
		||||
if ! $DOWNLOAD_VIDEO && ! $DOWNLOAD_AUDIO; then
 | 
			
		||||
    echo "Especifica almenos una opcion: -v (video) o -a (audio)"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Temporary directory for intermediate files
 | 
			
		||||
TEMP_DIR=$(mktemp -d)
 | 
			
		||||
 | 
			
		||||
# descargar video
 | 
			
		||||
if $DOWNLOAD_VIDEO; then
 | 
			
		||||
    echo "Descargando video..."
 | 
			
		||||
    yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" -o "$TEMP_DIR/video.%(ext)s" "$URL"
 | 
			
		||||
    VIDEO_FILE=$(find "$TEMP_DIR" -name "video.*")
 | 
			
		||||
    if [ -f "$VIDEO_FILE" ]; then
 | 
			
		||||
        mv "$VIDEO_FILE" "./$(basename "$VIDEO_FILE")"
 | 
			
		||||
        echo "El video se encuentra en ./$(basename "$VIDEO_FILE")"
 | 
			
		||||
    else
 | 
			
		||||
        echo "Ocurrio un error al descargar el video"
 | 
			
		||||
    fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# descargar audio
 | 
			
		||||
if $DOWNLOAD_AUDIO; then
 | 
			
		||||
    echo "Descargando audio..."
 | 
			
		||||
    yt-dlp -f "bestaudio[ext=m4a]/bestaudio" -o "$TEMP_DIR/audio.%(ext)s" --extract-audio --audio-format mp3 "$URL"
 | 
			
		||||
    AUDIO_FILE=$(find "$TEMP_DIR" -name "audio.*")
 | 
			
		||||
    if [ -f "$AUDIO_FILE" ]; then
 | 
			
		||||
        mv "$AUDIO_FILE" "./$(basename "$AUDIO_FILE")"
 | 
			
		||||
        echo "El archivo se encuentra en ./$(basename "$AUDIO_FILE")"
 | 
			
		||||
    else
 | 
			
		||||
        echo "Ocurrio un error al descargar el audio"
 | 
			
		||||
    fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Limpiar el kgadero
 | 
			
		||||
rm -rf "$TEMP_DIR"
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user