Add Jellyfin importer and UI improvements

Introduce a full Jellyfin importer and related UI enhancements.

- Add new lib/jellyfinImporter.ts: implements Jellyfin API clients, conversion helpers, and import/cleanup flows (movies, series, music, cast) with progress/log callbacks.
- Wire Jellyfin integration into ImporterView: add config/options state, import and cleanup handlers, and two new UI cards for importing and cleaning up Jellyfin media; adjust progress display to support different media types and cast naming.
- Update API types (src/api.ts) to include ApiEpisode and episodes on ApiMediaItem and propagate episodes through convertApiToMedia.
- Improve DetailView: add cast show/hide controls, display counts, use characterName when available, and format episode season/episode, air date and duration.
- Enhance Header: theme/scroll-aware styling, scroll listener, themed search/input/avatar styling, and improved nav color handling.
- Simplify MediaDetailRoute in App.tsx: always fetch media by id and remove allMedia dependency to avoid stale resolution.
- Update src/types.ts to support source/category mapping required by the Jellyfin importer.

These changes add Jellyfin as an import source and polish the app UI and detail handling for better UX and more complete media metadata.
This commit is contained in:
Lars Behrends
2026-04-11 01:24:50 +02:00
parent 52d272c701
commit 555209ed4b
7 changed files with 1438 additions and 61 deletions

View File

@@ -28,12 +28,14 @@ export interface Media {
}
export interface Episode {
id: string;
number: number;
id: number;
media_id: number;
season: number;
episode_number: number;
title: string;
date: string;
duration: string;
description: string;
air_date: string;
duration: number;
thumbnail: string;
}