|
All checks were successful
CI/CD Pipeline / build-and-deploy (push) Successful in 1m45s
Cookies baked into the image (COPY . .) required a full CI/CD rebuild to refresh, incompatible with the cron job on the fedora machine that re-extracts cookies from a logged-in browser every 20 minutes and scp's them to prod. Volume-mount the cookies file instead — yt-dlp reads it from disk per request, so a fresh scp takes effect immediately with no container restart. The image-baked copy still exists as a build-time fallback. Also refresh the committed cookies snapshot (the cron's source yt-dlp turned out to be missing on the fedora box, so prior commits had been carrying years-stale cookies without anyone noticing). |
||
|---|---|---|
| .. | ||
| app.py | ||
| docker-compose.yml | ||
| Dockerfile | ||
| get_instagram_cookies.sh | ||
| instagram_cookies.txt | ||
| INSTAGRAM_COOKIES_INSTRUCTIONS.md | ||
| README.md | ||
| requirements.txt | ||
| update_instagram_cookies.sh | ||
Instagram Downloader Service
Микросервис для скачивания видео с Instagram.
Требования
- Docker и Docker Compose
- Файл с cookies Instagram (
instagram_cookies.txtв папкеinstagram-downloader/)
Быстрый старт
1. Настройка cookies
Перед запуском сервиса необходимо получить cookies Instagram. Есть несколько способов:
Способ 1: Через скрипт (рекомендуется)
cd instagram-downloader
./get_instagram_cookies.sh
Скрипт попросит выбрать браузер и автоматически извлечет cookies.
Способ 2: Обновление существующих cookies
cd instagram-downloader
./update_instagram_cookies.sh
Способ 3: Вручную
См. подробные инструкции в INSTAGRAM_COOKIES_INSTRUCTIONS.md
2. Запуск сервиса
Вариант 1: Через корневой docker-compose (рекомендуется)
cd .. # вернуться в корень проекта
docker compose up -d instagram-downloader
Вариант 2: Отдельно
docker compose up -d
3. Проверка работы
# Проверка здоровья сервиса
curl http://localhost:5556/health
# Должен вернуть: {"status":"ok","service":"instagram-downloader"}
API Endpoints
GET /health
Проверка здоровья сервиса.
Ответ:
{
"status": "ok",
"service": "instagram-downloader"
}
POST /download/stream
Скачивание видео с Instagram.
Запрос:
{
"url": "https://www.instagram.com/p/..."
}
Ответ:
- Успех: бинарные данные видео (Content-Type: video/mp4)
- Ошибка: JSON с описанием ошибки
Порты
- Внешний порт: 5556
- Внутренний порт контейнера: 5000
Обновление cookies
Cookies Instagram имеют ограниченный срок действия. Рекомендуется обновлять их раз в несколько недель.
Для обновления:
cd instagram-downloader
./update_instagram_cookies.sh
После обновления перезапустите сервис:
docker compose restart instagram-downloader
Troubleshooting
Сервис не может скачать видео
- Проверьте наличие файла
instagram_cookies.txtв папкеinstagram-downloader/ - Проверьте срок действия cookies (они могут истечь)
- Обновите cookies через скрипт
update_instagram_cookies.sh - Проверьте логи:
docker compose logs instagram-downloader
Cookies истекли
Если видите ошибку "Instagram cookies истекли", выполните:
cd instagram-downloader
./update_instagram_cookies.sh
Затем перезапустите сервис.
Структура файлов
instagram-downloader/
├── app.py # Основной код сервиса
├── Dockerfile # Образ Docker
├── docker-compose.yml # Конфигурация для отдельного запуска
├── requirements.txt # Python зависимости
├── get_instagram_cookies.sh # Скрипт для получения cookies
├── update_instagram_cookies.sh # Скрипт для обновления cookies
├── INSTAGRAM_COOKIES_INSTRUCTIONS.md # Подробные инструкции по cookies
└── README.md # Этот файл