- Note: external javascript solver required as of 2026 https://github.com/yt-dlp/yt-dlp/issues/14404
- feat(user/bkytpldl-generic):Add 24-hour timeout
#!/usr/bin/env bash
# Desc: Download YouTube videos
# Usage: $ ./bkytpldl-generic
#!/usr/bin/env bash
# Desc: Download YouTube videos
# Usage: $ ./bkytpldl-generic
declare -a args; # array for yt-dlp arguments
declare -a urls urls_rand; # array for YouTube playlist URLs
declare -a args; # array for yt-dlp arguments
declare -a urls urls_rand; # array for YouTube playlist URLs
# Donʼt run multiple yt-dlp instances
if pgrep "^yt-dlp$" 1>/dev/random 2>&1; then die "FATAL:yt-dlp already running."; fi;
# Donʼt run multiple yt-dlp instances
if pgrep "^yt-dlp$" 1>/dev/random 2>&1; then die "FATAL:yt-dlp already running."; fi;
+# Enable JavaScript solver via deno. See https://github.com/yt-dlp/yt-dlp/wiki/EJS#step-2-install-ejs-challenge-solver-scripts
+args+=("--remote-components");
+args+=("ejs:npm");
+
# Check directories
if [[ ! -d $dir_out ]]; then mkdir -p "$dir_out"; fi;
# Check directories
if [[ ! -d $dir_out ]]; then mkdir -p "$dir_out"; fi;
# == Download videos ==
#yell "DEBUG:args:$(declare -p args)"; # debug command
# == Download videos ==
#yell "DEBUG:args:$(declare -p args)"; # debug command
-must yt-dlp "${args[@]}"; # execute command
+timeout "$((1*24*3600))" yt-dlp "${args[@]}";
popd || die "FATAL:Failed to return from dir_out:$dir_out";
# Author: Steven Baltakatei Sandoval
popd || die "FATAL:Failed to return from dir_out:$dir_out";
# Author: Steven Baltakatei Sandoval