Added Alpha Provider, Cleaned Code

This commit is contained in:
Exodus-MW 2024-05-24 01:24:28 +05:30
parent d22ef8ff27
commit 231954e2da
5 changed files with 69 additions and 24 deletions

View File

@ -28,7 +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 { alphaScraper, deltaScraper } from './embeds/nsbx';
import { ridooScraper } from './embeds/ridoo';
import { smashyStreamOScraper } from './embeds/smashystream/opstream';
import { smashyStreamFScraper } from './embeds/smashystream/video1';
@ -98,6 +98,7 @@ export function gatherAllEmbeds(): Array<Embed> {
fileMoonScraper,
fileMoonMp4Scraper,
deltaScraper,
alphaScraper,
vidplayScraper,
wootlyScraper,
doodScraper,

View File

@ -0,0 +1,50 @@
import { EmbedOutput, makeEmbed } from '@/providers/base';
import { baseUrl, headers } from '@/providers/sources/nsbx';
import { NotFoundError } from '@/utils/errors';
const providers = [
{
id: 'delta',
rank: 699,
},
{
id: 'alpha',
rank: 695,
},
];
function embed(provider: { id: string; rank: number }) {
return makeEmbed({
id: provider.id,
name: provider.id.charAt(0).toUpperCase() + provider.id.slice(1),
rank: provider.rank,
disabled: false,
async scrape(ctx) {
const search = await ctx.fetcher.full(
`${baseUrl}/search?query=${encodeURIComponent(ctx.url)}&provider=${provider.id}`,
{ headers },
);
if (search.statusCode === 429) {
throw new Error('Rate limited');
} else if (search.statusCode !== 200) {
throw new NotFoundError('Failed to search');
}
ctx.progress(50);
const result = await ctx.fetcher(
`${baseUrl}/provider?resourceId=${encodeURIComponent(search.body.url)}&provider=${provider.id}`,
{
headers,
},
);
ctx.progress(100);
return result as EmbedOutput;
},
});
}
export const [deltaScraper, alphaScraper] = providers.map(embed);

View File

@ -1,17 +0,0 @@
import { EmbedOutput, makeEmbed } from '@/providers/base';
import { headers } from '@/providers/sources/nsbx';
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, {
headers,
});
return result as EmbedOutput;
},
});

View File

@ -1,8 +1,10 @@
import { flags } from '@/entrypoint/utils/targets';
import { SourcererEmbed, SourcererOutput, makeSourcerer } from '@/providers/base';
import { SourcererOutput, makeSourcerer } from '@/providers/base';
import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context';
import { NotFoundError } from '@/utils/errors';
export const baseUrl = 'https://api.nsbx.ru';
export const headers = {
Origin: 'https://extension.works.again.with.nsbx',
Referer: 'https://extension.works.again.with.nsbx',
@ -24,14 +26,23 @@ async function comboScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promis
query.episode = ctx.media.episode.number.toString();
}
const result = await ctx.fetcher(`https://api.nsbx.ru/search?query=${encodeURIComponent(JSON.stringify(query))}`, {
const res = await ctx.fetcher(`${baseUrl}/status`, {
headers,
});
if (result.embeds.length === 0) throw new NotFoundError('No watchable item found');
if (res.providers?.length === 0) {
throw new NotFoundError('No providers available');
}
const embeds = res.providers.map((provider: string) => {
return {
embedId: provider,
url: JSON.stringify(query),
};
});
return {
embeds: result.embeds as SourcererEmbed[],
embeds,
};
}

View File

@ -1,10 +1,10 @@
import { deltaScraper } from '@/providers/embeds/nsbx/delta';
import { alphaScraper, deltaScraper } from '@/providers/embeds/nsbx';
import { warezcdnembedMp4Scraper } from '@/providers/embeds/warezcdn/mp4';
import { Stream } from '@/providers/streams';
import { IndividualEmbedRunnerOptions } from '@/runners/individualRunner';
import { ProviderRunnerOptions } from '@/runners/runner';
const SKIP_VALIDATION_CHECK_IDS = [warezcdnembedMp4Scraper.id, deltaScraper.id];
const SKIP_VALIDATION_CHECK_IDS = [warezcdnembedMp4Scraper.id, deltaScraper.id, alphaScraper.id];
export function isValidStream(stream: Stream | undefined): boolean {
if (!stream) return false;