diff --git a/src/services/normalizers.js b/src/services/normalizers.js index 0d6ad18..c8b00aa 100644 --- a/src/services/normalizers.js +++ b/src/services/normalizers.js @@ -8,7 +8,8 @@ const getImage = (item) => resolveMedia(item.coverLandscape || item.coverUrl || export function normalizeDrama(item, lang = 'id') { const id = String(item.id ?? item.dramaId ?? item.code ?? ''); const episodes = item.episodes || item.episodeList || (item.preview ? [item.preview] : []); - return { id, title: getText(item.titleLocales || item.locales || item.title, lang) || item.name || 'YMB Drama', channel: getText(item.channelLocales || item.channel, lang) || item.creatorName || 'YMB Originals', genre: getText(item.categoryLocales || item.genre, lang) || getText(item.types?.[0], lang), image: getImage(item), duration: item.duration || item.preview?.duration || '', views: item.views || item.viewCount || '', episodes: episodes.map((episode) => ({ ...episode, playUrl: resolveMedia(episode.playUrl) })), preview: item.preview ? { ...item.preview, playUrl: resolveMedia(item.preview.playUrl) } : null }; + const preview = item.preview || episodes[0] || null; + return { id, title: getText(item.titleLocales || item.locales || item.title, lang) || item.name || 'YMB Drama', channel: getText(item.channelLocales || item.channel, lang) || item.creatorName || 'YMB Originals', genre: getText(item.categoryLocales || item.genre, lang) || getText(item.types?.[0], lang), image: getImage(item), duration: item.duration || preview?.duration || '', views: item.views || item.viewCount || '', episodes: episodes.map((episode) => ({ ...episode, playUrl: resolveMedia(episode.playUrl) })), preview: preview ? { ...preview, playUrl: resolveMedia(preview.playUrl) } : null }; } export function normalizePage(payload) {