import { Stream, ProviderContext, TextTracks } from "../types"; export const mpGetStream = async function ({ link: id, type, providerContext, }: { link: string; type: string; providerContext: ProviderContext; }): Promise { try { const { getBaseUrl, cheerio } = providerContext; const streams: Stream[] = []; const { season, episode, tmdbId } = JSON.parse(id); const baseUrl = await getBaseUrl("moviesapi"); const link = type === "movie" ? `${baseUrl}/movie/${tmdbId}` : `${baseUrl}/tv/${tmdbId}-${season}-${episode}`; const res = await fetch(link, { headers: { referer: baseUrl, }, }); const baseData = await res.text(); const $ = cheerio.load(baseData); const embededUrl = $("iframe").attr("src") || ""; const response = await fetch(embededUrl, { credentials: "omit", headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0", Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", "Accept-Language": "en-US,en;q=0.5", "Alt-Used": "w1.moviesapi.club", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "none", "Sec-Fetch-User": "?1", Pragma: "no-cache", "Cache-Control": "no-cache", referer: baseUrl, }, referrer: baseUrl, method: "GET", mode: "cors", }); const data2 = await response.text(); // Extract the encrypted content const contents = data2.match(/const\s+Encrypted\s*=\s*['"]({.*})['"]/)?.[1] || ""; if (embededUrl) { const res2 = await fetch( "https://ext.8man.me/api/decrypt?passphrase==JV[t}{trEV=Ilh5", { method: "POST", body: contents, } ); const finalData = await res2.json(); const subtitle: TextTracks = finalData?.subtitles?.map((sub: any) => ({ title: sub?.label || "Unknown", language: sub?.label as string, type: sub?.file?.includes(".vtt") ? "text/vtt" : "application/x-subrip", uri: sub?.file, })); streams.push({ server: "vidstreaming ", type: "m3u8", subtitles: subtitle, link: finalData?.videoUrl, headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0", Referer: baseUrl, Origin: baseUrl, Accept: "*/*", "Accept-Language": "en-US,en;q=0.5", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "cross-site", Pragma: "no-cache", "Cache-Control": "no-cache", }, }); } return streams; } catch (err) { console.error(err); return []; } };