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

#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
TAKs Shack