115 lines
4.1 KiB
Bash
Executable file
115 lines
4.1 KiB
Bash
Executable file
#!/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
|
||
|