Reads the active media server and mirrors it into video.db, adapting the music scan pattern (ask the server, upsert, prune what's gone) — isolated from music. - core/video/scanner.py: server-agnostic VideoLibraryScanner. Consumes a media source (duck-typed) yielding normalized dicts; upserts movies + show trees, prunes removed items, reports progress/state. Skips pruning when a scan returns nothing (transient-failure safety). Background thread + scan_sync. - core/video/sources.py: Plex + Jellyfin adapters that REUSE the shared connected clients (MediaServerEngine) but own all video-section logic; produce normalized dicts. (Validated against a live server by design; scanner itself is fully unit-tested with a fake source.) - api/video/scan.py: POST /api/video/scan/request, GET /api/video/scan/status. - .gitignore: video_library.db + sidecars (mirrors music); tests inject a tmp DB so none is ever created in the repo. Tests: scan populate/prune/empty-safety/no-source-error, isolation guard (core/video imports nothing from music), scan routes registered. 101 green.
34 lines
715 B
Text
34 lines
715 B
Text
slskd/slskd.exe
|
|
Storage/sync_status.json
|
|
.spotify_cache
|
|
slskd/config/slskd.example.yml
|
|
__pycache__/
|
|
**/__pycache__/
|
|
*.pyc
|
|
*.pyo
|
|
|
|
# Encryption key (generated per-instance, lives next to database)
|
|
.encryption_key
|
|
|
|
# User-specific files (auto-created by the app if missing)
|
|
config/config.json
|
|
database/music_library.db
|
|
database/music_library.db-shm
|
|
database/music_library.db-wal
|
|
database/music_library.db.backup_*
|
|
database/video_library.db
|
|
database/video_library.db-shm
|
|
database/video_library.db-wal
|
|
database/video_library.db.backup_*
|
|
database/api_call_history.json
|
|
storage/image_cache/
|
|
logs/*.log
|
|
logs/*.log.*
|
|
|
|
# Auto-downloaded binaries
|
|
bin/
|
|
|
|
# Development compose/config files
|
|
*.dev.yml
|
|
# Any hidden folders
|
|
**/.*/
|