mirror of
https://github.com/MrSleeps/jellyfin-scene-search.git
synced 2026-11-14 22:11:27 +00:00
Document multi-library Jellyfin ingestion
This commit is contained in:
@@ -167,12 +167,20 @@ On the first run after enabling routing, existing captions are classified. A cap
|
||||
|
||||
Jellyfin can now be the source of truth for media identity, metadata and frame sampling.
|
||||
|
||||
Configure a server API key and a small test library:
|
||||
Configure a server API key and the libraries you want Scene Search to manage:
|
||||
|
||||
```env
|
||||
JELLYFIN_URL=http://jellyfin-server:8096
|
||||
JELLYFIN_API_KEY=replace-me
|
||||
JELLYFIN_LIBRARY=Scene Search Test
|
||||
|
||||
# Preferred for normal use:
|
||||
JELLYFIN_LIBRARIES=Movies,TV,Home Videos
|
||||
|
||||
# Optional exclusions, also honoured by --all-libraries:
|
||||
JELLYFIN_EXCLUDE_LIBRARIES=Music,Photos
|
||||
|
||||
# Legacy single-library setting, still supported when JELLYFIN_LIBRARIES is empty:
|
||||
JELLYFIN_LIBRARY=
|
||||
|
||||
JELLYFIN_TRICKPLAY_WIDTH=320
|
||||
JELLYFIN_FALLBACK_INTERVAL_SECONDS=10
|
||||
@@ -193,21 +201,53 @@ python -m scene_search.cli jellyfin-test
|
||||
python -m scene_search.cli jellyfin-libraries
|
||||
```
|
||||
|
||||
Inspect the test library before doing any GPU work:
|
||||
Inspect selected libraries before doing any GPU work:
|
||||
|
||||
```bash
|
||||
python -m scene_search.cli jellyfin-items --library "Scene Search Test" --limit 10
|
||||
python -m scene_search.cli jellyfin-items --library "Movies" --library "TV" --limit 10
|
||||
```
|
||||
|
||||
This prints each Jellyfin item ID, type, tags, path and available Trickplay information.
|
||||
|
||||
Index the library:
|
||||
Or inspect every visible Jellyfin library:
|
||||
|
||||
```bash
|
||||
python -m scene_search.cli jellyfin-index --library "Scene Search Test"
|
||||
python -m scene_search.cli jellyfin-items --all-libraries --limit 10
|
||||
```
|
||||
|
||||
The indexer prefers Jellyfin's existing Trickplay sheets. It downloads each sheet, splits the sheet into timestamped thumbnails using Jellyfin's Trickplay manifest, embeds those thumbnails with SigLIP and stores the Jellyfin item/media-source identity alongside the canonical vectors.
|
||||
This prints each Jellyfin item ID, type, tags, path and available Trickplay information. The item query itself is restricted to Movies, Episodes and generic Videos, so non-video libraries normally report zero selected items.
|
||||
|
||||
Index the libraries configured in `JELLYFIN_LIBRARIES`:
|
||||
|
||||
```bash
|
||||
python -m scene_search.cli jellyfin-index
|
||||
```
|
||||
|
||||
You can also select several libraries explicitly:
|
||||
|
||||
```bash
|
||||
python -m scene_search.cli jellyfin-index \
|
||||
--library "Movies" \
|
||||
--library "TV" \
|
||||
--library "Home Videos"
|
||||
```
|
||||
|
||||
Or index every library visible to the API key:
|
||||
|
||||
```bash
|
||||
python -m scene_search.cli jellyfin-index --all-libraries
|
||||
```
|
||||
|
||||
Exclude libraries either in `JELLYFIN_EXCLUDE_LIBRARIES` or per command:
|
||||
|
||||
```bash
|
||||
python -m scene_search.cli jellyfin-index \
|
||||
--all-libraries \
|
||||
--exclude-library "Music" \
|
||||
--exclude-library "Photos"
|
||||
```
|
||||
|
||||
`--limit` applies per selected library and is intended for inspection/test runs. Limited runs never prune missing items. On a complete library scan, the indexer reconciles that library against Jellyfin and removes canonical entries/thumbnails for items that no longer exist there.
|
||||
|
||||
The indexer processes selected libraries sequentially but keeps one SigLIP model instance loaded across the whole run. It prefers Jellyfin's existing Trickplay sheets, downloads each sheet, splits it into timestamped thumbnails using Jellyfin's Trickplay manifest, embeds those thumbnails with SigLIP and stores the Jellyfin item/media-source/library identity alongside the canonical vectors.
|
||||
|
||||
If an item has no Trickplay manifest, the indexer falls back to ffmpeg only when Jellyfin's reported media path is accessible from the indexing machine.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user