feat(jellyfin): sync MusicVideo libraries #55

Merged
timothy merged 1 commits from issue42-jellyfin-musicvideos into main 2026-06-30 22:54:20 +02:00
Owner

Summary

Implements Jellyfin MusicVideo library sync for issue #42.

  • Projects Jellyfin CollectionType=musicvideos libraries as LibraryMediaKind.MusicVideos instead of dropping them.
  • Adds Jellyfin MusicVideo item retrieval with includeItemTypes=MusicVideo and artist metadata support.
  • Routes MusicVideo Jellyfin libraries through a new IJellyfinMusicVideoLibraryScanner implementation.
  • Adds tests for library projection and sync-handler routing.

Root cause

Jellyfin MusicVideo libraries were silently dropped because JellyfinApiClient.Project() only recognized tvshows, movies, and boxsets. Even if a MusicVideo library existed locally, the scanner handler only routed Movies and Shows; unsupported kinds returned success without scanning.

Verification

  • RED confirmed: JellyfinApiClientTests.GetLibraries.Should_Project_MusicVideo_Libraries failed with 0 projected libraries before implementation.
  • RED confirmed: SynchronizeJellyfinLibraryByIdHandlerTests.Handle.Should_Scan_MusicVideo_Libraries failed because the MusicVideo scanner contract/route did not exist.
  • TZ=UTC dotnet test ErsatzTV.Infrastructure.Tests/ErsatzTV.Infrastructure.Tests.csproj -v minimal passed: 16 tests.
  • TZ=UTC dotnet test ErsatzTV.Scanner.Tests/ErsatzTV.Scanner.Tests.csproj -v minimal passed: 1467 tests.
  • TZ=UTC dotnet test ErsatzTV.Architecture.Tests/ErsatzTV.Architecture.Tests.csproj -v minimal passed: 5 tests.
  • git diff --check passed.

Note: attempted dotnet build ErsatzTV.sln -v minimal and dotnet build ErsatzTV/ErsatzTV.csproj -v minimal; both became silent/stuck in the local shell and the host build process was killed after process inspection. Project-level tests/builds above completed successfully.

Docs

No docs updated; this is an ingestion behavior fix with no new operator-facing configuration.

## Summary Implements Jellyfin MusicVideo library sync for issue #42. - Projects Jellyfin `CollectionType=musicvideos` libraries as `LibraryMediaKind.MusicVideos` instead of dropping them. - Adds Jellyfin MusicVideo item retrieval with `includeItemTypes=MusicVideo` and artist metadata support. - Routes MusicVideo Jellyfin libraries through a new `IJellyfinMusicVideoLibraryScanner` implementation. - Adds tests for library projection and sync-handler routing. ## Root cause Jellyfin MusicVideo libraries were silently dropped because `JellyfinApiClient.Project()` only recognized `tvshows`, `movies`, and `boxsets`. Even if a MusicVideo library existed locally, the scanner handler only routed Movies and Shows; unsupported kinds returned success without scanning. ## Verification - RED confirmed: `JellyfinApiClientTests.GetLibraries.Should_Project_MusicVideo_Libraries` failed with 0 projected libraries before implementation. - RED confirmed: `SynchronizeJellyfinLibraryByIdHandlerTests.Handle.Should_Scan_MusicVideo_Libraries` failed because the MusicVideo scanner contract/route did not exist. - `TZ=UTC dotnet test ErsatzTV.Infrastructure.Tests/ErsatzTV.Infrastructure.Tests.csproj -v minimal` passed: 16 tests. - `TZ=UTC dotnet test ErsatzTV.Scanner.Tests/ErsatzTV.Scanner.Tests.csproj -v minimal` passed: 1467 tests. - `TZ=UTC dotnet test ErsatzTV.Architecture.Tests/ErsatzTV.Architecture.Tests.csproj -v minimal` passed: 5 tests. - `git diff --check` passed. Note: attempted `dotnet build ErsatzTV.sln -v minimal` and `dotnet build ErsatzTV/ErsatzTV.csproj -v minimal`; both became silent/stuck in the local shell and the host build process was killed after process inspection. Project-level tests/builds above completed successfully. ## Docs No docs updated; this is an ingestion behavior fix with no new operator-facing configuration.
timothy added 1 commit 2026-06-30 19:33:37 +02:00
feat(jellyfin): sync music video libraries refs #42
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 3m53s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 5m4s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
5560790bcb
timothy merged commit 183f6c5d2a into main 2026-06-30 22:54:20 +02:00
Sign in to join this conversation.