videoDownloadTGbot/youtube-downloader/get_youtube_cookies.sh

115 lines
4.1 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
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