2025-12-16 10:15:50 +03:00
|
|
|
|
#!/bin/bash
|
2025-12-20 04:58:52 +03:00
|
|
|
|
# Скрипт для получения cookies YouTube через yt-dlp из Firefox
|
2025-12-16 10:15:50 +03:00
|
|
|
|
|
|
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
|
|
COOKIES_FILE="$SCRIPT_DIR/youtube_cookies.txt"
|
2025-12-20 04:58:52 +03:00
|
|
|
|
BROWSER="firefox"
|
2025-12-16 10:15:50 +03:00
|
|
|
|
|
2026-01-10 21:40:07 +00:00
|
|
|
|
# Если запущено с sudo, используем HOME реального пользователя
|
2025-12-20 04:58:52 +03:00
|
|
|
|
if [ -n "$SUDO_USER" ]; then
|
|
|
|
|
|
REAL_HOME=$(getent passwd "$SUDO_USER" | cut -d: -f6)
|
|
|
|
|
|
export HOME="$REAL_HOME"
|
2026-01-10 21:40:07 +00:00
|
|
|
|
echo "⚠️ Обнаружен sudo, использую домашнюю директорию пользователя: $HOME"
|
2025-12-20 04:58:52 +03:00
|
|
|
|
fi
|
2025-12-16 10:15:50 +03:00
|
|
|
|
|
2026-01-10 21:40:07 +00:00
|
|
|
|
echo "Получение cookies YouTube из Firefox..."
|
|
|
|
|
|
echo "Файл cookies будет сохранен в: $COOKIES_FILE"
|
2025-12-16 10:15:50 +03:00
|
|
|
|
|
|
|
|
|
|
# Проверяем наличие yt-dlp
|
|
|
|
|
|
if ! command -v yt-dlp &> /dev/null; then
|
2026-01-10 21:40:07 +00:00
|
|
|
|
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 ""
|
2025-12-16 10:15:50 +03:00
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
2026-01-10 21:40:07 +00:00
|
|
|
|
echo "Получаю cookies..."
|
2025-12-17 17:53:34 +03:00
|
|
|
|
|
2026-01-10 21:40:07 +00:00
|
|
|
|
# Используем простой способ: извлекаем cookies из браузера и сохраняем в файл
|
|
|
|
|
|
# Используем конкретное короткое видео (не плейлист, не главную страницу)
|
|
|
|
|
|
# Таймаут 10 секунд
|
2025-12-17 17:53:34 +03:00
|
|
|
|
# --no-download - не скачивать видео
|
2025-12-20 04:58:52 +03:00
|
|
|
|
# --skip-download - пропустить скачивание
|
2026-01-10 21:40:07 +00:00
|
|
|
|
# --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
|
2025-12-17 17:53:34 +03:00
|
|
|
|
|
|
|
|
|
|
EXIT_CODE=$?
|
|
|
|
|
|
|
2026-01-10 21:40:07 +00:00
|
|
|
|
# Не важно, какой код возврата - главное проверить, создался ли файл cookies
|
|
|
|
|
|
# yt-dlp может вернуть ошибку, но cookies все равно сохранить
|
2025-12-25 21:38:13 +03:00
|
|
|
|
|
2026-01-10 21:40:07 +00:00
|
|
|
|
if [ -f "$COOKIES_FILE" ]; then
|
|
|
|
|
|
# Проверяем, что файл содержит данные (не только заголовки)
|
2025-12-17 17:53:34 +03:00
|
|
|
|
COOKIE_LINES=$(grep -v '^#' "$COOKIES_FILE" | grep -v '^$' | wc -l)
|
|
|
|
|
|
|
2026-01-10 21:40:07 +00:00
|
|
|
|
if [ "$COOKIE_LINES" -gt 0 ]; then
|
2025-12-17 17:53:34 +03:00
|
|
|
|
echo ""
|
|
|
|
|
|
echo "✅ Cookies успешно сохранены в $COOKIES_FILE"
|
2026-01-10 21:40:07 +00:00
|
|
|
|
echo " Найдено строк с cookies: $COOKIE_LINES"
|
2025-12-25 21:38:13 +03:00
|
|
|
|
echo ""
|
2026-01-10 21:40:07 +00:00
|
|
|
|
echo "Теперь перезапустите youtube-downloader:"
|
|
|
|
|
|
echo " docker compose -f youtube-downloader/docker-compose.yml restart"
|
2025-12-25 21:38:13 +03:00
|
|
|
|
echo ""
|
2026-01-10 21:40:07 +00:00
|
|
|
|
echo "Или перезапустите все сервисы:"
|
|
|
|
|
|
echo " ./stop_all.sh && ./start_all.sh"
|
2025-12-20 04:58:52 +03:00
|
|
|
|
else
|
2026-01-10 21:40:07 +00:00
|
|
|
|
echo ""
|
|
|
|
|
|
echo "❌ Ошибка: файл cookies создан, но не содержит данных"
|
|
|
|
|
|
rm -f "$COOKIES_FILE"
|
2025-12-25 21:38:13 +03:00
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
2026-01-10 21:40:07 +00:00
|
|
|
|
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"
|
2025-12-25 21:38:13 +03:00
|
|
|
|
else
|
2026-01-10 21:40:07 +00:00
|
|
|
|
FIREFOX_DIR="$HOME/.mozilla/firefox"
|
2025-12-20 04:58:52 +03:00
|
|
|
|
fi
|
2026-01-10 21:40:07 +00:00
|
|
|
|
if [ -d "$FIREFOX_DIR" ]; then
|
|
|
|
|
|
echo " ✓ Директория Firefox найдена: $FIREFOX_DIR"
|
2025-12-20 04:58:52 +03:00
|
|
|
|
else
|
2026-01-10 21:40:07 +00:00
|
|
|
|
echo " ✗ Директория Firefox не найдена: $FIREFOX_DIR"
|
|
|
|
|
|
echo " Попробуйте запустить скрипт БЕЗ sudo: ./get_youtube_cookies.sh"
|
2025-12-20 04:58:52 +03:00
|
|
|
|
fi
|
2026-01-10 21:40:07 +00:00
|
|
|
|
exit 1
|
2025-12-16 10:15:50 +03:00
|
|
|
|
fi
|
|
|
|
|
|
|