feat(downloads): persist offline metadata snapshots

This commit is contained in:
4gray committed 2026-08-01 16:29:50 +02:00
1 parent 2e243cc4af
commit 664d333f0f
6 files changed
+128 -3

No files matched your search

+1
View File
@@ -2,6 +2,7 @@ export * from './lib/channel-drm.interface';
export * from './lib/channel.interface';
export * from './lib/channel.model';
export * from './lib/dev-logger.util';
export * from './lib/download-metadata.interface';
export * from './lib/embedded-mpv-session.interface';
export * from './lib/electron-api.interface';
export * from './lib/epg-channel-metadata.model';
@@ -0,0 +1,37 @@
export interface DownloadMetadataPerson {
tmdbPersonId?: number;
name: string;
role?: string;
profileUrl?: string;
}
export interface DownloadEpisodeMetadata {
title?: string;
plot?: string;
stillUrl?: string;
seasonNumber: number;
episodeNumber: number;
}
export interface DownloadMetadataSnapshot {
version: 1;
language: string;
mediaKind: 'movie' | 'series';
title: string;
originalTitle?: string;
plot?: string;
releaseDate?: string;
year?: number;
durationMinutes?: number;
genres?: string[];
rating?: number;
status?: string;
posterUrl?: string;
backdropUrl?: string;
tmdbId?: number;
providerCategoryId?: string;
cast?: DownloadMetadataPerson[];
creators?: DownloadMetadataPerson[];
episode?: DownloadEpisodeMetadata;
enrichedAt?: string;
}
@@ -4,6 +4,7 @@ import {
EmbeddedMpvSession,
EmbeddedMpvSupport,
} from './embedded-mpv-session.interface';
import { DownloadMetadataSnapshot } from './download-metadata.interface';
import { EpgChannelMetadata } from './epg-channel-metadata.model';
import { EpgProgram } from './epg-program.model';
import { ExternalPlayerSession } from './external-player-session.interface';
@@ -516,6 +517,7 @@ export interface ElectronBridgeDownloadStartPayload {
title: string;
url: string;
posterUrl?: string;
metadataSnapshot?: DownloadMetadataSnapshot;
downloadFolder: string;
headers?: ElectronBridgeDownloadHeaders;
seriesXtreamId?: number;
@@ -549,6 +551,7 @@ export interface ElectronDownloadItem {
fileName?: string;
filePath?: string;
posterUrl?: string;
metadataSnapshot?: DownloadMetadataSnapshot;
status: ElectronBridgeDownloadStatus;
fileAvailability: ElectronDownloadFileAvailability;
bytesDownloaded?: number;
@@ -1083,6 +1086,10 @@ export interface ElectronBridgeApi {
downloadsRemove: (downloadId: number) => Promise<ElectronBridgeErrorResult>;
downloadsGetList: (playlistId?: string) => Promise<ElectronDownloadItem[]>;
downloadsGet: (downloadId: number) => Promise<ElectronDownloadItem | null>;
downloadsUpdateMetadata: (
downloadId: number,
metadataSnapshot: DownloadMetadataSnapshot
) => Promise<ElectronBridgeErrorResult>;
downloadsGetDefaultFolder: () => Promise<string>;
downloadsSelectFolder: () => Promise<string | null>;
downloadsRevealFile: (