import type { Logger } from "pino"; import type { DateTime } from "luxon"; import type { Browser, Page } from "puppeteer"; import type { CountryResponse, LanguageResponse } from "#client"; export interface EpisodeMetadata { readonly epStart: number; readonly epEnd: number; readonly epCurrent: number; readonly index: number; readonly country: CountryResponse; readonly language: LanguageResponse; readonly tvSeasonId: string; } export interface EpisodeContext { browser: Browser; logger: Logger; } export interface EpisodeParser { getUrl: (meta: EpisodeMetadata, ctx: EpisodeContext) => Promise; onPageLoad: (page: Page, meta: EpisodeMetadata, ctx: EpisodeContext) => Promise; getTitle: (page: Page, meta: EpisodeMetadata, ctx: EpisodeContext) => Promise; postProcessTitle: (value: string) => Promise; getSortTitle: (title: string, page: Page, meta: EpisodeMetadata, ctx: EpisodeContext) => Promise; postProcessSortTitle: (value: string) => Promise; getDescription: (page: Page, meta: EpisodeMetadata, ctx: EpisodeContext) => Promise; postProcessDescription: (value: string) => Promise; getImageUrls: (page: Page, meta: EpisodeMetadata, ctx: EpisodeContext) => Promise; getAirDate: (page: Page, meta: EpisodeMetadata, ctx: EpisodeContext) => Promise; }