From 1c99e109b8d1c54e027dbde416d56b07a2e24297 Mon Sep 17 00:00:00 2001 From: vrubel Date: Sat, 20 Dec 2025 04:58:52 +0300 Subject: [PATCH] optimization scripts update coockies --- instagram-downloader/get_instagram_cookies.sh | 91 ++++++++++++++----- youtube-downloader/get_youtube_cookies.sh | 85 ++++++++--------- 2 files changed, 105 insertions(+), 71 deletions(-) diff --git a/instagram-downloader/get_instagram_cookies.sh b/instagram-downloader/get_instagram_cookies.sh index 8c76af1..943e033 100755 --- a/instagram-downloader/get_instagram_cookies.sh +++ b/instagram-downloader/get_instagram_cookies.sh @@ -1,39 +1,82 @@ #!/bin/bash -# Скрипт для получения cookies Instagram через yt-dlp +# Скрипт для получения cookies Instagram через yt-dlp из Firefox SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" COOKIES_FILE="$SCRIPT_DIR/instagram_cookies.txt" +BROWSER="firefox" -echo "Получение cookies Instagram из браузера..." -echo "" -echo "Выберите браузер:" -echo "1) Chrome" -echo "2) Firefox" -echo "3) Edge" -echo "4) Opera" -read -p "Введите номер (1-4): " browser +# Если запущено с sudo, используем HOME реального пользователя +if [ -n "$SUDO_USER" ]; then + REAL_HOME=$(getent passwd "$SUDO_USER" | cut -d: -f6) + export HOME="$REAL_HOME" + echo "⚠️ Обнаружен sudo, использую домашнюю директорию пользователя: $HOME" +fi -case "$browser" in - 1) BROWSER="chrome" ;; - 2) BROWSER="firefox" ;; - 3) BROWSER="edge" ;; - 4) BROWSER="opera" ;; - *) - echo "Неверный выбор" - exit 1 - ;; -esac - -echo "Получаю cookies из $BROWSER..." +echo "Получение cookies Instagram из Firefox..." echo "Файл cookies будет сохранен в: $COOKIES_FILE" +echo "Получаю cookies..." -yt-dlp --cookies-from-browser "$BROWSER" --cookies "$COOKIES_FILE" --no-download https://www.instagram.com 2>&1 | head -10 +# Используем таймаут для предотвращения зависания +timeout 15 yt-dlp \ + --cookies-from-browser "$BROWSER" \ + --cookies "$COOKIES_FILE" \ + --no-download \ + --quiet \ + "https://www.instagram.com" 2>&1 | head -20 + +EXIT_CODE=$? + +if [ $EXIT_CODE -eq 124 ]; then + echo "" + echo "⚠️ Процесс получения cookies превысил таймаут (15 сек)" + echo " Проверяю, был ли создан файл cookies..." +elif [ $EXIT_CODE -ne 0 ] && [ $EXIT_CODE -ne 124 ]; then + echo "" + echo "⚠️ Процесс завершился с кодом $EXIT_CODE" + echo " Проверяю, был ли создан файл cookies..." +fi if [ -f "$COOKIES_FILE" ]; then - echo "" - echo "✅ Cookies успешно сохранены в $COOKIES_FILE" + # Проверяем, что файл содержит данные (не только заголовки) + 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 "Теперь перезапустите instagram-downloader:" + echo " docker compose -f instagram-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_instagram_cookies.sh" + fi exit 1 fi diff --git a/youtube-downloader/get_youtube_cookies.sh b/youtube-downloader/get_youtube_cookies.sh index 6fc9e9e..8859b0f 100755 --- a/youtube-downloader/get_youtube_cookies.sh +++ b/youtube-downloader/get_youtube_cookies.sh @@ -1,30 +1,18 @@ #!/bin/bash -# Скрипт для получения cookies YouTube через yt-dlp +# Скрипт для получения cookies YouTube через yt-dlp из Firefox SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" COOKIES_FILE="$SCRIPT_DIR/youtube_cookies.txt" +BROWSER="firefox" -echo "Получение cookies YouTube из браузера..." -echo "" -echo "Выберите браузер:" -echo "1) Chrome" -echo "2) Firefox" -echo "3) Edge" -echo "4) Opera" -read -p "Введите номер (1-4): " browser +# Если запущено с sudo, используем HOME реального пользователя +if [ -n "$SUDO_USER" ]; then + REAL_HOME=$(getent passwd "$SUDO_USER" | cut -d: -f6) + export HOME="$REAL_HOME" + echo "⚠️ Обнаружен sudo, использую домашнюю директорию пользователя: $HOME" +fi -case "$browser" in - 1) BROWSER="chrome" ;; - 2) BROWSER="firefox" ;; - 3) BROWSER="edge" ;; - 4) BROWSER="opera" ;; - *) - echo "Неверный выбор" - exit 1 - ;; -esac - -echo "Получаю cookies из $BROWSER..." +echo "Получение cookies YouTube из Firefox..." echo "Файл cookies будет сохранен в: $COOKIES_FILE" # Проверяем наличие yt-dlp @@ -48,38 +36,28 @@ if ! command -v yt-dlp &> /dev/null; then exit 1 fi -echo "" -echo "ВАЖНО: Убедитесь, что вы залогинены в YouTube в выбранном браузере!" -echo "Нажмите Enter для продолжения..." -read - -echo "" -echo "Получаю cookies из браузера $BROWSER..." -echo "Это должно занять несколько секунд..." +echo "Получаю cookies..." # Используем простой способ: извлекаем cookies из браузера и сохраняем в файл -# Используем главную страницу YouTube (самый простой запрос) -# Таймаут 15 секунд - этого должно хватить для извлечения cookies +# Используем конкретное короткое видео (не плейлист, не главную страницу) +# Таймаут 10 секунд # --no-download - не скачивать видео -# --quiet - минимум вывода -timeout 15 yt-dlp \ +# --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" 2>&1 | head -20 + "https://www.youtube.com/watch?v=jNQXAC9IVRw" > /dev/null 2>&1 || true 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 +# Не важно, какой код возврата - главное проверить, создался ли файл cookies +# yt-dlp может вернуть ошибку, но cookies все равно сохранить if [ -f "$COOKIES_FILE" ]; then # Проверяем, что файл содержит данные (не только заголовки) @@ -98,7 +76,6 @@ if [ -f "$COOKIES_FILE" ]; then else echo "" echo "❌ Ошибка: файл cookies создан, но не содержит данных" - echo " Убедитесь, что вы залогинены в YouTube в браузере $BROWSER" rm -f "$COOKIES_FILE" exit 1 fi @@ -107,9 +84,23 @@ else echo "❌ Ошибка: файл cookies не был создан" echo "" echo "Возможные причины:" - echo "1. Вы не залогинены в YouTube в браузере $BROWSER" - echo "2. Браузер $BROWSER не найден или недоступен" - echo "3. Проблемы с правами доступа к файлу cookies браузера" + 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