#!/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 "Теперь перезапустите youtube-downloader:" echo " docker compose -f youtube-downloader/docker-compose.yml restart" echo "" echo "Или перезапустите все сервисы:" echo " ./stop_all.sh && ./start_all.sh" 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