feat(stats): add TMDB metadata for live-action dramas in the Library (#252)

This commit is contained in:
2026-09-21 00:10:00 -07:00
committed by GitHub
parent 4dd30f44d1
commit 1508863dbb
76 changed files with 3595 additions and 238 deletions
+17
View File
@@ -427,6 +427,9 @@ import {
} from './core/services/anilist/anilist-updater';
import { createCoverArtFetcher } from './core/services/anilist/cover-art-fetcher';
import { createAnilistRateLimiter } from './core/services/anilist/rate-limiter';
import { createLiveActionMetadataResolver } from './core/services/tmdb/live-action-resolver';
import { createTmdbClient, createTmdbApiKeyResolver } from './core/services/tmdb/tmdb-client';
import { readBundledTmdbApiKey } from './core/services/tmdb/bundled-api-key';
import { createJellyfinTokenStore } from './core/services/jellyfin-token-store';
import { applyRuntimeOptionResultRuntime } from './core/services/runtime-options-ipc';
import { createAnilistTokenStore } from './core/services/anilist/anilist-token-store';
@@ -961,6 +964,8 @@ const reportFatalError = createFatalErrorReporter({
let forceQuitTimer: ReturnType<typeof setTimeout> | null = null;
const statsDistPath = path.join(__dirname, '..', 'stats', 'dist');
// Release builds stage a project TMDB key next to the compiled main process.
const bundledTmdbApiKey = readBundledTmdbApiKey(__dirname);
const statsPreloadPath = path.join(__dirname, 'preload-stats.js');
const statsServerRuntime = createStatsServerRuntime({
userDataPath: USER_DATA_PATH,
@@ -987,6 +992,7 @@ const statsServerRuntime = createStatsServerRuntime({
},
getYomitanAnkiDeckName: () => getCurrentYomitanAnkiDeckNameForRuntime(),
getAnilistRateLimiter: () => anilistRateLimiter,
getBundledTmdbApiKey: () => bundledTmdbApiKey,
resolveAnkiNoteId: (noteId) => appState.ankiIntegration?.resolveCurrentNoteId(noteId) ?? noteId,
trackDuplicateNoteIdsForNote: (noteId, duplicateNoteIds) => {
appState.ankiIntegration?.trackDuplicateNoteIdsForNote(noteId, duplicateNoteIds);
@@ -1685,6 +1691,17 @@ const anilistRateLimiter = createAnilistRateLimiter();
const statsCoverArtFetcher = createCoverArtFetcher(
anilistRateLimiter,
createLogger('main:stats-cover-art'),
{
liveAction: createLiveActionMetadataResolver(
createTmdbClient({
resolveApiKey: createTmdbApiKeyResolver(
() => configService.getConfig().tmdb,
() => bundledTmdbApiKey,
),
}),
createLogger('main:tmdb'),
),
},
);
const anilistStateRuntime = createAnilistStateRuntime(buildAnilistStateRuntimeMainDepsHandler());
const configDerivedRuntime = createConfigDerivedRuntime(buildConfigDerivedRuntimeMainDepsHandler());