diff --git a/packages/core/src/metadata/tvdb.ts b/packages/core/src/metadata/tvdb.ts index 7a14b9bf..9506fd81 100644 --- a/packages/core/src/metadata/tvdb.ts +++ b/packages/core/src/metadata/tvdb.ts @@ -1,8 +1,8 @@ import { createLogger } from '../utils/logger.js'; -import { Cache, DistributedLock, Env, ParsedId } from '../utils/index.js'; +import { Cache, Env, formatZodError, ParsedId } from '../utils/index.js'; import { Metadata } from './utils.js'; import { makeRequest } from '../utils/http.js'; -import { z } from 'zod'; +import { z, ZodError } from 'zod'; const logger = createLogger('tvdb'); @@ -121,10 +121,13 @@ const TVDBSeriesSchema = z.object({ const TVDBEpisodeSchema = z.looseObject({}); +const TVDBSeasonSchema = z.looseObject({}); + const TVDBRemoteIdDataSchema = z.union([ z.object({ movie: TVDBMovieSchema }), z.object({ series: TVDBSeriesSchema }), z.object({ episode: TVDBEpisodeSchema }), + z.object({ season: TVDBSeasonSchema }), ]); export const RemoteIdSearchResponseSchema = z.discriminatedUnion('status', [ @@ -405,12 +408,11 @@ class TVDBApi { return schema.parse(data); } catch (error) { - logger.error( - `Request to ${path} failed: ${error instanceof Error ? error.message : 'Unknown error'}` + throw new Error( + error instanceof ZodError + ? `Failed to parse response from TVDB: ${formatZodError(error)}` + : `Request to TVDB API failed: ${error instanceof Error ? error.message : 'Unknown error'}` ); - throw error instanceof Error - ? error - : new Error('Unknown error occurred'); } } }