mirror of
https://github.com/vega-org/vega-providers.git
synced 2026-04-17 23:51:44 +00:00
99 lines
3.0 KiB
TypeScript
99 lines
3.0 KiB
TypeScript
import { Stream, ProviderContext, TextTracks } from "../types";
|
|
|
|
export const mpGetStream = async function ({
|
|
link: id,
|
|
type,
|
|
providerContext,
|
|
}: {
|
|
link: string;
|
|
type: string;
|
|
providerContext: ProviderContext;
|
|
}): Promise<Stream[]> {
|
|
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 [];
|
|
}
|
|
};
|