From c3de70bbc05dd4935ab32ee0c136838290111602 Mon Sep 17 00:00:00 2001 From: Isra Date: Tue, 3 Oct 2023 16:48:23 -0500 Subject: [PATCH] fix: seperate function --- src/providers/sources/flixhq/scrape.ts | 105 +++++++++++++------------ 1 file changed, 54 insertions(+), 51 deletions(-) diff --git a/src/providers/sources/flixhq/scrape.ts b/src/providers/sources/flixhq/scrape.ts index e5707eb..c4a5955 100644 --- a/src/providers/sources/flixhq/scrape.ts +++ b/src/providers/sources/flixhq/scrape.ts @@ -5,60 +5,10 @@ import { flixHqBase } from '@/providers/sources/flixhq/common'; import { ScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; -export async function getFlixhqSources(ctx: ScrapeContext, media: MovieMedia | ShowMedia, id: string) { +export async function getFlixhqMovieSources(ctx: ScrapeContext, media: MovieMedia, id: string) { const episodeParts = id.split('-'); const episodeId = episodeParts[episodeParts.length - 1]; - if (media.type === 'show') { - const seasonsListData = await ctx.proxiedFetcher(`/ajax/season/list/${episodeId}`, { - baseUrl: flixHqBase, - }); - - const seasonsDoc = load(seasonsListData); - const season = seasonsDoc('.dropdown-item') - .toArray() - .find((el) => seasonsDoc(el).text() === `Season ${media.season.number}`)?.attribs['data-id']; - - if (!season) throw new NotFoundError('season not found'); - - const seasonData = await ctx.proxiedFetcher(`/ajax/season/episodes/${season}`, { - baseUrl: flixHqBase, - }); - const seasonDoc = load(seasonData); - const episode = seasonDoc('.nav-item > a') - .toArray() - .map((el) => { - return { - id: seasonDoc(el).attr('data-id'), - title: seasonDoc(el).attr('title'), - }; - }) - .find((e) => e.title?.startsWith(`Eps ${media.episode.number}`))?.id; - - if (!episode) throw new NotFoundError('episode not found'); - - const data = await ctx.proxiedFetcher(`/ajax/episode/servers/${episode}`, { - baseUrl: flixHqBase, - }); - - const doc = load(data); - - const sourceLinks = doc('.nav-item > a') - .toArray() - .map((el) => { - const query = doc(el); - const embedTitle = query.attr('title'); - const linkId = query.attr('data-id'); - if (!embedTitle || !linkId) throw new Error('invalid sources'); - return { - embed: embedTitle, - episodeId: linkId, - }; - }); - - return sourceLinks; - } - const data = await ctx.proxiedFetcher(`/ajax/movie/episodes/${episodeId}`, { baseUrl: flixHqBase, }); @@ -87,3 +37,56 @@ export async function getFlixhqSourceDetails(ctx: ScrapeContext, sourceId: strin return jsonData.link; } + +export async function getFlixhqShowSources(ctx: ScrapeContext, media: ShowMedia, id: string) { + const episodeParts = id.split('-'); + const episodeId = episodeParts[episodeParts.length - 1]; + + const seasonsListData = await ctx.proxiedFetcher(`/ajax/season/list/${episodeId}`, { + baseUrl: flixHqBase, + }); + + const seasonsDoc = load(seasonsListData); + const season = seasonsDoc('.dropdown-item') + .toArray() + .find((el) => seasonsDoc(el).text() === `Season ${media.season.number}`)?.attribs['data-id']; + + if (!season) throw new NotFoundError('season not found'); + + const seasonData = await ctx.proxiedFetcher(`/ajax/season/episodes/${season}`, { + baseUrl: flixHqBase, + }); + const seasonDoc = load(seasonData); + const episode = seasonDoc('.nav-item > a') + .toArray() + .map((el) => { + return { + id: seasonDoc(el).attr('data-id'), + title: seasonDoc(el).attr('title'), + }; + }) + .find((e) => e.title?.startsWith(`Eps ${media.episode.number}`))?.id; + + if (!episode) throw new NotFoundError('episode not found'); + + const data = await ctx.proxiedFetcher(`/ajax/episode/servers/${episode}`, { + baseUrl: flixHqBase, + }); + + const doc = load(data); + + const sourceLinks = doc('.nav-item > a') + .toArray() + .map((el) => { + const query = doc(el); + const embedTitle = query.attr('title'); + const linkId = query.attr('data-id'); + if (!embedTitle || !linkId) throw new Error('invalid sources'); + return { + embed: embedTitle, + episodeId: linkId, + }; + }); + + return sourceLinks; +}