feat: webowa wersja Video & Sound Downloader Pro (NestJS + React)
Some checks failed
deploy / deploy (push) Failing after 1m44s
Some checks failed
deploy / deploy (push) Failing after 1m44s
Odwzorowanie desktopowego v6.5.6: tryby MP3/MP4/PLAYLISTA/FACEBOOK, jakość/format, napisy, log na żywo (SSE), STOP. Docker + Gitea CI/CD, deploy na videodownloader.naurecki.pl. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
67
README.md
Normal file
67
README.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# Video & Sound Downloader Pro — wersja web (SPA)
|
||||
|
||||
Webowy odpowiednik desktopowego narzędzia **Video & Sound Downloader Pro v6.5.6**.
|
||||
Łączy `yt-dlp` + `FFmpeg` w jednym panelu: pobieranie audio (MP3), wideo (MP4),
|
||||
całych playlist oraz materiałów z Facebooka — bez wpisywania komend i bez ręcznej
|
||||
konwersji. Backend: **NestJS**, frontend: **React (Vite)**. Obraz portowany jest do
|
||||
Dockera i wdrażany na `https://videodownloader.naurecki.pl`.
|
||||
|
||||
> Aplikacja działa na bazie [yt-dlp](https://github.com/yt-dlp/yt-dlp) i obsługuje
|
||||
> wszystkie platformy, które obsługuje yt-dlp (YouTube, YouTube Music, YouTube Shorts,
|
||||
> Facebook, LinkedIn, ARTE TV i wiele innych).
|
||||
|
||||
---
|
||||
|
||||
## Architektura
|
||||
|
||||
```
|
||||
videodownloader/
|
||||
├── apps/
|
||||
│ ├── api/ # NestJS — joby pobierania, yt-dlp+ffmpeg, postęp SSE
|
||||
│ │ ├── src/
|
||||
│ │ └── Dockerfile # node + python3 + yt-dlp + ffmpeg
|
||||
│ └── web/ # React + Vite (TS) — UI odwzorowany ze zrzutu
|
||||
│ ├── src/
|
||||
│ ├── nginx.conf # serwuje statyki + proxy /api (+ SSE bez buforowania)
|
||||
│ └── Dockerfile
|
||||
├── docker-compose.prod.yml # web → 127.0.0.1:8085, api wewnętrznie
|
||||
└── .gitea/workflows/deploy.yml
|
||||
```
|
||||
|
||||
Ruch publiczny: `Apache (vhost videodownloader.naurecki.pl, SSL)` → `127.0.0.1:8085`
|
||||
(kontener **web**, nginx) → statyki React + proxy `/api` → kontener **api** (NestJS).
|
||||
|
||||
## Funkcje (odwzorowane ze zrzutu desktopowego)
|
||||
|
||||
- **Pole Link** z przyciskiem „wklej ze schowka”.
|
||||
- **4 tryby**: `MP3` (pobierz dźwięk), `MP4` (pobierz wideo), `PLAYLISTA`
|
||||
(pobierz całą listę → ZIP), `FACEBOOK` (pobierz wideo).
|
||||
- **Jakość / Format** — lista zależna od trybu (MP3 320/256/192/128 kbps;
|
||||
MP4 2160/1440/1080/720/480p).
|
||||
- **Napisy** — opcja pobrania dostępnych napisów (`--write-subs --embed-subs`);
|
||||
zgodnie z oryginałem **nie** dotyczy automatycznie generowanych napisów YouTube.
|
||||
- Duży przycisk **POBIERZ** + **STOP** (przerwanie joba).
|
||||
- **Log na żywo** (SSE) — komunikaty postępu, konwersji i scalania audio/wideo.
|
||||
- Banner **trybu testowego** (kosmetyczny, sterowany zmienną `TRIAL_*`).
|
||||
- Przyciski **Wsparcie** / **O mnie**.
|
||||
|
||||
> Różnica względem wersji desktop: pole „Zapisz do” (ścieżka dyskowa Windows) w
|
||||
> wersji web zostaje zastąpione pobraniem gotowego pliku przez przeglądarkę. Serwer
|
||||
> przetwarza materiał w katalogu tymczasowym i po wysłaniu pliku sprząta po sobie
|
||||
> (zgodnie z „bez zbędnych pozostałości i bez ręcznego sprzątania folderu”).
|
||||
|
||||
## Rozwój lokalny
|
||||
|
||||
```bash
|
||||
# API
|
||||
cd apps/api && npm install && npm run start:dev # http://localhost:3000/api
|
||||
# WEB
|
||||
cd apps/web && npm install && npm run dev # http://localhost:5173
|
||||
```
|
||||
Wymaga lokalnie `yt-dlp` i `ffmpeg` w PATH (w produkcji są w obrazie).
|
||||
|
||||
## Wdrożenie
|
||||
|
||||
Push do `main` → runner Gitea (`.gitea/workflows/deploy.yml`) buduje obrazy z
|
||||
`docker-compose.prod.yml` i robi `up -d` na demonie Dockera serwera. Konfiguracja
|
||||
reverse proxy + SSL — patrz [DEPLOY.md](DEPLOY.md).
|
||||
Reference in New Issue
Block a user