From 8917961a41b4435322e8b57937ddf97804bdd527 Mon Sep 17 00:00:00 2001 From: Pas <74743263+Pasithea0@users.noreply.github.com> Date: Thu, 15 Jan 2026 10:56:20 -0700 Subject: [PATCH] fix vidnest --- src/providers/all.ts | 2 +- src/providers/embeds/vidnest.ts | 6 +----- src/providers/sources/vidnest.ts | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/providers/all.ts b/src/providers/all.ts index ee3c55f..7489153 100644 --- a/src/providers/all.ts +++ b/src/providers/all.ts @@ -91,7 +91,7 @@ import { streamboxScraper } from './sources/streambox'; import { turbovidSourceScraper } from './sources/turbovid'; import { vidapiClickScraper } from './sources/vidapiclick'; import { vidifyScraper } from './sources/vidify'; -import vidnestScraper from './sources/vidnest'; +import { vidnestScraper } from './sources/vidnest'; import { warezcdnScraper } from './sources/warezcdn'; import { wecimaScraper } from './sources/wecima'; import { zunimeScraper } from './sources/zunime'; diff --git a/src/providers/embeds/vidnest.ts b/src/providers/embeds/vidnest.ts index f9e5654..f9a5b63 100644 --- a/src/providers/embeds/vidnest.ts +++ b/src/providers/embeds/vidnest.ts @@ -3,22 +3,18 @@ import { makeEmbed } from '@/providers/base'; import { HlsBasedStream } from '@/providers/streams'; import { NotFoundError } from '@/utils/errors'; -const PASSPHRASE = 'T8c8PQlSQVU4mBuW4CbE/g57VBbM5009QHd+ym93aZZ5pEeVpToY6OdpYPvRMVYp'; +const PASSPHRASE = 'A7kP9mQeXU2BWcD4fRZV+Sg8yN0/M5tLbC1HJQwYe6pOKFaE3vTnPZsRuYdVmLq2'; async function decryptVidnestData(encryptedBase64: string): Promise { - // Decode base64 to get encrypted bytes const encryptedBytes = Uint8Array.from(atob(encryptedBase64), (c) => c.charCodeAt(0)); - // Extract IV (first 12 bytes), ciphertext (middle), and auth tag (last 16 bytes) const iv = encryptedBytes.slice(0, 12); const ciphertext = encryptedBytes.slice(12, -16); const tag = encryptedBytes.slice(-16); - // Create key from passphrase (decode base64 first, then take first 32 bytes) const keyData = Uint8Array.from(atob(PASSPHRASE), (c) => c.charCodeAt(0)).slice(0, 32); const key = await crypto.subtle.importKey('raw', keyData, { name: 'AES-GCM' }, false, ['decrypt']); - // Combine ciphertext and tag for decryption const encrypted = new Uint8Array([...ciphertext, ...tag]); try { diff --git a/src/providers/sources/vidnest.ts b/src/providers/sources/vidnest.ts index 031c7e8..23e9148 100644 --- a/src/providers/sources/vidnest.ts +++ b/src/providers/sources/vidnest.ts @@ -27,7 +27,7 @@ async function scrape(ctx: MovieScrapeContext | ShowScrapeContext, type: 'movie' }; } -const vidnestScraper = makeSourcerer({ +export const vidnestScraper = makeSourcerer({ id: 'vidnest', name: 'Vidnest', rank: 115, @@ -36,5 +36,3 @@ const vidnestScraper = makeSourcerer({ scrapeMovie: (ctx: MovieScrapeContext) => scrape(ctx, 'movie'), scrapeShow: (ctx: ShowScrapeContext) => scrape(ctx, 'tv'), }); - -export default vidnestScraper;