loader image

Reply To: 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 Reply To: How to Stop Ad Blocker Detection on Websites Like YouTube

#8425
thumbtak
Moderator

Updated bash script

#!/bin/bash

# --- 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" # New file to remember your save folder

# --- LOCATION HELPER ---
get_save_directory() {
local SAVED_DIR=""
[ -f "$LOC_CONFIG" ] && SAVED_DIR=$(cat "$LOC_CONFIG")

if [ -d "$SAVED_DIR" ]; then
read -p "Use saved location: $SAVED_DIR? (y/n): " USE_SAVED
if [[ "$USE_SAVED" =~ ^[Yy]$ ]]; then
echo "$SAVED_DIR"
return 0
fi
fi

read -p "Enter Full Path to Save Folder: " NEW_DIR
if [ -d "$NEW_DIR" ]; then
echo "$NEW_DIR" > "$LOC_CONFIG"
echo "$NEW_DIR"
else
echo "" # Return empty if invalid
fi
}

# --- AUTHENTICATION & UPDATE HELPER ---
get_failure_fix() {
echo -e "\n[!] DOWNLOAD FAILED: YouTube may have updated their site or blocked the request."
echo "---------------------------------------------------------------"
echo " [U] CHECK FOR UPDATES (Fixes 'signature' & 'bot' errors)"
echo " [F] Link a cookies.txt file (Manual Path)"
echo " [B] Extract from Browser (Select from list)"
echo " [N] Cancel and return to menu"
echo "---------------------------------------------------------------"
read -p "Select a fix [U/F/B/N]: " FIX_CHOICE

case $FIX_CHOICE in
[uU]*)
echo "Checking for yt-dlp updates..."
if "$YTDLP_BIN" -U; then
echo "Update check complete."
else
echo "Self-update failed. Re-downloading latest binary..."
curl -L "$YTDLP_URL" -o "$YTDLP_BIN" && chmod +x "$YTDLP_BIN"
fi
return 0 ;;
[fF]*)
read -p "Enter path to cookies.txt: " USER_FILE
[ -f "$USER_FILE" ] && echo "--cookies $USER_FILE" > "$CONFIG_FILE" && return 0 ;;
[bB]*)
echo -e "\n1) Chrome 2) Firefox 3) Brave 4) Edge 5) Opera 6) Vivaldi 7) Tor"
read -p "Select browser [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)
read -p "Enter Link (or press Enter to use clipboard: $CLIP): " 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" ]]; then
read -p "Download complete. Save? (y/n): " KEEP
if [[ "$KEEP" =~ ^[Yy]$ ]]; then
DEST=$(get_save_directory)
if [ -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 "Saved to $DEST"
fi
fi
fi
[ -f "$FILE" ] && rm "$FILE"
fi
else
if get_failure_fix; then
read -p "Fix applied. Retry link now? (y/n): " REA
[[ ! "$REA" =~ ^[Yy]$ ]] && RETRY=false
else
RETRY=false
read -p "Press Enter to return to menu..."
fi
fi
done
}

# --- DASHBOARD ---
[ ! -f "$YTDLP_BIN" ] && curl -L "$YTDLP_URL" -o "$YTDLP_BIN" && chmod +x "$YTDLP_BIN"

while true; do
clear
echo "==========================================================================================="
echo "| TAKS SHACK | YouTube Player & Downloader | Created by Thumbtak at http://TAKsShack.com |"
echo "==========================================================================================="
[ -f "$CONFIG_FILE" ] && echo " Auth Mode: $(cat "$CONFIG_FILE")" || echo " Auth Mode: NONE"
[ -f "$LOC_CONFIG" ] && echo " Default Save: $(cat "$LOC_CONFIG")" || echo " Default Save: NOT SET"
echo "-------------------------------------------------------------------------------------------"
echo " [1] Stream SINGLE Video [4] Run PLAYLIST File"
echo " [2] Download & Play SINGLE [5] Silent Batch DOWNLOAD"
echo " [3] Download & Play MULTIPLE [c] Reset Auth / Update"
echo " [6] EXIT AND CLEANUP"
echo "==========================================================================================="
read -p "SELECT OPTION: " 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)
read -p "Clear [A]uth or [L]ocation? " CLEAR_MODE
[[ "$CLEAR_MODE" =~ ^[Aa]$ ]] && rm "$CONFIG_FILE" 2>/dev/null
[[ "$CLEAR_MODE" =~ ^[Ll]$ ]] && rm "$LOC_CONFIG" 2>/dev/null
;;
6) break ;;
esac
done
rm "$YTDLP_BIN" 2>/dev/null
  • This reply was modified 1 week, 6 days ago by thumbtak. Reason: Minor update
TAKs Shack