#!/bin/bash # Check if dialog is installed, if not, install it if ! command -v dialog &> /dev/null then if command -v apt-get &> /dev/null then sudo apt-get install -y dialog elif command -v pacman &> /dev/null then sudo pacman -S --noconfirm dialog elif command -v dnf &> /dev/null then sudo dnf install -y dialog else echo "Could not install dialog. Please install it manually." exit 1 fi fi # Check if wget is installed, if not, install it if ! command -v wget &> /dev/null then if command -v apt-get &> /dev/null then sudo apt-get install -y wget elif command -v pacman &> /dev/null then sudo pacman -S --noconfirm wget elif command -v dnf &> /dev/null then sudo dnf install -y wget else echo "Could not install wget. Please install it manually." exit 1 fi fi # Check if unzip is installed, if not, install it if ! command -v unzip &> /dev/null then if command -v apt-get &> /dev/null then sudo apt-get install -y unzip elif command -v pacman &> /dev/null then sudo pacman -S --noconfirm unzip elif command -v dnf &> /dev/null then sudo dnf install -y unzip else echo "Could not install unzip. Please install it manually." exit 1 fi fi # Check if awk is installed, if not, install it if ! command -v awk &> /dev/null then if command -v apt-get &> /dev/null then sudo apt-get install -y gawk elif command -v pacman &> /dev/null then sudo pacman -S --noconfirm gawk elif command -v dnf &> /dev/null then sudo dnf install -y gawk else echo "Could not install awk. Please install it manually." exit 1 fi fi # Check if sed is installed, if not, install it if ! command -v sed &> /dev/null then if command -v apt-get &> /dev/null then sudo apt-get install -y sed elif command -v pacman &> /dev/null then sudo pacman -S --noconfirm sed elif command -v dnf &> /dev/null then sudo dnf install -y sed else echo "Could not install sed. Please install it manually." exit 1 fi fi # Process command line arguments while getopts ":i:" opt; do case $opt in i) urls_file=$OPTARG ;; \?) echo "Invalid option: -$OPTARG" >&2 exit 1 ;; :) echo "Option -$OPTARG requires an argument." >&2 exit 1 ;; esac done # Ask for input if no command line argument is given if [ -z "$urls_file" ]; then dialog --backtitle "Download Videos" \ --title "Enter URLs" \ --inputbox "Enter the URLs separated by spaces:" 8 60 2> urls.txt urls=$(cat urls.txt) else urls=$(cat "$urls_file") fi # Create Videos directory in current directory mkdir -p "$PWD/Videos" # Download and extract videos while read -r url; do echo "Downloading $url ..." wget --progress=bar:force "$url" -P "$PWD" file_name=$(basename "$url") if [[ $file_name != *.* ]]; then mv "$file_name" "$file_name.zip" file_name="$file_name.zip" fi echo "Extracting $file_name ..." unzip -q "$file_name" -d "$PWD/Videos" while [ "`find . -type f -name '*.zip' | wc -l`" -gt 0 ]; do find -type f -name "*.zip" -exec unzip -- '{}' \; -exec rm -- '{}' \;; done find "$PWD" -type f -name "*.mp4" -exec mv {} "$PWD/Videos" \; find "$PWD" -type f -name "*.zip" -exec rm {} \; find "$PWD" -type d -empty -delete done <<< "$urls"