From 30511f11e8bc3f8b26be356d0db59acc100cf92e Mon Sep 17 00:00:00 2001 From: Exodus-MW Date: Sun, 28 Apr 2024 13:59:17 +0530 Subject: [PATCH] Added NSBX --- src/providers/all.ts | 4 +++ src/providers/embeds/nsbx/delta.ts | 14 +++++++++++ src/providers/sources/nsbx.ts | 39 ++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 src/providers/embeds/nsbx/delta.ts create mode 100644 src/providers/sources/nsbx.ts diff --git a/src/providers/all.ts b/src/providers/all.ts index 7b3ffdc..6652bfd 100644 --- a/src/providers/all.ts +++ b/src/providers/all.ts @@ -17,6 +17,7 @@ import { goMoviesScraper } from '@/providers/sources/gomovies/index'; import { insertunitScraper } from '@/providers/sources/insertunit'; import { kissAsianScraper } from '@/providers/sources/kissasian/index'; import { lookmovieScraper } from '@/providers/sources/lookmovie'; +import { nsbxScraper } from '@/providers/sources/nsbx'; import { remotestreamScraper } from '@/providers/sources/remotestream'; import { showboxScraper } from '@/providers/sources/showbox/index'; import { tugaflixScraper } from '@/providers/sources/tugaflix'; @@ -27,6 +28,7 @@ import { bflixScraper } from './embeds/bflix'; import { closeLoadScraper } from './embeds/closeload'; import { fileMoonScraper } from './embeds/filemoon'; import { fileMoonMp4Scraper } from './embeds/filemoon/mp4'; +import { deltaScraper } from './embeds/nsbx/delta'; import { ridooScraper } from './embeds/ridoo'; import { smashyStreamOScraper } from './embeds/smashystream/opstream'; import { smashyStreamFScraper } from './embeds/smashystream/video1'; @@ -60,6 +62,7 @@ export function gatherAllSources(): Array { zoechipScraper, vidsrcScraper, lookmovieScraper, + nsbxScraper, smashyStreamScraper, ridooMoviesScraper, vidSrcToScraper, @@ -94,6 +97,7 @@ export function gatherAllEmbeds(): Array { closeLoadScraper, fileMoonScraper, fileMoonMp4Scraper, + deltaScraper, vidplayScraper, wootlyScraper, doodScraper, diff --git a/src/providers/embeds/nsbx/delta.ts b/src/providers/embeds/nsbx/delta.ts new file mode 100644 index 0000000..deb751d --- /dev/null +++ b/src/providers/embeds/nsbx/delta.ts @@ -0,0 +1,14 @@ +import { EmbedOutput, makeEmbed } from '@/providers/base'; + +export const deltaScraper = makeEmbed({ + id: 'delta', + name: 'Delta', + rank: 200, + disabled: false, + async scrape(ctx) { + const url = `https://api.nsbx.ru/provider?resourceId=${encodeURIComponent(ctx.url)}&provider=delta`; + const result = await ctx.fetcher(url); + + return result as EmbedOutput; + }, +}); diff --git a/src/providers/sources/nsbx.ts b/src/providers/sources/nsbx.ts new file mode 100644 index 0000000..f2a29f4 --- /dev/null +++ b/src/providers/sources/nsbx.ts @@ -0,0 +1,39 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { SourcererEmbed, SourcererOutput, makeSourcerer } from '@/providers/base'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +async function comboScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promise { + const query = { + title: ctx.media.title, + releaseYear: ctx.media.releaseYear, + tmdbId: ctx.media.tmdbId, + imdbId: ctx.media.imdbId, + type: ctx.media.type, + season: '', + episode: '', + }; + + if (ctx.media.type === 'show') { + query.season = ctx.media.season.number.toString(); + query.episode = ctx.media.episode.number.toString(); + } + + const result = await ctx.fetcher(`https://api.nsbx.ru/search?query=${encodeURIComponent(JSON.stringify(query))}`); + + if (result.embeds.length === 0) throw new NotFoundError('No watchable item found'); + + return { + embeds: result.embeds as SourcererEmbed[], + }; +} + +export const nsbxScraper = makeSourcerer({ + id: 'nsbx', + name: 'NSBX', + rank: 150, + flags: [flags.CORS_ALLOWED], + disabled: false, + scrapeMovie: comboScraper, + scrapeShow: comboScraper, +});