From f34580978b9caf73516a343a357f422aa567e12c Mon Sep 17 00:00:00 2001 From: Exodus-MW Date: Wed, 17 Apr 2024 19:31:20 +0530 Subject: [PATCH] Per Joost's request, added Filemoon MP4 --- src/providers/all.ts | 2 ++ src/providers/embeds/filemoon/mp4.ts | 37 +++++++++++++++++++++++++ src/providers/sources/vidsrcto/index.ts | 14 +++++++--- 3 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 src/providers/embeds/filemoon/mp4.ts diff --git a/src/providers/all.ts b/src/providers/all.ts index f86a554..7b3ffdc 100644 --- a/src/providers/all.ts +++ b/src/providers/all.ts @@ -26,6 +26,7 @@ import { zoechipScraper } from '@/providers/sources/zoechip'; import { bflixScraper } from './embeds/bflix'; import { closeLoadScraper } from './embeds/closeload'; import { fileMoonScraper } from './embeds/filemoon'; +import { fileMoonMp4Scraper } from './embeds/filemoon/mp4'; import { ridooScraper } from './embeds/ridoo'; import { smashyStreamOScraper } from './embeds/smashystream/opstream'; import { smashyStreamFScraper } from './embeds/smashystream/video1'; @@ -92,6 +93,7 @@ export function gatherAllEmbeds(): Array { ridooScraper, closeLoadScraper, fileMoonScraper, + fileMoonMp4Scraper, vidplayScraper, wootlyScraper, doodScraper, diff --git a/src/providers/embeds/filemoon/mp4.ts b/src/providers/embeds/filemoon/mp4.ts new file mode 100644 index 0000000..64cd663 --- /dev/null +++ b/src/providers/embeds/filemoon/mp4.ts @@ -0,0 +1,37 @@ +import { NotFoundError } from '@/utils/errors'; + +import { makeEmbed } from '../../base'; + +import { fileMoonScraper } from './index'; + +export const fileMoonMp4Scraper = makeEmbed({ + id: 'filemoon-mp4', + name: 'Filemoon MP4', + rank: 500, + scrape: async (ctx) => { + const result = await fileMoonScraper.scrape(ctx); + + if (!result.stream) throw new NotFoundError('Failed to find result'); + + if (result.stream[0].type !== 'hls') throw new NotFoundError('Failed to find hls stream'); + + const url = result.stream[0].playlist.replace(/\/hls2\//, '/download/').replace(/\.m3u8/, '.mp4'); + + return { + stream: [ + { + id: 'primary', + type: 'file', + qualities: { + unknown: { + type: 'mp4', + url, + }, + }, + flags: [], + captions: result.stream[0].captions, + }, + ], + }; + }, +}); diff --git a/src/providers/sources/vidsrcto/index.ts b/src/providers/sources/vidsrcto/index.ts index 0f99b4e..3bb7b92 100644 --- a/src/providers/sources/vidsrcto/index.ts +++ b/src/providers/sources/vidsrcto/index.ts @@ -60,10 +60,16 @@ const universalScraper = async (ctx: ShowScrapeContext | MovieScrapeContext): Pr const urlWithSubtitles = embedArr.find((v) => v.source === 'Vidplay' && v.url.includes('sub.info'))?.url; const subtitleUrl = urlWithSubtitles ? new URL(urlWithSubtitles).searchParams.get('sub.info') : null; if (subtitleUrl) fullUrl.searchParams.set('sub.info', subtitleUrl); - embeds.push({ - embedId: 'filemoon', - url: fullUrl.toString(), - }); + embeds.push( + { + embedId: 'filemoon', + url: fullUrl.toString(), + }, + { + embedId: 'filemoon-mp4', + url: fullUrl.toString(), + }, + ); } }