#!/bin/bash # Скрипт для получения cookies YouTube через yt-dlp SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" COOKIES_FILE="$SCRIPT_DIR/youtube_cookies.txt" echo "Получение cookies YouTube из браузера..." echo "" echo "Выберите браузер:" echo "1) Chrome" echo "2) Firefox" echo "3) Edge" echo "4) Opera" read -p "Введите номер (1-4): " browser case "$browser" in 1) BROWSER="chrome" ;; 2) BROWSER="firefox" ;; 3) BROWSER="edge" ;; 4) BROWSER="opera" ;; *) echo "Неверный выбор" exit 1 ;; esac echo "Получаю cookies из $BROWSER..." 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 "" echo "ВАЖНО: Убедитесь, что вы залогинены в YouTube в выбранном браузере!" echo "Нажмите Enter для продолжения..." read echo "" echo "Получаю cookies из браузера $BROWSER..." echo "Это должно занять несколько секунд..." # Используем простой способ: извлекаем cookies из браузера и сохраняем в файл # Используем главную страницу YouTube (самый простой запрос) # Таймаут 15 секунд - этого должно хватить для извлечения cookies # --no-download - не скачивать видео # --quiet - минимум вывода timeout 15 yt-dlp \ --cookies-from-browser "$BROWSER" \ --cookies "$COOKIES_FILE" \ --no-download \ --quiet \ "https://www.youtube.com" 2>&1 | head -20 EXIT_CODE=$? if [ $EXIT_CODE -eq 124 ]; then echo "" echo "⚠️ Процесс получения cookies превысил таймаут (20 сек)" echo " Проверяю, был ли создан файл cookies..." elif [ $EXIT_CODE -ne 0 ] && [ $EXIT_CODE -ne 124 ]; then echo "" echo "⚠️ Процесс завершился с кодом $EXIT_CODE" echo " Проверяю, был ли создан файл cookies..." fi 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 создан, но не содержит данных" echo " Убедитесь, что вы залогинены в YouTube в браузере $BROWSER" rm -f "$COOKIES_FILE" exit 1 fi else echo "" echo "❌ Ошибка: файл cookies не был создан" echo "" echo "Возможные причины:" echo "1. Вы не залогинены в YouTube в браузере $BROWSER" echo "2. Браузер $BROWSER не найден или недоступен" echo "3. Проблемы с правами доступа к файлу cookies браузера" exit 1 fi