# Instagram Downloader Service

Микросервис для скачивания видео с Instagram.

## Требования

- Docker и Docker Compose
- Файл с cookies Instagram (`instagram_cookies.txt` в папке `instagram-downloader/`)

## Быстрый старт

### 1. Настройка cookies

Перед запуском сервиса необходимо получить cookies Instagram. Есть несколько способов:

#### Способ 1: Через скрипт (рекомендуется)

```bash
cd instagram-downloader
./get_instagram_cookies.sh
```

Скрипт попросит выбрать браузер и автоматически извлечет cookies.

#### Способ 2: Обновление существующих cookies

```bash
cd instagram-downloader
./update_instagram_cookies.sh
```

#### Способ 3: Вручную

См. подробные инструкции в `INSTAGRAM_COOKIES_INSTRUCTIONS.md`

### 2. Запуск сервиса

#### Вариант 1: Через корневой docker-compose (рекомендуется)

```bash
cd ..  # вернуться в корень проекта
docker compose up -d instagram-downloader
```

#### Вариант 2: Отдельно

```bash
docker compose up -d
```

### 3. Проверка работы

```bash
# Проверка здоровья сервиса
curl http://localhost:5556/health

# Должен вернуть: {"status":"ok","service":"instagram-downloader"}
```

## API Endpoints

### GET /health

Проверка здоровья сервиса.

**Ответ:**
```json
{
  "status": "ok",
  "service": "instagram-downloader"
}
```

### POST /download/stream

Скачивание видео с Instagram.

**Запрос:**
```json
{
  "url": "https://www.instagram.com/p/..."
}
```

**Ответ:**
- Успех: бинарные данные видео (Content-Type: video/mp4)
- Ошибка: JSON с описанием ошибки

## Порты

- Внешний порт: **5556**
- Внутренний порт контейнера: **5000**

## Обновление cookies

Cookies Instagram имеют ограниченный срок действия. Рекомендуется обновлять их раз в несколько недель.

Для обновления:

```bash
cd instagram-downloader
./update_instagram_cookies.sh
```

После обновления перезапустите сервис:

```bash
docker compose restart instagram-downloader
```

## Troubleshooting

### Сервис не может скачать видео

1. Проверьте наличие файла `instagram_cookies.txt` в папке `instagram-downloader/`
2. Проверьте срок действия cookies (они могут истечь)
3. Обновите cookies через скрипт `update_instagram_cookies.sh`
4. Проверьте логи: `docker compose logs instagram-downloader`

### Cookies истекли

Если видите ошибку "Instagram cookies истекли", выполните:

```bash
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                       # Этот файл
```

