Skip to content

Commit 8595993

Browse files
authored
Update vidsrc.ts
1 parent 0902d9f commit 8595993

File tree

1 file changed

+24
-25
lines changed

1 file changed

+24
-25
lines changed

src/vidsrc.ts

+24-25
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import * as cheerio from "npm:cheerio"; // FOR DENO
1111
import * as cheerio from "cheerio";
1212
import { decrypt } from "./helpers/decoder";
1313

14-
const BASEDOM = "https://whisperingauroras.com";
14+
let BASEDOM = "https://whisperingauroras.com";
1515

1616
interface Servers {
1717
name: string | null;
@@ -22,37 +22,44 @@ interface APIResponse {
2222
image: string | null;
2323
mediaId: string | null;
2424
stream: string | null;
25+
referer: string;
2526
}
2627
interface RCPResponse {
2728
metadata: {
28-
title: string;
2929
image: string;
3030
};
3131
data: string;
3232
}
33-
async function serversLoad(html: string): Promise<Servers[]> {
33+
async function serversLoad(html: string): Promise<{ servers: Servers[]; title: string }> {
3434
const $ = cheerio.load(html);
3535
const servers: Servers[] = [];
36+
const title = $("title").text() ?? "";
37+
const base = $("iframe").attr("src") ?? "";
38+
BASEDOM = new URL(base.startsWith("//") ? "https:" + base : base).origin ?? BASEDOM;
3639
$(".serversList .server").each((index, element) => {
3740
const server = $(element);
3841
servers.push({
3942
name: server.text().trim(),
4043
dataHash: server.attr("data-hash") ?? null,
4144
});
4245
});
43-
return servers;
46+
return {
47+
servers: servers,
48+
title: title,
49+
};
4450
}
4551
async function SRCRCPhandler() {
4652
}
4753
async function PRORCPhandler(prorcp: string): Promise<string | null> {
4854
const prorcpFetch = await fetch(`${BASEDOM}/prorcp/${prorcp}`);
4955
const prorcpResponse = await prorcpFetch.text();
50-
const jsFile =
51-
prorcpResponse.match(/<script\s+src="\/([^"]*\.js)\?\_=([^"]*)"><\/script>/gm)?.reduce((_, match) =>
52-
match.replace(/.*src="\/([^"]*\.js)\?\_=([^"]*)".*/, "$1?_=$2")
53-
) || "";
56+
57+
const scripts = prorcpResponse.match(/<script\s+src="\/([^"]*\.js)\?\_=([^"]*)"><\/script>/gm);
58+
const script = (scripts?.[scripts.length - 1].includes("cpt.js"))
59+
? scripts?.[scripts.length - 2].replace(/.*src="\/([^"]*\.js)\?\_=([^"]*)".*/, "$1?_=$2")
60+
: scripts?.[scripts.length - 1].replace(/.*src="\/([^"]*\.js)\?\_=([^"]*)".*/, "$1?_=$2");
5461
const jsFileReq = await fetch(
55-
`${BASEDOM}/${jsFile}`,
62+
`${BASEDOM}/${script}`,
5663
{
5764
"headers": {
5865
"accept": "*/*",
@@ -89,7 +96,6 @@ async function rcpGrabber(html: string): Promise<RCPResponse | null> {
8996
if (!match) return null;
9097
return {
9198
metadata: {
92-
title: "",
9399
image: "",
94100
},
95101
data: match[1],
@@ -99,13 +105,14 @@ async function tmdbScrape(tmdbId: string, type: "movie" | "tv", season?: number,
99105
if (season && episode && (type === "movie")) {
100106
throw new Error("Invalid Data.");
101107
}
102-
const url = (type==='movie')
103-
? `https://vidsrc.net/embed/${type}?tmdb=${tmdbId}`
104-
: `https://vidsrc.net/embed/${type}?tmdb=${tmdbId}&season=${season}&episode=${episode}`
108+
const url = (type === "movie")
109+
? `https://vidsrc.net/embed/${type}?tmdb=${tmdbId}`
110+
: `https://vidsrc.net/embed/${type}?tmdb=${tmdbId}&season=${season}&episode=${episode}`;
105111
const embed = await fetch(url);
106112
const embedResp = await embed.text();
107113

108-
const servers = await serversLoad(embedResp);
114+
// get some metadata
115+
const { servers, title } = await serversLoad(embedResp);
109116

110117
const rcpFetchPromises = servers.map(element => {
111118
return fetch(`${BASEDOM}/rcp/${element.dataHash}`);
@@ -122,23 +129,15 @@ async function tmdbScrape(tmdbId: string, type: "movie" | "tv", season?: number,
122129
switch (item.data.substring(0, 8)) {
123130
case "/prorcp/":
124131
apiResponse.push({
125-
name: item.metadata.title,
132+
name: title,
126133
image: item.metadata.image,
127134
mediaId: tmdbId,
128135
stream: await PRORCPhandler(item.data.replace("/prorcp/", "")),
136+
referer: BASEDOM,
129137
});
130138
break;
131-
// 2embed sometimes stops working...(fix later)
132-
// case "///srcrc":
133-
// apiResponse.push({
134-
// name: item.metadata.title,
135-
// image: item.metadata.image,
136-
// mediaId: tmdbId,
137-
// stream: item.data,
138-
// });
139139
}
140140
}
141-
return (apiResponse);
141+
return apiResponse;
142142
}
143-
144143
export default tmdbScrape;

0 commit comments

Comments
 (0)