videoDownloadTGbot/youtube-downloader/get_youtube_cookies.sh
vrubelroman 772e9fd5b4
All checks were successful
CI/CD Pipeline / build-and-deploy (push) Successful in 1m47s
chore: remove obsolete per-folder scripts, add cookies-cron reference, update docs
- Remove get_cookies.sh (targets a container without yt-dlp, already
  broken), get_cookies_local.sh, start_all.sh/stop_all.sh — these
  implement the old per-service-compose startup that now conflicts
  with the unified root docker-compose.yml.
- Add cookies-cron/ — a reference copy of the scripts actually running
  via cron on the separate browser-equipped machine, with setup
  requirements and instructions for standing up a new cron host.
- Update README.md/ARCHITECTURE.md to describe the current unified
  docker-compose + CI/CD deploy flow and host-mounted cookies instead
  of the old per-folder workflow.
2026-06-30 22:16:40 +00:00

103 lines
4.2 KiB
Bash
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Скрипт для получения cookies YouTube через yt-dlp из Firefox
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
COOKIES_FILE="$SCRIPT_DIR/youtube_cookies.txt"
BROWSER="firefox"
# Если запущено с sudo, используем HOME реального пользователя
if [ -n "$SUDO_USER" ]; then
REAL_HOME=$(getent passwd "$SUDO_USER" | cut -d: -f6)
export HOME="$REAL_HOME"
echo "⚠️ Обнаружен sudo, использую домашнюю директорию пользователя: $HOME"
fi
echo "Получение cookies YouTube из Firefox..."
echo "Файл cookies будет сохранен в: $COOKIES_FILE"
# Проверяем наличие yt-dlp
if ! command -v yt-dlp &> /dev/null; then
echo ""
echo "❌ yt-dlp не найден в системе"
echo ""
echo "Установите yt-dlp одним из способов:"
echo ""
echo "1. Через pacman (Arch Linux):"
echo " sudo pacman -S yt-dlp"
echo ""
echo "2. Через pip:"
echo " pip install yt-dlp"
echo " или"
echo " pip3 install yt-dlp"
echo ""
echo "3. Через pipx (рекомендуется):"
echo " pipx install yt-dlp"
echo ""
exit 1
fi
echo "Получаю cookies..."
# Используем простой способ: извлекаем cookies из браузера и сохраняем в файл
# Используем конкретное короткое видео (не плейлист, не главную страницу)
# Таймаут 10 секунд
# --no-download - не скачивать видео
# --skip-download - пропустить скачивание
# --flat-playlist - не извлекать информацию о видео в плейлистах
# Перенаправляем весь вывод, чтобы не видеть процесс скачивания
timeout 10 yt-dlp \
--cookies-from-browser "$BROWSER" \
--cookies "$COOKIES_FILE" \
--no-download \
--skip-download \
--flat-playlist \
--quiet \
"https://www.youtube.com/watch?v=jNQXAC9IVRw" > /dev/null 2>&1 || true
EXIT_CODE=$?
# Не важно, какой код возврата - главное проверить, создался ли файл cookies
# yt-dlp может вернуть ошибку, но cookies все равно сохранить
if [ -f "$COOKIES_FILE" ]; then
# Проверяем, что файл содержит данные (не только заголовки)
COOKIE_LINES=$(grep -v '^#' "$COOKIES_FILE" | grep -v '^$' | wc -l)
if [ "$COOKIE_LINES" -gt 0 ]; then
echo ""
echo "✅ Cookies успешно сохранены в $COOKIES_FILE"
echo " Найдено строк с cookies: $COOKIE_LINES"
echo ""
echo "Если cookies смонтированы с хоста (см. docker-compose.yml/docker-compose.prod.yml),"
echo "перезапуск не нужен — yt-dlp читает файл заново при каждом запросе."
else
echo ""
echo "❌ Ошибка: файл cookies создан, но не содержит данных"
rm -f "$COOKIES_FILE"
exit 1
fi
else
echo ""
echo "❌ Ошибка: файл cookies не был создан"
echo ""
echo "Возможные причины:"
echo "1. Firefox не найден или недоступен"
echo "2. Проблемы с правами доступа к файлу cookies браузера"
echo "3. Cookies не найдены в браузере"
echo ""
echo "Проверка:"
if [ -n "$SUDO_USER" ]; then
REAL_HOME=$(getent passwd "$SUDO_USER" | cut -d: -f6)
FIREFOX_DIR="$REAL_HOME/.mozilla/firefox"
else
FIREFOX_DIR="$HOME/.mozilla/firefox"
fi
if [ -d "$FIREFOX_DIR" ]; then
echo " ✓ Директория Firefox найдена: $FIREFOX_DIR"
else
echo " ✗ Директория Firefox не найдена: $FIREFOX_DIR"
echo " Попробуйте запустить скрипт БЕЗ sudo: ./get_youtube_cookies.sh"
fi
exit 1
fi