mirror of
https://github.com/sussy-code/providers.git
synced 2026-04-20 16:12:25 +00:00
Refactor NSBX; Update for new API
This commit is contained in:
parent
d465789b99
commit
909d3a180f
2 changed files with 28 additions and 26 deletions
|
|
@ -1,5 +1,4 @@
|
|||
import { EmbedOutput, makeEmbed } from '@/providers/base';
|
||||
import { baseUrl } from '@/providers/sources/nsbx';
|
||||
import { NotFoundError } from '@/utils/errors';
|
||||
|
||||
const providers = [
|
||||
|
|
@ -20,21 +19,30 @@ function embed(provider: { id: string; rank: number }) {
|
|||
rank: provider.rank,
|
||||
disabled: false,
|
||||
async scrape(ctx) {
|
||||
const search = await ctx.proxiedFetcher.full(
|
||||
`${baseUrl}/search?query=${encodeURIComponent(ctx.url)}&provider=${provider.id}`,
|
||||
);
|
||||
const [query, baseUrl] = ctx.url.split('.');
|
||||
|
||||
if (search.statusCode === 429) {
|
||||
throw new Error('Rate limited');
|
||||
} else if (search.statusCode !== 200) {
|
||||
throw new NotFoundError('Failed to search');
|
||||
}
|
||||
const search = await ctx.fetcher.full('/search', {
|
||||
query: {
|
||||
query: encodeURIComponent(query),
|
||||
provider: provider.id,
|
||||
},
|
||||
credentials: 'include',
|
||||
baseUrl,
|
||||
});
|
||||
|
||||
if (search.statusCode === 429) throw new Error('Rate limited');
|
||||
if (search.statusCode !== 200) throw new NotFoundError('Failed to search');
|
||||
|
||||
ctx.progress(50);
|
||||
|
||||
const result = await ctx.proxiedFetcher(
|
||||
`${baseUrl}/provider?resourceId=${encodeURIComponent(search.body.url)}&provider=${provider.id}`,
|
||||
);
|
||||
const result = await ctx.fetcher('/provider', {
|
||||
query: {
|
||||
resourceId: encodeURIComponent(search.body.url),
|
||||
provider: provider.id,
|
||||
},
|
||||
credentials: 'include',
|
||||
baseUrl,
|
||||
});
|
||||
|
||||
ctx.progress(100);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,6 @@ import { SourcererOutput, makeSourcerer } from '@/providers/base';
|
|||
import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context';
|
||||
import { NotFoundError } from '@/utils/errors';
|
||||
|
||||
export const baseUrl = 'https://api.nsbx.ru';
|
||||
|
||||
async function comboScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promise<SourcererOutput> {
|
||||
const query = {
|
||||
title: ctx.media.title,
|
||||
|
|
@ -12,25 +10,21 @@ async function comboScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promis
|
|||
tmdbId: ctx.media.tmdbId,
|
||||
imdbId: ctx.media.imdbId,
|
||||
type: ctx.media.type,
|
||||
season: '',
|
||||
episode: '',
|
||||
...(ctx.media.type === 'show' && {
|
||||
season: ctx.media.season.number.toString(),
|
||||
episode: ctx.media.episode.number.toString(),
|
||||
}),
|
||||
};
|
||||
|
||||
if (ctx.media.type === 'show') {
|
||||
query.season = ctx.media.season.number.toString();
|
||||
query.episode = ctx.media.episode.number.toString();
|
||||
}
|
||||
const res: { providers: string[]; endpoint: string } = await ctx.fetcher('https://api.nsbx.ru/status');
|
||||
|
||||
const res = await ctx.proxiedFetcher(`${baseUrl}/status`);
|
||||
|
||||
if (res.providers?.length === 0) {
|
||||
throw new NotFoundError('No providers available');
|
||||
}
|
||||
if (res.providers?.length === 0) throw new NotFoundError('No providers available');
|
||||
if (!res.endpoint) throw new Error('No endpoint returned');
|
||||
|
||||
const embeds = res.providers.map((provider: string) => {
|
||||
return {
|
||||
embedId: provider,
|
||||
url: JSON.stringify(query),
|
||||
url: `${JSON.stringify(query)}.${res.endpoint}`,
|
||||
};
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue