# VLC Sender Веб-приложение для отправки медиафайлов на VLC через WiFi Upload API. ## Архитектура - **Backend**: Express (TypeScript) — API для навигации по файлам и отправки на VLC - **Frontend**: Single-file HTML/CSS/JS в `src/public/index.html` - **Docker**: multi-stage build на node:22-alpine ## API | Endpoint | Метод | Описание | |----------|-------|----------| | `/api/files?path=` | GET | Список файлов/папок (name, size, isDir). Корень — список томов | | `/api/send` | POST | Отправка файлов на VLC, возвращает SSE с прогрессом | ### POST /api/send ```json { "ip": "243", "files": ["Torrents/movie.mkv"] } ``` Путь файла: `{volume_label}/{subpath}`. Ответ — SSE stream с событиями: `start`, `done`, `error`, `complete`. ## VLC API VLC принимает файлы через `POST http://192.168.1.{ip}:8888/upload.json` (multipart/form-data, поле `file`). Порт 8888 — стандартный для VLC iOS WiFi Upload. ## Переменные окружения | Переменная | Значение по умолчанию | Описание | |---|---|---| | `PORT` | `3000` | Порт сервера | | `MEDIA_PATHS` | `/media` | Тома для отображения (см. ниже) | ### MEDIA_PATHS Поддерживает несколько томов через запятую. Два формата: ```bash # С лейблами MEDIA_PATHS=Torrents:/data/torrents,Media:/data/media # Без лейблов (имя директории = лейбл) MEDIA_PATHS=/data/torrents,/data/media ``` Обратная совместимость: `MEDIA_PATH` (без S) тоже поддерживается для одного тома. ## Docker ```bash docker build -t vlc-sender . ``` `compose.yaml` использует `network_mode: host` для доступа к устройствам в локальной сети. Тома настраиваются в `.env` (см. `.env.example`). ## Структура ``` src/ ├── index.ts # Express сервер + API └── public/ └── index.html # Фронтенд (single file) ```