diff options
Diffstat (limited to 'utils/appendMetaToEpisodes.ts')
| -rw-r--r-- | utils/appendMetaToEpisodes.ts | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/utils/appendMetaToEpisodes.ts b/utils/appendMetaToEpisodes.ts new file mode 100644 index 0000000..5f74df3 --- /dev/null +++ b/utils/appendMetaToEpisodes.ts @@ -0,0 +1,51 @@ +type Image = { + number?: number; + episode?: number; + img: string; + title: string; + description: string; +}; + +type Episode = { + number: number; + img?: string; + title?: string; + description?: string; +}; + +type ProviderEpisodes = { + episodes: Episode[]; +}; + +async function appendMetaToEpisodes( + episodesData: ProviderEpisodes[], + images: Image[] +): Promise<ProviderEpisodes[]> { + // Create a dictionary for faster lookup of images based on episode number + const episodeImages: { [key: number]: Image } = {}; + images.forEach((image) => { + image.episode && (episodeImages[image.episode] = image); + image.number && (episodeImages[image.number] = image); + }); + + // Iterate through each provider's episodes data + for (const providerEpisodes of episodesData) { + // Iterate through each episode in the provider's episodes data + for (const episode of providerEpisodes.episodes) { + // Get the episode number + const episodeNumber = episode.number; + + // Check if there is an image available for this episode number + if (episodeImages[episodeNumber]) { + // Append the image URL to the episode data + episode.img = episodeImages[episodeNumber].img; + episode.title = episodeImages[episodeNumber].title; + episode.description = episodeImages[episodeNumber].description; + } + } + } + + return episodesData; +} + +export default appendMetaToEpisodes; |