Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env bash
- # by austin staton 2024
- # downloadthings script
- # Function to install a single dependency using common package managers
- install_dependency() {
- local dep="$1"
- echo -e "\e[94m$dep is not installed. Installing...\e[0m"
- if command -v apt &>/dev/null; then
- sudo apt update && sudo apt install -y "$dep"
- elif command -v dnf &>/dev/null; then
- sudo dnf install -y "$dep"
- elif command -v yum &>/dev/null; then
- sudo yum install -y "$dep"
- elif command -v pacman &>/dev/null; then
- sudo pacman -Sy --noconfirm "$dep"
- elif command -v zypper &>/dev/null; then
- sudo zypper install -y "$dep"
- elif command -v brew &>/dev/null; then
- brew install "$dep"
- else
- echo -e "\e[91mPackage manager not recognized. Please install $dep manually.\e[0m"
- exit 1
- fi
- }
- # Function to check and install dependencies
- check_dependencies() {
- echo -e "\e[94mChecking for required dependencies...\e[0m"
- # List all dependencies here
- for dep in yt-dlp wget wkhtmltopdf aria2 httrack; do
- if ! command -v "$dep" &>/dev/null; then
- install_dependency "$dep"
- fi
- done
- echo -e "\e[94mAll dependencies are installed! Getting things ready...\e[0m"
- }
- # Functions for various tasks
- grabvideoBest() {
- yt-dlp --console-title --geo-bypass --no-check-certificates -v \
- -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' "$1"
- }
- grabAudioBest() {
- yt-dlp --console-title --geo-bypass --no-check-certificates -v -x \
- --audio-format best --audio-quality 0 "$1"
- }
- PlaylistgrabvideoBest() {
- yt-dlp --console-title --geo-bypass --no-check-certificates -v \
- -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' --yes-playlist "$1"
- }
- PlaylistgrabAudioBest() {
- yt-dlp --console-title --geo-bypass --no-check-certificates -v -x \
- --audio-format best --audio-quality 0 --yes-playlist "$1"
- }
- grabwebpage() {
- wget -p -r --html-extension --convert-links -E -k -l 1 -np "$1"
- }
- grabwebpagePlus() {
- local url="$1"
- # Remove trailing slash
- url="${url%/}"
- # Derive a folder name from the URL
- local folderName
- folderName=$(basename "$url")
- # If empty, use fallback
- if [ -z "$folderName" ]; then
- folderName="downloaded_site"
- fi
- wget -p -r --html-extension --convert-links -E -k -l 1 -np \
- -P "./$folderName" "$url" && \
- wkhtmltopdf "$url" "./$folderName/${folderName}.pdf"
- }
- grabWithAria2() {
- aria2c -x 16 "$1"
- }
- grabWebsiteHTTrack() {
- httrack "$1" -O ./downloaded_sites
- }
- # New function for simply downloading an image
- grabImageWithWget() {
- local url="$1"
- echo -e "\e[94mDownloading image from URL: $url\e[0m"
- wget -O downloaded_image.jpg "$url"
- echo -e "\e[94mImage downloaded as downloaded_image.jpg\e[0m"
- }
- # Updated 'explain_options' with color codes and new option #9
- explain_options() {
- echo -e "\e[94mExplanation of Options:\e[0m"
- echo -e "\e[94m1. Download a single video: Download the best quality video using yt-dlp.\e[0m"
- echo -e "\e[94m2. Download a single audio file: Extract and download the best audio format using yt-dlp.\e[0m"
- echo -e "\e[94m3. Download a playlist of videos: Download a playlist of videos using yt-dlp.\e[0m"
- echo -e "\e[94m4. Download a playlist of audio files: Extract audio from a playlist using yt-dlp.\e[0m"
- echo -e "\e[94m5. Download a webpage (basic): Save a webpage using wget.\e[0m"
- echo -e "\e[94m6. Download a webpage and convert it to PDF: Use wget and wkhtmltopdf.\e[0m"
- echo -e "\e[94m7. Download using aria2: Download files with high-speed segmentation.\e[0m"
- echo -e "\e[94m8. Mirror a website with HTTrack: Download an entire website for offline browsing.\e[0m"
- echo -e "\e[94m9. Download an image using wget: Retrieve a remote image URL and save it locally.\e[0m"
- echo -e "\e[31m10. Exit: Exit the script.\e[0m"
- echo -e "\n\e[33m---- List of Functions Used in This Script ----\e[0m"
- echo -e "\e[92m- check_dependencies # Checks and installs dependencies\n\
- - grabvideoBest # Downloads best-quality video using yt-dlp\n\
- - grabAudioBest # Downloads best-quality audio using yt-dlp\n\
- - PlaylistgrabvideoBest # Downloads a playlist of best-quality videos\n\
- - PlaylistgrabAudioBest # Downloads a playlist of best-quality audio\n\
- - grabwebpage # Downloads a webpage using wget\n\
- - grabwebpagePlus # Downloads a webpage + converts it to PDF\n\
- - grabWithAria2 # Downloads a file using aria2 with segmentation\n\
- - grabWebsiteHTTrack # Mirrors a website with HTTrack\n\
- - grabImageWithWget # Downloads an image from a URL\n\
- - explain_options # Shows this explanation of options\n\
- - main_menu # Displays the main menu options\e[0m"
- }
- main_menu() {
- echo -e "\e[32mWelcome to Media Downloader slash Download Things Script lol\e[0m"
- echo -e "\e[33mNOTE: For some downloads, you might need to use a VPN. Ensure your VPN is active if necessary.\e[0m"
- echo -e "\e[94mPlease select an option:\e[0m"
- echo -e "\e[94m1. Download a single video\e[0m"
- echo -e "\e[94m2. Download a single audio file\e[0m"
- echo -e "\e[94m3. Download a playlist of videos\e[0m"
- echo -e "\e[94m4. Download a playlist of audio files\e[0m"
- echo -e "\e[94m5. Download a webpage (basic)\e[0m"
- echo -e "\e[94m6. Download a webpage and convert that webpage to PDF as well\e[0m"
- echo -e "\e[94m7. Download using aria2\e[0m"
- echo -e "\e[94m8. Mirror a website with HTTrack\e[0m"
- echo -e "\e[94m9. Download an image using wget\e[0m"
- echo -e "\e[94m10. Explain each option\e[0m"
- echo -e "\e[31m11. Exit\e[0m"
- read -rp "Enter your choice (1-11): " choice
- case $choice in
- 1)
- read -rp "Enter video URL: " url
- grabvideoBest "$url"
- ;;
- 2)
- read -rp "Enter audio URL: " url
- grabAudioBest "$url"
- ;;
- 3)
- read -rp "Enter playlist URL: " url
- PlaylistgrabvideoBest "$url"
- ;;
- 4)
- read -rp "Enter playlist URL: " url
- PlaylistgrabAudioBest "$url"
- ;;
- 5)
- read -rp "Enter webpage URL: " url
- grabwebpage "$url"
- ;;
- 6)
- read -rp "Enter webpage URL: " url
- grabwebpagePlus "$url"
- ;;
- 7)
- read -rp "Enter file URL: " url
- grabWithAria2 "$url"
- ;;
- 8)
- read -rp "Enter website URL to mirror: " url
- grabWebsiteHTTrack "$url"
- ;;
- 9)
- echo -e "\e[94mEnter image file URL:\e[0m"
- read -rp "" imgURL
- grabImageWithWget "$imgURL"
- ;;
- 10)
- explain_options
- ;;
- 11)
- echo -e "\e[92mExiting. Goodbye!\e[0m"
- exit 0
- ;;
- *)
- echo -e "\e[91mInvalid choice. Please try again.\e[0m"
- main_menu
- ;;
- esac
- }
- # Start script
- check_dependencies
- main_menu
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement