You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
3.5 KiB
139 lines
3.5 KiB
#!/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"
|
|
|
|
|