Skip to content

Commit 2b482cf

Browse files
committed
feat(episode-helper): Added formats
1 parent 05ed338 commit 2b482cf

File tree

1 file changed

+38
-3
lines changed

1 file changed

+38
-3
lines changed

libs/scraper/helpers/episode/src/episode-helper.service.ts

+38-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import { Injectable, Logger } from '@nestjs/common'
22
import { InjectModel } from '@nestjs/mongoose'
3-
import { EpisodeModel, Episode } from '@pct-org/mongo-models'
3+
import { EpisodeModel, Episode, Show } from '@pct-org/mongo-models'
44
import { defaultEpisodeImages } from '@pct-org/constants/default-image-sizes'
55
import { TYPE_EPISODE } from '@pct-org/constants/item-types'
6+
import { TraktEpisode } from '@pct-org/services/trakt'
7+
import { formatTorrents } from '@pct-org/torrent/utils'
8+
import { ScrapedTorrent } from '@pct-org/scraper/providers/base'
69

710
@Injectable()
811
export class EpisodeHelperService {
@@ -12,7 +15,7 @@ export class EpisodeHelperService {
1215

1316
protected readonly logger = new Logger('EpisodeHelper')
1417

15-
public getEmptyEpisode(): Episode {
18+
private getEmptyEpisode(): Episode {
1619
return {
1720
_id: null,
1821
firstAired: 0,
@@ -42,8 +45,40 @@ export class EpisodeHelperService {
4245
}
4346
}
4447

48+
public formatTraktEpisode(show: Show, episode: TraktEpisode, torrents: ScrapedTorrent[]): Episode {
49+
return {
50+
...this.getEmptyEpisode(),
51+
52+
_id: `${show._id}-${episode.season}-${episode.number}`,
53+
showImdbId: show._id,
54+
tmdbId: episode.ids.tmdb,
55+
number: episode.number,
56+
season: episode.season,
57+
title: episode.title,
58+
synopsis: episode.overview,
59+
firstAired: Number(new Date(episode.first_aired)) ?? 0,
60+
torrents: formatTorrents(torrents)
61+
}
62+
}
63+
64+
public formatUnknownEpisode(show: Show, seasonNr: number, episodeNr: number, torrents: ScrapedTorrent[]): Episode {
65+
return {
66+
...this.getEmptyEpisode(),
67+
68+
_id: `${show._id}-${seasonNr}-${episodeNr}`,
69+
showImdbId: show._id,
70+
number: episodeNr,
71+
season: seasonNr,
72+
title: `Episode ${episodeNr}`,
73+
// Use the createdAt date, otherwise it wont show in the app, will be overwritten when
74+
// metadata becomes available
75+
firstAired: Number(new Date()),
76+
torrents: formatTorrents(torrents)
77+
}
78+
}
79+
4580
public async addEpisodesToDatabase(episodes: Episode[]): Promise<void> {
46-
await Promise.all(episodes.map(this.addEpisodeToDatabase))
81+
await Promise.all(episodes.map((episode) => this.addEpisodeToDatabase(episode)))
4782
}
4883

4984
public async updateEpisodesInDatabase(episodes: Episode[]): Promise<void> {

0 commit comments

Comments
 (0)