main
coolify-deploy / deploy (push) Successful in 23s
VideoVault
Lokal kuratering, optimering och sök för ditt videobibliotek (endast laglig adult-innehåll, 18+). Länkar du klistrar in laddas hem reklamfritt, transkoderas till web-vänlig MP4, kategoriseras automatiskt (fokus: Teen 18+, Skinny, Petite, Bondage + sub-nischer), får thumbnails/previews och indexeras för världsklass-sök.
Stack
- Python — pipeline (nedladdning → transkod → kategorisering)
- yt-dlp + ffmpeg — hämtning & H.264/AAC-optimering (streamad, faststart)
- SQLite (FTS5) — lokalt index (sök funkar även offline)
- Meilisearch (Docker) — fuzzysök, typo-tålig, blixtsnabb (valfri, fallback FTS)
- FastAPI + Jinja2 — lokal webb-UI med kort-flöde, hover-previews och kategorier
Snabbstart
./vv.sh setup # venv + deps + db + meilisearch
./vv.sh start # web (port 8080) + worker (autostart via systemd)
# eller bara:
./vv.sh web # frontend i förgrund
./vv.sh worker # consumer i förgrund
Lägga till video
- UI: plustecknet uppe till höger → klistra in en URL → "Köa och ladda ner"
- watch-mappen: lägg en
.url- eller.txt-fil iwatch/med en länk per rad, kör sedan./vv.sh watch(worker tar automatisk bort filen när den är läst). - CLI:
./vv.sh add https://…
Flöde (per jobb)
new → (watch/UI) → queued → downloading → downloaded → transcoding
→ kategorisera & tagga → ready → indexera (FTS + Meilisearch)
fel → failed (visas i UI, kan analyseras i DB)
Vid nedladdning sparas källfilen (första kvaliteten), sedan görs:
- optimized — MP4 H.264 CRF22 + AAC 128K, max 1080p,
+faststart - poster (1280) / thumb (480) / preview (10s, 848px, mute)
- kategorier — Teen 18+/Skinny/Petite/Bondage + sub-nischer + aktivitet + längd + kanal + upplösning
- tags — alla träffande etiketter ur regelverket
Struktur
app/
downloader.py yt-dlp-hämtning
transcode.py ffmpeg-optimering + artifacts
categorize.py nisch-regler (redigera gärna)
pipeline.py orkestrerare
worker.py daemon-lopp
search.py Meilisearch-klient med fallback
db.py SQLite/FTS5-lager
web/ FastAPI + Jinja2 + CSS/JS
watch/ drop-in-länkar (*.url / *.txt)
data/ media/ optimized/ videos.db (+meili i docker)
Konfiguration (.env)
| Variabel | Default | Betydelse |
|---|---|---|
VV_QUALITY |
best |
yt-dlp-format |
OPTIMIZE |
1 |
kör ffmpeg-transkod |
MEILI_URL/KEY |
http://127.0.0.1:7700 / devkey |
sök |
MEILI_DISABLE |
0 |
av meilisearch (använd FTS) |
VIDEO_CRF |
22 |
kvalitet H.264 |
AUDIO_BITRATE |
128K |
ljudhastighet |
Drift
./vv.sh status— kolla tjänster + health- Web + worker är systemd-laddade (
vv-web,vv-worker) och startar om vid boot. - Meilisearch-data ligger i
data/meili(Docker-volym).
Languages
Python
65.9%
HTML
14.4%
CSS
11.9%
JavaScript
3.1%
Shell
2.3%
Other
2.4%