2.2 KiB
2.2 KiB
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
{ "ip": "243", "files": ["Torrents/movie.mkv"] }
Путь файла: {volume_label}/{subpath}. Ответ — SSE stream с событиями: start, done, error, complete.
VLC API
VLC принимает файлы через POST http://192.168.1.{ip}:80/upload.json (multipart/form-data, поле file).
Переменные окружения
| Переменная | Значение по умолчанию | Описание |
|---|---|---|
PORT |
3000 |
Порт сервера |
MEDIA_PATHS |
/media |
Тома для отображения (см. ниже) |
MEDIA_PATHS
Поддерживает несколько томов через запятую. Два формата:
# С лейблами
MEDIA_PATHS=Torrents:/data/torrents,Media:/data/media
# Без лейблов (имя директории = лейбл)
MEDIA_PATHS=/data/torrents,/data/media
Обратная совместимость: MEDIA_PATH (без S) тоже поддерживается для одного тома.
Docker
docker build -t vlc-sender .
compose.yaml использует network_mode: host для доступа к устройствам в локальной сети. Тома настраиваются в .env (см. .env.example).
Структура
src/
├── index.ts # Express сервер + API
└── public/
└── index.html # Фронтенд (single file)