loader image

How to Stop Ad Blocker Detection on Websites Like YouTube

What makes us different from other similar websites? › Forums › Tech › How to Stop Ad Blocker Detection on Websites Like YouTube

Viewing 5 posts - 31 through 35 (of 35 total)
  • Author
    Posts
  • #8473
    thumbtak
    Moderator
    #!/bin/bash
    
    # --- COLORS & STYLING ---
    G='\033[0;32m' # Success
    B='\033[0;34m' # Secondary
    P='\033[38;5;211m' # Rose Pink (Primary)
    Y='\033[1;33m' # Warning
    R='\033[0;31m' # Danger
    W='\033[1;37m' # Highlight
    NC='\033[0m' # Reset
    
    # --- CONFIGURATION ---
    YTDLP_URL="https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp"
    YTDLP_BIN="./yt-dlp"
    OUTPUT_BASENAME="downloaded_video"
    PLAYLIST_FILE="video_playlist.txt"
    CONFIG_FILE=".ytdlp_config"
    LOC_CONFIG=".ytdlp_location"
    
    # --- LOCATION HELPER ---
    get_save_directory() {
    local SAVED_DIR=""
    [ -f "$LOC_CONFIG" ] && SAVED_DIR=$(cat "$LOC_CONFIG")
    
    if [ -d "$SAVED_DIR" ]; then
    echo -e "${Y}» Existing Path Found:${NC} $SAVED_DIR" >&2
    read -p " Use this location? (y/n): " USE_SAVED >&2
    if [[ "$USE_SAVED" =~ ^[Yy]$ ]]; then
    echo "$SAVED_DIR"
    return 0
    fi
    fi
    
    echo -e "${P}» Setup New Directory${NC}" >&2
    read -p " Enter Full Path: " NEW_DIR >&2
    if [ -d "$NEW_DIR" ]; then
    echo "$NEW_DIR" > "$LOC_CONFIG"
    echo "$NEW_DIR"
    else
    echo -e "${R}✘ Directory does not exist!${NC}" >&2
    echo ""
    fi
    }
    
    # --- AUTHENTICATION & UPDATE HELPER ---
    get_failure_fix() {
    echo -e "\n${R}┌───────────────────────────────────────────────────────────┐${NC}"
    echo -e "${R}│ CRITICAL ERROR: Download Interrupted │${NC}"
    echo -e "${R}└───────────────────────────────────────────────────────────┘${NC}"
    echo -e " [${P}U${NC}] Check for Updates [${P}B${NC}] Link Browser Cookies"
    echo -e " [${P}F${NC}] Manual cookies.txt [${P}N${NC}] Return to Dashboard"
    echo -e "${B}─────────────────────────────────────────────────────────────${NC}"
    read -p " Action Required: " FIX_CHOICE
    
    case $FIX_CHOICE in
    [uU]*)
    echo "Checking for updates..."
    if "$YTDLP_BIN" -U; then
    echo "Update successful."
    else
    curl -L "$YTDLP_URL" -o "$YTDLP_BIN" && chmod +x "$YTDLP_BIN"
    fi
    return 0 ;;
    [fF]*)
    read -p " Path to cookies.txt: " USER_FILE
    [ -f "$USER_FILE" ] && echo "--cookies $USER_FILE" > "$CONFIG_FILE" && return 0 ;;
    [bB]*)
    echo -e " (1)Chrome (2)Firefox (3)Brave (4)Edge (5)Opera (6)Vivaldi (7)Tor"
    read -p " Select [1-7]: " B_NUM
    case $B_NUM in 1) B="chrome";; 2) B="firefox";; 3) B="brave";; 4) B="edge";; 5) B="opera";; 6) B="vivaldi";; 7) B="tor";; *) return 1;; esac
    echo "--cookies-from-browser $B" > "$CONFIG_FILE" && return 0 ;;
    *) return 1 ;;
    esac
    }
    
    # --- CORE FUNCTIONS ---
    run_yt_dlp() {
    local URL=$1
    SAVED_AUTH=$(cat "$CONFIG_FILE" 2>/dev/null)
    "$YTDLP_BIN" $SAVED_AUTH -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' \
    --merge-output-format mp4 --output "${OUTPUT_BASENAME}.%(ext)s" "$URL"
    return $?
    }
    
    process_media() {
    local MODE=$1
    local URL=$2
    local RETRY=true
    
    if [ -z "$URL" ]; then
    CLIP=$(xclip -selection clipboard -o 2>/dev/null)
    echo -e "${P}» Input URL${NC}"
    read -p " Paste link (Enter for clipboard): " MANUAL_URL
    URL=${MANUAL_URL:-$CLIP}
    fi
    [ -z "$URL" ] && return
    
    [[ "$MODE" != "SILENT" ]] && read -p " Monitor Index (0-9) [Default 0]: " MON && MON=${MON:-0}
    
    while [ "$RETRY" = true ]; do
    if run_yt_dlp "$URL"; then
    RETRY=false
    FILE=$(ls ${OUTPUT_BASENAME}.* 2>/dev/null | head -n 1)
    if [ -f "$FILE" ]; then
    [[ "$MODE" != "SILENT" ]] && mpv --fs --screen="$MON" "$FILE"
    
    if [[ "$MODE" == "DOWNLOAD" || "$MODE" == "STREAM" ]]; then
    read -p " Download complete. Save file? (y/n): " KEEP
    if [[ "$KEEP" =~ ^[Yy]$ ]]; then
    DEST=$(get_save_directory)
    if [ -n "$DEST" ] && [ -d "$DEST" ]; then
    SA=$(cat "$CONFIG_FILE" 2>/dev/null)
    TITLE=$("$YTDLP_BIN" $SA --get-title "$URL" | tr -dc '[:alnum:]\n\r ' | tr ' ' '_')
    mv "$FILE" "$DEST/${TITLE}.mp4"
    echo -e "${G}✔ Saved to $DEST/${TITLE}.mp4${NC}"
    read -p "Press Enter to continue..."
    else
    echo -e "${R}✘ Save cancelled or directory invalid.${NC}"
    rm "$FILE"
    read -p "Press Enter to continue..."
    fi
    else
    [ -f "$FILE" ] && rm "$FILE"
    fi
    fi
    fi
    else
    if get_failure_fix; then
    read -p " Fix applied. Retry now? (y/n): " REA
    [[ ! "$REA" =~ ^[Yy]$ ]] && RETRY=false
    else
    RETRY=false
    read -p " Press Enter to continue..."
    fi
    fi
    done
    }
    
    # --- DASHBOARD ---
    [ ! -f "$YTDLP_BIN" ] && curl -L "$YTDLP_URL" -o "$YTDLP_BIN" && chmod +x "$YTDLP_BIN"
    
    while true; do
    clear
    # Rose Pink Header
    echo -e "${P} ████████╗ █████╗ ██╗ ██╗███████╗ ███████╗██╗ ██╗ █████╗ ██████╗██╗ ██╗"
    echo -e " ╚══██╔══╝██╔══██╗██║ ██╔╝██╔════╝ ██╔════╝██║ ██║██╔══██╗██╔════╝██║ ██╔╝"
    echo -e " ██║ ███████║█████╔╝ ███████╗ ███████╗███████║███████║██║ █████╔╝ "
    echo -e " ██║ ██╔══██║██╔═██╗ ╚════██║ ╚════██║██╔══██║██╔══██║██║ ██╔═██╗ "
    echo -e " ██║ ██║ ██║██║ ██╗███████║ ███████║██║ ██║██║ ██║╚██████╗██║ ██╗"
    echo -e " ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝${NC}"
    
    echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
    
    # Redesigned YouTube Icon
    echo -e " ${R} ▄▄██████████████████▄▄"
    echo -e " ████████████████████████"
    echo -e " ██████████${W}█${R}█████████████"
    echo -e " ██████████${W}███${R}███████████"
    echo -e " ██████████${W}█████${R}█████████"
    echo -e " ██████████${W}███${R}███████████"
    echo -e " ██████████${W}█${R}█████████████"
    echo -e " ████████████████████████"
    echo -e " ▀▀██████████████████▀▀${NC}"
    echo ""
    
    # Rose Pink DOWNLOADER Header
    echo -e "${P} ██████╗ ██████╗ ██╗ ██╗███╗ ██╗██╗ ██████╗ █████╗ ██████╗ ███████╗██████╗ "
    echo -e " ██╔══██╗██╔═══██╗██║ ██║████╗ ██║██║ ██╔═══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗"
    echo -e " ██║ ██║██║ ██║██║ █╗ ██║██╔██╗ ██║██║ ██║ ██║███████║██║ ██║█████╗ ██████╔╝"
    echo -e " ██║ ██║██║ ██║██║███╗██║██║╚██╗██║██║ ██║ ██║██╔══██║██║ ██║██╔══╝ ██╔══██╗"
    echo -e " ██████╔╝╚██████╔╝╚███╔███╔╝██║ ╚████║███████╗╚██████╔╝██║ ██║██████╔╝███████╗██║ ██╗"
    echo -e " ╚═════╝ ╚═════╝ ╚══╝╚══╝ ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚══════╝╚═╝ ╚═╝${NC}"
    
    echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
    echo -e " ${W}Media Engine${NC} | TAKsShack.com"
    echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
    
    # Status Indicators
    if [ -f "$CONFIG_FILE" ]; then
    echo -e " ${G}●${NC} AUTH: ${W}$(cat "$CONFIG_FILE")${NC}"
    else
    echo -e " ${R}○${NC} AUTH: ${B}Anonymous${NC}"
    fi
    
    if [ -f "$LOC_CONFIG" ]; then
    echo -e " ${G}●${NC} PATH: ${W}$(cat "$LOC_CONFIG")${NC}"
    else
    echo -e " ${R}○${NC} PATH: ${B}Not Configured${NC}"
    fi
    echo ""
    
    # Menu Options
    echo -e " [${P}1${NC}] Stream Video [${P}4${NC}] Run Playlist File"
    echo -e " [${P}2${NC}] Download & Play [${P}5${NC}] Silent Batch Download"
    echo -e " [${P}3${NC}] Multi-Link Process [${P}c${NC}] Reset / Update Core"
    echo -e " [${P}6${NC}] ${R}Exit Terminal${NC}"
    echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
    echo -n " SELECT ACTION: "
    read CHOICE
    
    case $CHOICE in
    1) process_media "STREAM" ;;
    2) process_media "DOWNLOAD" ;;
    3) read -p " Paste links: " MUL; for L in $MUL; do process_media "DOWNLOAD" "$L"; done ;;
    4) [ -f "$PLAYLIST_FILE" ] && while read -r L; do process_media "STREAM" "$L"; done < "$PLAYLIST_FILE" ;;
    5)
    read -p " Paste links: " B_URLS
    B_DEST=$(get_save_directory)
    if [ -d "$B_DEST" ]; then
    for L in $B_URLS; do
    process_media "SILENT" "$L"
    F=$(ls ${OUTPUT_BASENAME}.* 2>/dev/null | head -n 1)
    [ -f "$F" ] && mv "$F" "$B_DEST/"
    done
    fi ;;
    c|C)
    echo -e " Clear [${P}A${NC}]uth or [${P}L${NC}]ocation?"
    read CLEAR_MODE
    [[ "$CLEAR_MODE" =~ ^[Aa]$ ]] && rm "$CONFIG_FILE" 2>/dev/null
    [[ "$CLEAR_MODE" =~ ^[Ll]$ ]] && rm "$LOC_CONFIG" 2>/dev/null
    ;;
    6) rm "$YTDLP_BIN" 2>/dev/null; clear; break ;;
    esac
    done
    • This reply was modified 5 months, 1 week ago by thumbtak. Reason: The "save" function was fixed
    #8475
    thumbtak
    Moderator

    Fixed: Quoted path variables, used arrays for auth flags, fixed metadata fetch quoting, and updated browser-selection logic

    #!/bin/bash
    
    # --- COLORS & STYLING ---
    G='\033[0;32m' # Success
    B='\033[0;34m' # Secondary
    P='\033[38;5;211m' # Rose Pink (Primary)
    Y='\033[1;33m' # Warning
    R='\033[0;31m' # Danger
    W='\033[1;37m' # Highlight
    NC='\033[0m' # Reset
    
    # --- CONFIGURATION ---
    YTDLP_URL="https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp"
    YTDLP_BIN="./yt-dlp"
    OUTPUT_BASENAME="downloaded_video"
    PLAYLIST_FILE="video_playlist.txt"
    CONFIG_FILE=".ytdlp_config"
    LOC_CONFIG=".ytdlp_location"
    
    # --- LOCATION HELPER ---
    get_save_directory() {
    local SAVED_DIR=""
    [ -f "$LOC_CONFIG" ] && SAVED_DIR=$(cat "$LOC_CONFIG")
    
    if [ -d "$SAVED_DIR" ]; then
    echo -e "${Y}» Existing Path Found:${NC} $SAVED_DIR" >&2
    read -p " Use this location? (y/n): " USE_SAVED >&2
    if [[ "$USE_SAVED" =~ ^[Yy]$ ]]; then
    echo "$SAVED_DIR"
    return 0
    fi
    fi
    
    echo -e "${P}» Setup New Directory${NC}" >&2
    read -p " Enter Full Path: " NEW_DIR >&2
    if [ -d "$NEW_DIR" ]; then
    echo "$NEW_DIR" > "$LOC_CONFIG"
    echo "$NEW_DIR"
    else
    echo -e "${R}✘ Directory does not exist!${NC}" >&2
    echo ""
    fi
    }
    
    # --- AUTHENTICATION & UPDATE HELPER ---
    get_failure_fix() {
    echo -e "\n${R}┌───────────────────────────────────────────────────────────┐${NC}"
    echo -e "${R}│ CRITICAL ERROR: Download Interrupted │${NC}"
    echo -e "${R}└───────────────────────────────────────────────────────────┘${NC}"
    echo -e " [${P}U${NC}] Check for Updates [${P}B${NC}] Link Browser Cookies"
    echo -e " [${P}F${NC}] Manual cookies.txt [${P}N${NC}] Return to Dashboard"
    echo -e "${B}─────────────────────────────────────────────────────────────${NC}"
    read -p " Action Required: " FIX_CHOICE
    
    case $FIX_CHOICE in
    [uU]*)
    echo "Checking for updates..."
    if "$YTDLP_BIN" -U; then
    echo "Update successful."
    else
    curl -L "$YTDLP_URL" -o "$YTDLP_BIN" && chmod +x "$YTDLP_BIN"
    fi
    return 0 ;;
    [fF]*)
    read -p " Path to cookies.txt: " USER_FILE
    # Store only the path to keep command building clean
    [ -f "$USER_FILE" ] && echo "$USER_FILE" > "$CONFIG_FILE" && return 0 ;;
    [bB]*)
    echo -e " (1)Chrome (2)Firefox (3)Brave (4)Edge (5)Opera (6)Vivaldi (7)Tor"
    read -p " Select [1-7]: " B_NUM
    case $B_NUM in 1) B="chrome";; 2) B="firefox";; 3) B="brave";; 4) B="edge";; 5) B="opera";; 6) B="vivaldi";; 7) B="tor";; *) return 1;; esac
    # Store the browser name only
    echo "BROWSER:$B" > "$CONFIG_FILE" && return 0 ;;
    *) return 1 ;;
    esac
    }
    
    # --- CORE FUNCTIONS ---
    run_yt_dlp() {
    local URL=$1
    local AUTH_OPTS=()
    
    if [ -f "$CONFIG_FILE" ]; then
    VAL=$(cat "$CONFIG_FILE")
    if [[ "$VAL" == BROWSER:* ]]; then
    AUTH_OPTS=("--cookies-from-browser" "${VAL#BROWSER:}")
    else
    AUTH_OPTS=("--cookies" "$VAL")
    fi
    fi
    
    "$YTDLP_BIN" "${AUTH_OPTS[@]}" -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' \
    --merge-output-format mp4 --output "${OUTPUT_BASENAME}.%(ext)s" "$URL"
    return $?
    }
    
    process_media() {
    local MODE=$1
    local URL=$2
    local RETRY=true
    
    if [ -z "$URL" ]; then
    CLIP=$(xclip -selection clipboard -o 2>/dev/null)
    echo -e "${P}» Input URL${NC}"
    read -p " Paste link (Enter for clipboard): " MANUAL_URL
    URL=${MANUAL_URL:-$CLIP}
    fi
    [ -z "$URL" ] && return
    
    [[ "$MODE" != "SILENT" ]] && read -p " Monitor Index (0-9) [Default 0]: " MON && MON=${MON:-0}
    
    while [ "$RETRY" = true ]; do
    if run_yt_dlp "$URL"; then
    RETRY=false
    FILE=$(ls ${OUTPUT_BASENAME}.* 2>/dev/null | head -n 1)
    if [ -f "$FILE" ]; then
    [[ "$MODE" != "SILENT" ]] && mpv --fs --screen="$MON" "$FILE"
    
    if [[ "$MODE" == "DOWNLOAD" || "$MODE" == "STREAM" ]]; then
    read -p " Download complete. Save file? (y/n): " KEEP
    if [[ "$KEEP" =~ ^[Yy]$ ]]; then
    DEST=$(get_save_directory)
    if [ -n "$DEST" ] && [ -d "$DEST" ]; then
    # Build title using the same fixed auth logic
    local SA_OPTS=()
    if [ -f "$CONFIG_FILE" ]; then
    local V=$(cat "$CONFIG_FILE")
    [[ "$V" == BROWSER:* ]] && SA_OPTS=("--cookies-from-browser" "${V#BROWSER:}") || SA_OPTS=("--cookies" "$V")
    fi
    
    TITLE=$("$YTDLP_BIN" "${SA_OPTS[@]}" --get-title "$URL" | tr -dc '[:alnum:]\n\r ' | tr ' ' '_')
    mv "$FILE" "$DEST/${TITLE}.mp4"
    echo -e "${G}✔ Saved to $DEST/${TITLE}.mp4${NC}"
    read -p "Press Enter to continue..."
    else
    echo -e "${R}✘ Save cancelled or directory invalid.${NC}"
    rm "$FILE"
    read -p "Press Enter to continue..."
    fi
    else
    [ -f "$FILE" ] && rm "$FILE"
    fi
    fi
    fi
    else
    if get_failure_fix; then
    read -p " Fix applied. Retry now? (y/n): " REA
    [[ ! "$REA" =~ ^[Yy]$ ]] && RETRY=false
    else
    RETRY=false
    read -p " Press Enter to continue..."
    fi
    fi
    done
    }
    
    # --- DASHBOARD ---
    [ ! -f "$YTDLP_BIN" ] && curl -L "$YTDLP_URL" -o "$YTDLP_BIN" && chmod +x "$YTDLP_BIN"
    
    while true; do
    clear
    # Rose Pink Header
    echo -e "${P} ████████╗ █████╗ ██╗ ██╗███████╗ ███████╗██╗ ██╗ █████╗ ██████╗██╗ ██╗"
    echo -e " ╚══██╔══╝██╔══██╗██║ ██╔╝██╔════╝ ██╔════╝██║ ██║██╔══██╗██╔════╝██║ ██╔╝"
    echo -e " ██║ ███████║█████╔╝ ███████╗ ███████╗███████║███████║██║ █████╔╝ "
    echo -e " ██║ ██╔══██║██╔═██╗ ╚════██║ ╚════██║██╔══██║██╔══██║██║ ██╔═██╗ "
    echo -e " ██║ ██║ ██║██║ ██╗███████║ ███████║██║ ██║██║ ██║╚██████╗██║ ██╗"
    echo -e " ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝${NC}"
    
    echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
    
    # Redesigned YouTube Icon
    echo -e " ${R} ▄▄██████████████████▄▄"
    echo -e " ████████████████████████"
    echo -e " ██████████${W}█${R}█████████████"
    echo -e " ██████████${W}███${R}███████████"
    echo -e " ██████████${W}█████${R}█████████"
    echo -e " ██████████${W}███${R}███████████"
    echo -e " ██████████${W}█${R}█████████████"
    echo -e " ████████████████████████"
    echo -e " ▀▀██████████████████▀▀${NC}"
    echo ""
    
    # Rose Pink DOWNLOADER Header
    echo -e "${P} ██████╗ ██████╗ ██╗ ██╗███╗ ██╗██╗ ██████╗ █████╗ ██████╗ ███████╗██████╗ "
    echo -e " ██╔══██╗██╔═══██╗██║ ██║████╗ ██║██║ ██╔═══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗"
    echo -e " ██║ ██║██║ ██║██║ █╗ ██║██╔██╗ ██║██║ ██║ ██║███████║██║ ██║█████╗ ██████╔╝"
    echo -e " ██║ ██║██║ ██║██║███╗██║██║╚██╗██║██║ ██║ ██║██╔══██║██║ ██║██╔══╝ ██╔══██╗"
    echo -e " ██████╔╝╚██████╔╝╚███╔███╔╝██║ ╚████║███████╗╚██████╔╝██║ ██║██████╔╝███████╗██║ ██╗"
    echo -e " ╚═════╝ ╚═════╝ ╚══╝╚══╝ ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚══════╝╚═╝ ╚═╝${NC}"
    
    echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
    echo -e " ${W}Media Engine${NC} | TAKsShack.com"
    echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
    
    # Status Indicators
    if [ -f "$CONFIG_FILE" ]; then
    echo -e " ${G}●${NC} AUTH: ${W}$(cat "$CONFIG_FILE")${NC}"
    else
    echo -e " ${R}○${NC} AUTH: ${B}Anonymous${NC}"
    fi
    
    if [ -f "$LOC_CONFIG" ]; then
    echo -e " ${G}●${NC} PATH: ${W}$(cat "$LOC_CONFIG")${NC}"
    else
    echo -e " ${R}○${NC} PATH: ${B}Not Configured${NC}"
    fi
    echo ""
    
    # Menu Options
    echo -e " [${P}1${NC}] Stream Video [${P}4${NC}] Run Playlist File"
    echo -e " [${P}2${NC}] Download & Play [${P}5${NC}] Silent Batch Download"
    echo -e " [${P}3${NC}] Multi-Link Process [${P}c${NC}] Reset / Update Core"
    echo -e " [${P}6${NC}] ${R}Exit Terminal${NC}"
    echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
    echo -n " SELECT ACTION: "
    read CHOICE
    
    case $CHOICE in
    1) process_media "STREAM" ;;
    2) process_media "DOWNLOAD" ;;
    3) read -p " Paste links: " MUL; for L in $MUL; do process_media "DOWNLOAD" "$L"; done ;;
    4) [ -f "$PLAYLIST_FILE" ] && while read -r L; do process_media "STREAM" "$L"; done < "$PLAYLIST_FILE" ;;
    5)
    read -p " Paste links: " B_URLS
    B_DEST=$(get_save_directory)
    if [ -d "$B_DEST" ]; then
    for L in $B_URLS; do
    process_media "SILENT" "$L"
    F=$(ls ${OUTPUT_BASENAME}.* 2>/dev/null | head -n 1)
    [ -f "$F" ] && mv "$F" "$B_DEST/"
    done
    fi ;;
    c|C)
    echo -e " Clear [${P}A${NC}]uth or [${P}L${NC}]ocation?"
    read CLEAR_MODE
    [[ "$CLEAR_MODE" =~ ^[Aa]$ ]] && rm "$CONFIG_FILE" 2>/dev/null
    [[ "$CLEAR_MODE" =~ ^[Ll]$ ]] && rm "$LOC_CONFIG" 2>/dev/null
    ;;
    6) rm "$YTDLP_BIN" 2>/dev/null; clear; break ;;
    esac
    done
    #8485
    thumbtak
    Moderator

    The logo was updated. 

    #!/bin/bash
    
    # --- COLORS & STYLING ---
    G='\033[0;32m' # Success
    B='\033[0;34m' # Secondary
    P='\033[38;5;211m' # Rose Pink (Primary)
    Y='\033[1;33m' # Warning
    R='\033[0;31m' # Danger
    W='\033[1;37m' # Highlight
    NC='\033[0m' # Reset
    
    # --- CONFIGURATION ---
    YTDLP_URL="https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp"
    YTDLP_BIN="./yt-dlp"
    OUTPUT_BASENAME="downloaded_video"
    PLAYLIST_FILE="video_playlist.txt"
    CONFIG_FILE=".ytdlp_config"
    LOC_CONFIG=".ytdlp_location"
    PLAYLIST_PATH_CONFIG=".ytdlp_playlist_path"
    
    # --- LOCATION HELPER ---
    get_save_directory() {
    local SAVED_DIR=""
    [ -f "$LOC_CONFIG" ] && SAVED_DIR=$(cat "$LOC_CONFIG")
    
    if [ -d "$SAVED_DIR" ]; then
    echo -e "${Y}» Existing Path Found:${NC} $SAVED_DIR" >&2
    read -p " Use this location? (y/n): " USE_SAVED >&2
    if [[ "$USE_SAVED" =~ ^[Yy]$ ]]; then
    echo "$SAVED_DIR"
    return 0
    fi
    fi
    
    echo -e "${P}» Setup New Directory${NC}" >&2
    read -p " Enter Full Path: " NEW_DIR >&2
    if [ -d "$NEW_DIR" ]; then
    echo "$NEW_DIR" > "$LOC_CONFIG"
    echo "$NEW_DIR"
    else
    echo -e "${R}✘ Directory does not exist!${NC}" >&2
    echo ""
    fi
    }
    
    # --- PLAYLIST PERSISTENCE HELPER ---
    get_playlist_file() {
    if [ -f "$PLAYLIST_PATH_CONFIG" ]; then
    cat "$PLAYLIST_PATH_CONFIG"
    else
    echo "$PLAYLIST_FILE"
    fi
    }
    
    # --- AUTHENTICATION & UPDATE HELPER ---
    get_failure_fix() {
    echo -e "\n${R}┌───────────────────────────────────────────────────────────┐${NC}"
    echo -e "${R}│ CRITICAL ERROR: Download Interrupted │${NC}"
    echo -e "${R}└───────────────────────────────────────────────────────────┘${NC}"
    echo -e " [${P}U${NC}] Check for Updates [${P}B${NC}] Link Browser Cookies"
    echo -e " [${P}F${NC}] Manual cookies.txt [${P}N${NC}] Return to Dashboard"
    echo -e "${B}─────────────────────────────────────────────────────────────${NC}"
    read -p " Action Required: " FIX_CHOICE
    
    case $FIX_CHOICE in
    [uU]*)
    echo "Checking for updates..."
    if "$YTDLP_BIN" -U; then
    echo "Update successful."
    else
    curl -L "$YTDLP_URL" -o "$YTDLP_BIN" && chmod +x "$YTDLP_BIN"
    fi
    return 0 ;;
    [fF]*)
    read -p " Path to cookies.txt: " USER_FILE
    [ -f "$USER_FILE" ] && echo "$USER_FILE" > "$CONFIG_FILE" && return 0 ;;
    [bB]*)
    echo -e " (1)Chrome (2)Firefox (3)Brave (4)Edge (5)Opera (6)Vivaldi (7)Tor"
    read -p " Select [1-7]: " B_NUM
    case $B_NUM in 1) B="chrome";; 2) B="firefox";; 3) B="brave";; 4) B="edge";; 5) B="opera";; 6) B="vivaldi";; 7) B="tor";; *) return 1;; esac
    echo "BROWSER:$B" > "$CONFIG_FILE" && return 0 ;;
    *) return 1 ;;
    esac
    }
    
    # --- CORE FUNCTIONS ---
    run_yt_dlp() {
    local URL=$1
    local AUTH_OPTS=()
    
    if [ -f "$CONFIG_FILE" ]; then
    VAL=$(cat "$CONFIG_FILE")
    if [[ "$VAL" == BROWSER:* ]]; then
    AUTH_OPTS=("--cookies-from-browser" "${VAL#BROWSER:}")
    else
    AUTH_OPTS=("--cookies" "$VAL")
    fi
    fi
    
    "$YTDLP_BIN" "${AUTH_OPTS[@]}" -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' \
    --merge-output-format mp4 --output "${OUTPUT_BASENAME}.%(ext)s" "$URL"
    return $?
    }
    
    process_media() {
    local MODE=$1
    local URL=$2
    local RETRY=true
    
    if [ -z "$URL" ]; then
    CLIP=$(xclip -selection clipboard -o 2>/dev/null)
    echo -e "${P}» Input URL${NC}"
    read -p " Paste link (Enter for clipboard): " MANUAL_URL
    URL=${MANUAL_URL:-$CLIP}
    fi
    [ -z "$URL" ] && return
    
    [[ "$MODE" != "SILENT" ]] && read -p " Monitor Index (0-9) [Default 0]: " MON && MON=${MON:-0}
    
    while [ "$RETRY" = true ]; do
    if run_yt_dlp "$URL"; then
    RETRY=false
    FILE=$(ls ${OUTPUT_BASENAME}.* 2>/dev/null | head -n 1)
    if [ -f "$FILE" ]; then
    [[ "$MODE" != "SILENT" ]] && mpv --fs --screen="$MON" "$FILE"
    
    if [[ "$MODE" == "DOWNLOAD" || "$MODE" == "STREAM" || "$MODE" == "PLAYLIST_SAVE" || "$MODE" == "PLAYLIST_PROCESS" ]]; then
    if [[ "$MODE" == "PLAYLIST_SAVE" ]]; then
    read -p " Add this URL to the bottom of the playlist? (y/n): " ADD_PL
    if [[ "$ADD_PL" =~ ^[Yy]$ ]]; then
    CURRENT_PL=$(get_playlist_file)
    echo "$URL" >> "$CURRENT_PL"
    echo -e "${G}✔ URL appended to $CURRENT_PL${NC}"
    fi
    fi
    
    read -p " Download complete. Save file? (y/n): " KEEP
    if [[ "$KEEP" =~ ^[Yy]$ ]]; then
    DEST=$(get_save_directory)
    if [ -n "$DEST" ] && [ -d "$DEST" ]; then
    local SA_OPTS=()
    if [ -f "$CONFIG_FILE" ]; then
    local V=$(cat "$CONFIG_FILE")
    [[ "$V" == BROWSER:* ]] && SA_OPTS=("--cookies-from-browser" "${V#BROWSER:}") || SA_OPTS=("--cookies" "$V")
    fi
    
    TITLE=$("$YTDLP_BIN" "${SA_OPTS[@]}" --get-title "$URL" | tr -dc '[:alnum:]\n\r ' | tr ' ' '_')
    mv "$FILE" "$DEST/${TITLE}.mp4"
    echo -e "${G}✔ Saved to $DEST/${TITLE}.mp4${NC}"
    read -p "Press Enter to continue..."
    else
    echo -e "${R}✘ Save cancelled or directory invalid.${NC}"
    rm "$FILE"
    read -p "Press Enter to continue..."
    fi
    else
    [ -f "$FILE" ] && rm "$FILE"
    fi
    fi
    fi
    else
    if get_failure_fix; then
    read -p " Fix applied. Retry now? (y/n): " REA
    [[ ! "$REA" =~ ^[Yy]$ ]] && RETRY=false
    else
    RETRY=false
    read -p " Press Enter to continue..."
    fi
    fi
    done
    }
    
    # --- DASHBOARD ---
    [ ! -f "$YTDLP_BIN" ] && curl -L "$YTDLP_URL" -o "$YTDLP_BIN" && chmod +x "$YTDLP_BIN"
    
    while true; do
    clear
    echo -e "${P} ████████╗ █████╗ ██╗ ██╗███████╗ ███████╗██╗ ██╗ █████╗ ██████╗██╗ ██╗"
    echo -e " ╚══██╔══╝██╔══██╗██║ ██╔╝██╔════╝ ██╔════╝██║ ██║██╔══██╗██╔════╝██║ ██╔╝"
    echo -e " ██║ ███████║█████╔╝ ███████╗ ███████╗███████║███████║██║ █████╔╝ "
    echo -e " ██║ ██╔══██║██╔═██╗ ╚════██║ ╚════██║██╔══██║██╔══██║██║ ██╔═██╗ "
    echo -e " ██║ ██║ ██║██║ ██╗███████║ ███████║██║ ██║██║ ██║╚██████╗██║ ██╗"
    echo -e " ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝${NC}"
    echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
    
    # FIXED LOGO
    echo -e "${R}"
    echo -e " ###################################### "
    echo -e " ############################################ "
    echo -e " ##############################################"
    echo -e " ##############################################"
    echo -e " ##############################################"
    echo -e " ##################-.=*########################"
    echo -e " ##################-. ..:*#####################"
    echo -e " ##################- . .:+*#################"
    echo -e " ##################- . .. ...*###############"
    echo -e " ##################-. .:+*#################"
    echo -e " ##################- :*#####################"
    echo -e " ##################-.=*########################"
    echo -e " ##############################################"
    echo -e " ##############################################"
    echo -e " ##############################################"
    echo -e " ############################################ "
    echo -e " ###################################### "
    echo ""
    echo -e "${NC}"
    
    echo -e "${P} ██████╗ ██████╗ ██╗ ██╗███╗ ██╗██╗ ██████╗ █████╗ ██████╗ ███████╗██████╗ "
    echo -e " ██╔══██╗██╔═══██╗██║ ██║████╗ ██║██║ ██╔═══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗"
    echo -e " ██║ ██║██║ ██║██║ █╗ ██║██╔██╗ ██║██║ ██║ ██║███████║██║ ██║█████╗ ██████╔╝"
    echo -e " ██║ ██║██║ ██║██║███╗██║██║╚██╗██║██║ ██║ ██║██╔══██║██║ ██║██╔══╝ ██╔══██╗"
    echo -e " ██████╔╝╚██████╔╝╚███╔███╔╝██║ ╚████║███████╗╚██████╔╝██║ ██║██████╔╝███████╗██║ ██╗"
    echo -e " ╚═════╝ ╚═════╝ ╚══╝╚══╝ ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚══════╝╚═╝ ╚═╝${NC}"
    echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
    echo -e " ${W}Media Engine${NC} | TAKsShack.com"
    echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
    
    if [ -f "$CONFIG_FILE" ]; then
    echo -e " ${G}●${NC} AUTH: ${W}$(cat "$CONFIG_FILE")${NC}"
    else
    echo -e " ${R}○${NC} AUTH: ${B}Anonymous${NC}"
    fi
    
    if [ -f "$LOC_CONFIG" ]; then
    echo -e " ${G}●${NC} PATH: ${W}$(cat "$LOC_CONFIG")${NC}"
    else
    echo -e " ${R}○${NC} PATH: ${B}Not Configured${NC}"
    fi
    echo ""
    
    echo -e " [${P}1${NC}] Stream Video [${P}4${NC}] Run Playlist File (DL & Play)"
    echo -e " [${P}2${NC}] Download & Play [${P}5${NC}] Silent Batch Download"
    echo -e " [${P}3${NC}] Multi-Link Process [${P}7${NC}] Download & Save To Playlist"
    echo -e " [${P}8${NC}] Bulk Paste To Playlist [${P}c${NC}] Reset / Update Core"
    echo -e " [${P}6${NC}] ${R}Exit Terminal${NC}"
    echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
    echo -n " SELECT ACTION: "
    read CHOICE
    
    case $CHOICE in
    1) process_media "STREAM" ;;
    2) process_media "DOWNLOAD" ;;
    3) read -p " Paste links: " MUL; for L in $MUL; do process_media "DOWNLOAD" "$L"; done ;;
    4)
    CURRENT_PL=$(get_playlist_file)
    if [ ! -f "$CURRENT_PL" ]; then
    echo -e "${R}✘ Playlist file not found at $CURRENT_PL${NC}"
    read -p " Enter full path to your playlist file: " NEW_PL_PATH
    echo "$NEW_PL_PATH" > "$PLAYLIST_PATH_CONFIG"
    CURRENT_PL=$NEW_PL_PATH
    fi
    
    if [ -f "$CURRENT_PL" ]; then
    while :; do
    L=$(head -n 1 "$CURRENT_PL")
    [ -z "$L" ] && break
    
    process_media "PLAYLIST_PROCESS" "$L"
    
    read -p " Finished processing link. Remove it from playlist? (y/n): " REMOVE
    if [[ "$REMOVE" =~ ^[Yy]$ ]]; then
    sed -i '1d' "$CURRENT_PL"
    echo -e "${G}✔ Link removed from top of playlist.${NC}"
    else
    read -p " Skip to next link without removing? (y/n): " SKIP
    [[ "$SKIP" =~ ^[Yy]$ ]] && sed -i '1d' "$CURRENT_PL" || break
    fi
    done
    fi ;;
    5)
    read -p " Paste links: " B_URLS
    B_DEST=$(get_save_directory)
    if [ -d "$B_DEST" ]; then
    for L in $B_URLS; do
    process_media "SILENT" "$L"
    F=$(ls ${OUTPUT_BASENAME}.* 2>/dev/null | head -n 1)
    [ -f "$F" ] && mv "$F" "$B_DEST/"
    done
    fi ;;
    7) process_media "PLAYLIST_SAVE" ;;
    8)
    CURRENT_PL=$(get_playlist_file)
    read -p " Paste links space-separated: " BULK_PL_LINKS
    for L in $BULK_PL_LINKS; do
    echo "$L" >> "$CURRENT_PL"
    echo -e "${G}✔ Added to playlist:${NC} $L"
    done
    read -p "Bulk save complete. Press Enter to return..."
    ;;
    c|C)
    echo -e " Clear [${P}A${NC}]uth, [${P}L${NC}]ocation, or [${P}P${NC}]laylist Path?"
    read CLEAR_MODE
    [[ "$CLEAR_MODE" =~ ^[Aa]$ ]] && rm "$CONFIG_FILE" 2>/dev/null
    [[ "$CLEAR_MODE" =~ ^[Ll]$ ]] && rm "$LOC_CONFIG" 2>/dev/null
    [[ "$CLEAR_MODE" =~ ^[Pp]$ ]] && rm "$PLAYLIST_PATH_CONFIG" 2>/dev/null
    ;;
    6) rm "$YTDLP_BIN" 2>/dev/null; clear; break ;;
    esac
    done
    #8504
    thumbtak
    Moderator

    Layout Changes

    #!/bin/bash
    
    # --- COLORS & STYLING ---
    G='\033[0;32m' # Success
    B='\033[0;34m' # Secondary
    P='\033[38;5;211m' # Rose Pink (Primary)
    Y='\033[1;33m' # Warning
    R='\033[0;31m' # Danger
    W='\033[1;37m' # Highlight
    NC='\033[0m' # Reset
    
    # --- CONFIGURATION ---
    YTDLP_URL="https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp"
    YTDLP_BIN="./yt-dlp"
    OUTPUT_BASENAME="downloaded_video"
    PLAYLIST_FILE="video_playlist.txt"
    CONFIG_FILE=".ytdlp_config"
    LOC_CONFIG=".ytdlp_location"
    PLAYLIST_PATH_CONFIG=".ytdlp_playlist_path"
    
    # --- LOCATION HELPER ---
    get_save_directory() {
    local SAVED_DIR=""
    [ -f "$LOC_CONFIG" ] && SAVED_DIR=$(cat "$LOC_CONFIG")
    
    if [ -d "$SAVED_DIR" ]; then
    echo -e "${Y}» Existing Path Found:${NC} $SAVED_DIR" >&2
    read -p " Use this location? (y/n): " USE_SAVED >&2
    if [[ "$USE_SAVED" =~ ^[Yy]$ ]]; then
    echo "$SAVED_DIR"
    return 0
    fi
    fi
    
    echo -e "${P}» Setup New Directory${NC}" >&2
    read -p " Enter Full Path: " NEW_DIR >&2
    if [ -d "$NEW_DIR" ]; then
    echo "$NEW_DIR" > "$LOC_CONFIG"
    echo "$NEW_DIR"
    else
    echo -e "${R}✘ Directory does not exist!${NC}" >&2
    echo ""
    fi
    }
    
    # --- PLAYLIST PERSISTENCE HELPER ---
    get_playlist_file() {
    if [ -f "$PLAYLIST_PATH_CONFIG" ]; then
    cat "$PLAYLIST_PATH_CONFIG"
    else
    echo "$PLAYLIST_FILE"
    fi
    }
    
    # --- AUTHENTICATION & UPDATE HELPER ---
    get_failure_fix() {
    echo -e "\n${R}┌───────────────────────────────────────────────────────────┐${NC}"
    echo -e "${R}│ CRITICAL ERROR: Download Interrupted │${NC}"
    echo -e "${R}└───────────────────────────────────────────────────────────┘${NC}"
    echo -e " [${P}U${NC}] Check for Updates [${P}B${NC}] Link Browser Cookies"
    echo -e " [${P}F${NC}] Manual cookies.txt [${P}N${NC}] Return to Dashboard"
    echo -e "${B}─────────────────────────────────────────────────────────────${NC}"
    read -p " Action Required: " FIX_CHOICE
    
    case $FIX_CHOICE in
    [uU]*)
    echo "Checking for updates..."
    if "$YTDLP_BIN" -U; then
    echo "Update successful."
    else
    curl -L "$YTDLP_URL" -o "$YTDLP_BIN" && chmod +x "$YTDLP_BIN"
    fi
    return 0 ;;
    [fF]*)
    read -p " Path to cookies.txt: " USER_FILE
    [ -f "$USER_FILE" ] && echo "$USER_FILE" > "$CONFIG_FILE" && return 0 ;;
    [bB]*)
    echo -e " (1)Chrome (2)Firefox (3)Brave (4)Edge (5)Opera (6)Vivaldi (7)Tor"
    read -p " Select [1-7]: " B_NUM
    case $B_NUM in 1) B="chrome";; 2) B="firefox";; 3) B="brave";; 4) B="edge";; 5) B="opera";; 6) B="vivaldi";; 7) B="tor";; *) return 1;; esac
    echo "BROWSER:$B" > "$CONFIG_FILE" && return 0 ;;
    *) return 1 ;;
    esac
    }
    
    # --- CORE FUNCTIONS ---
    run_yt_dlp() {
    local URL=$1
    local AUTH_OPTS=()
    
    if [ -f "$CONFIG_FILE" ]; then
    VAL=$(cat "$CONFIG_FILE")
    if [[ "$VAL" == BROWSER:* ]]; then
    AUTH_OPTS=("--cookies-from-browser" "${VAL#BROWSER:}")
    else
    AUTH_OPTS=("--cookies" "$VAL")
    fi
    fi
    
    "$YTDLP_BIN" "${AUTH_OPTS[@]}" -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' \
    --merge-output-format mp4 --output "${OUTPUT_BASENAME}.%(ext)s" "$URL"
    return $?
    }
    
    process_media() {
    local MODE=$1
    local URL=$2
    local RETRY=true
    
    if [ -z "$URL" ]; then
    CLIP=$(xclip -selection clipboard -o 2>/dev/null)
    echo -e "${P}» Input URL${NC}"
    read -p " Paste link (Enter for clipboard): " MANUAL_URL
    URL=${MANUAL_URL:-$CLIP}
    fi
    [ -z "$URL" ] && return
    
    [[ "$MODE" != "SILENT" ]] && read -p " Monitor Index (0-9) [Default 0]: " MON && MON=${MON:-0}
    
    while [ "$RETRY" = true ]; do
    if run_yt_dlp "$URL"; then
    RETRY=false
    FILE=$(ls ${OUTPUT_BASENAME}.* 2>/dev/null | head -n 1)
    if [ -f "$FILE" ]; then
    [[ "$MODE" != "SILENT" ]] && mpv --fs --screen="$MON" "$FILE"
    
    if [[ "$MODE" == "DOWNLOAD" || "$MODE" == "STREAM" || "$MODE" == "PLAYLIST_SAVE" || "$MODE" == "PLAYLIST_PROCESS" ]]; then
    if [[ "$MODE" == "PLAYLIST_SAVE" ]]; then
    read -p " Add this URL to the bottom of the playlist? (y/n): " ADD_PL
    if [[ "$ADD_PL" =~ ^[Yy]$ ]]; then
    CURRENT_PL=$(get_playlist_file)
    echo "$URL" >> "$CURRENT_PL"
    echo -e "${G}✔ URL appended to $CURRENT_PL${NC}"
    fi
    fi
    
    read -p " Download complete. Save file? (y/n): " KEEP
    if [[ "$KEEP" =~ ^[Yy]$ ]]; then
    DEST=$(get_save_directory)
    if [ -n "$DEST" ] && [ -d "$DEST" ]; then
    local SA_OPTS=()
    if [ -f "$CONFIG_FILE" ]; then
    local V=$(cat "$CONFIG_FILE")
    [[ "$V" == BROWSER:* ]] && SA_OPTS=("--cookies-from-browser" "${V#BROWSER:}") || SA_OPTS=("--cookies" "$V")
    fi
    
    TITLE=$("$YTDLP_BIN" "${SA_OPTS[@]}" --get-title "$URL" | tr -dc '[:alnum:]\n\r ' | tr ' ' '_')
    mv "$FILE" "$DEST/${TITLE}.mp4"
    echo -e "${G}✔ Saved to $DEST/${TITLE}.mp4${NC}"
    read -p "Press Enter to continue..."
    else
    echo -e "${R}✘ Save cancelled or directory invalid.${NC}"
    rm "$FILE"
    read -p "Press Enter to continue..."
    fi
    else
    [ -f "$FILE" ] && rm "$FILE"
    fi
    fi
    fi
    else
    if get_failure_fix; then
    read -p " Fix applied. Retry now? (y/n): " REA
    [[ ! "$REA" =~ ^[Yy]$ ]] && RETRY=false
    else
    RETRY=false
    read -p " Press Enter to continue..."
    fi
    fi
    done
    }
    
    # --- DASHBOARD ---
    [ ! -f "$YTDLP_BIN" ] && curl -L "$YTDLP_URL" -o "$YTDLP_BIN" && chmod +x "$YTDLP_BIN"
    
    while true; do
    clear
    echo -e "${P} ████████╗ █████╗ ██╗ ██╗███████╗ ███████╗██╗ ██╗ █████╗ ██████╗██╗ ██╗"
    echo -e " ╚══██╔══╝██╔══██╗██║ ██╔╝██╔════╝ ██╔════╝██║ ██║██╔══██╗██╔════╝██║ ██╔╝"
    echo -e " ██║ ███████║█████╔╝ ███████╗ ███████╗███████║███████║██║ █████╔╝ "
    echo -e " ██║ ██╔══██║██╔═██╗ ╚════██║ ╚════██║██╔══██║██╔══██║██║ ██╔═██╗ "
    echo -e " ██║ ██║ ██║██║ ██╗███████║ ███████║██║ ██║██║ ██║╚██████╗██║ ██╗"
    echo -e " ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝${NC}"
    echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
    
    # FIXED LOGO
    echo -e "${R}"
    echo -e " ###################################### "
    echo -e " ############################################ "
    echo -e " ##############################################"
    echo -e " ##############################################"
    echo -e " ##############################################"
    echo -e " ##################-.=*########################"
    echo -e " ##################-. ..:*#####################"
    echo -e " ##################- . .:+*#################"
    echo -e " ##################- . .. ...*###############"
    echo -e " ##################-. .:+*#################"
    echo -e " ##################- :*#####################"
    echo -e " ##################-.=*########################"
    echo -e " ##############################################"
    echo -e " ##############################################"
    echo -e " ##############################################"
    echo -e " ############################################ "
    echo -e " ###################################### "
    echo ""
    echo -e "${NC}"
    
    echo -e "${P} ██████╗ ██████╗ ██╗ ██╗███╗ ██╗██╗ ██████╗ █████╗ ██████╗ ███████╗██████╗ "
    echo -e " ██╔══██╗██╔═══██╗██║ ██║████╗ ██║██║ ██╔═══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗"
    echo -e " ██║ ██║██║ ██║██║ █╗ ██║██╔██╗ ██║██║ ██║ ██║███████║██║ ██║█████╗ ██████╔╝"
    echo -e " ██║ ██║██║ ██║██║███╗██║██║╚██╗██║██║ ██║ ██║██╔══██║██║ ██║██╔══╝ ██╔══██╗"
    echo -e " ██████╔╝╚██████╔╝╚███╔███╔╝██║ ╚████║███████╗╚██████╔╝██║ ██║██████╔╝███████╗██║ ██╗"
    echo -e " ╚═════╝ ╚═════╝ ╚══╝╚══╝ ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚══════╝╚═╝ ╚═╝${NC}"
    echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
    echo -e " ${W}Media Engine${NC} | TAKsShack.com"
    echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
    
    if [ -f "$CONFIG_FILE" ]; then
    echo -e " ${G}●${NC} AUTH: ${W}$(cat "$CONFIG_FILE")${NC}"
    else
    echo -e " ${R}○${NC} AUTH: ${B}Anonymous${NC}"
    fi
    
    if [ -f "$LOC_CONFIG" ]; then
    echo -e " ${G}●${NC} PATH: ${W}$(cat "$LOC_CONFIG")${NC}"
    else
    echo -e " ${R}○${NC} PATH: ${B}Not Configured${NC}"
    fi
    echo ""
    
    echo -e " [${P}1${NC}] Stream Video [${P}4${NC}] Run Playlist File (DL & Play)"
    echo -e " [${P}2${NC}] Download & Play [${P}5${NC}] Silent Batch Download"
    echo -e " [${P}3${NC}] Multi-Link Process [${P}7${NC}] Download & Save To Playlist"
    echo -e " [${P}8${NC}] Bulk Paste To Playlist [${P}c${NC}] Reset / Update Core"
    echo -e " [${P}6${NC}] ${R}Exit Terminal${NC}"
    echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
    echo -n " SELECT ACTION: "
    read CHOICE
    
    case $CHOICE in
    1) process_media "STREAM" ;;
    2) process_media "DOWNLOAD" ;;
    3) read -p " Paste links: " MUL; for L in $MUL; do process_media "DOWNLOAD" "$L"; done ;;
    4)
    CURRENT_PL=$(get_playlist_file)
    if [ ! -f "$CURRENT_PL" ]; then
    echo -e "${R}✘ Playlist file not found at $CURRENT_PL${NC}"
    read -p " Enter full path to your playlist file: " NEW_PL_PATH
    echo "$NEW_PL_PATH" > "$PLAYLIST_PATH_CONFIG"
    CURRENT_PL=$NEW_PL_PATH
    fi
    
    if [ -f "$CURRENT_PL" ]; then
    while :; do
    L=$(head -n 1 "$CURRENT_PL")
    [ -z "$L" ] && break
    
    process_media "PLAYLIST_PROCESS" "$L"
    
    read -p " Finished processing link. Remove it from playlist? (y/n): " REMOVE
    if [[ "$REMOVE" =~ ^[Yy]$ ]]; then
    sed -i '1d' "$CURRENT_PL"
    echo -e "${G}✔ Link removed from top of playlist.${NC}"
    else
    read -p " Skip to next link without removing? (y/n): " SKIP
    [[ "$SKIP" =~ ^[Yy]$ ]] && sed -i '1d' "$CURRENT_PL" || break
    fi
    done
    fi ;;
    5)
    read -p " Paste links: " B_URLS
    B_DEST=$(get_save_directory)
    if [ -d "$B_DEST" ]; then
    for L in $B_URLS; do
    process_media "SILENT" "$L"
    F=$(ls ${OUTPUT_BASENAME}.* 2>/dev/null | head -n 1)
    [ -f "$F" ] && mv "$F" "$B_DEST/"
    done
    fi ;;
    7) process_media "PLAYLIST_SAVE" ;;
    8)
    CURRENT_PL=$(get_playlist_file)
    read -p " Paste links space-separated: " BULK_PL_LINKS
    for L in $BULK_PL_LINKS; do
    echo "$L" >> "$CURRENT_PL"
    echo -e "${G}✔ Added to playlist:${NC} $L"
    done
    read -p "Bulk save complete. Press Enter to return..."
    ;;
    c|C)
    echo -e " Clear [${P}A${NC}]uth, [${P}L${NC}]ocation, or [${P}P${NC}]laylist Path?"
    read CLEAR_MODE
    [[ "$CLEAR_MODE" =~ ^[Aa]$ ]] && rm "$CONFIG_FILE" 2>/dev/null
    [[ "$CLEAR_MODE" =~ ^[Ll]$ ]] && rm "$LOC_CONFIG" 2>/dev/null
    [[ "$CLEAR_MODE" =~ ^[Pp]$ ]] && rm "$PLAYLIST_PATH_CONFIG" 2>/dev/null
    ;;
    6) rm "$YTDLP_BIN" 2>/dev/null; clear; break ;;
    esac
    done

     

    #8505
    thumbtak
    Moderator

    Script updated.

    Download the sh script here. https://limewire.com/d/FBeYg#BYy8idJNPE

Viewing 5 posts - 31 through 35 (of 35 total)
  • You must be logged in to reply to this topic.
TAKs Shack