From 64a2d28957aeec345fc2ab7da5a0a6dcb49aa9e4 Mon Sep 17 00:00:00 2001 From: SansGuidon Date: Mon, 28 Apr 2025 11:05:47 +0000 Subject: [PATCH] add(cloudron) hacky install of yt-dlp --- cloudron/awesome-installs/yt-dlp.sh | 118 ++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 cloudron/awesome-installs/yt-dlp.sh diff --git a/cloudron/awesome-installs/yt-dlp.sh b/cloudron/awesome-installs/yt-dlp.sh new file mode 100644 index 0000000..d00be4c --- /dev/null +++ b/cloudron/awesome-installs/yt-dlp.sh @@ -0,0 +1,118 @@ +set -euo pipefail +read -rsp "Set password for admin (HTTP basic auth) user: " pass1; echo +read -rsp "Confirm password: " pass2; echo +[ "$pass1" != "$pass2" ] && echo "Passwords do not match." && exit 1 +read -rp "Enter downloads directory [/app/data/downloads]: " downloads_dir +downloads_dir=${downloads_dir:-/app/data/downloads} +mkdir -p /app/data/public/bin "$downloads_dir" +/bin/rm -f /app/data/public/bin/yt-dlp +curl -sSL https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /app/data/public/bin/yt-dlp +chmod +x /app/data/public/bin/yt-dlp +if command -v htpasswd >/dev/null 2>&1; then + htpasswd -cb /app/data/.htpasswd admin "$pass1" +else + echo "admin:$(openssl passwd -apr1 "$pass1")" > /app/data/.htpasswd +fi +cat > /app/data/public/.htaccess <<'EOF' +AuthType Basic +AuthName "Restricted Area" +AuthUserFile /app/data/.htpasswd +Require valid-user +EOF +set +u +{ + echo "[settings]" + echo "downloads_dir=$downloads_dir" +} > /app/data/config.ini +set -u +cat > /app/data/public/index.php <<'EOF' +Cookies cleared. Go back

"; + exit; + } + + if (isset($_FILES["cookies"])) { + if ($_FILES["cookies"]["error"] === UPLOAD_ERR_OK && is_uploaded_file($_FILES["cookies"]["tmp_name"])) { + move_uploaded_file($_FILES["cookies"]["tmp_name"], $cookies_path); + echo "

Cookies uploaded successfully. Go back

"; + exit; + } else { + echo "

Cookie upload failed. Go back

"; + exit; + } + } + + if (!empty($_POST["urls"])) { + $urls = array_filter(array_map("trim", explode("\n", $_POST["urls"]))); + foreach ($urls as $url) { + $escaped_url = escapeshellarg($url); + $command = "/app/data/public/bin/yt-dlp -o " . escapeshellarg("$downloads_dir/%(title)s.%(ext)s") . " $cookies_option $escaped_url >> /tmp/yt-dlp.log 2>&1 &"; + shell_exec($command); + } + echo "

Downloads started. Go back or View Log.

"; + exit; + } +} +?> + + +yt-dlp Downloader + +

yt-dlp Downloader

+ +
+

+ +
+ +

Cookies Management

+ +
+

+ +
+ +
+ +
+ +

Need help with cookies? Learn how to export your cookies.txt.

+ +

View Download Log

+ +

Latest Downloads

+ + + + +EOF +cat > /app/data/public/log.php <<'EOF' +"; +system("tail -n 100 /tmp/yt-dlp.log 2>&1"); +echo ""; +?> +EOF +chown -R www-data:www-data /app/data/public +echo "Done. Access via your LAMP app URL (protected)." \ No newline at end of file