This commit is contained in:
himanshu8443
2025-06-18 11:42:29 +05:30
parent 490a4bd71d
commit 9621597865
100 changed files with 6898 additions and 5740 deletions

172
dist/autoEmbed/meta.js vendored
View File

@@ -1,89 +1,99 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
const axios = providerContext.axios; return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
try { var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
console.log("all", link); const axios = providerContext.axios;
const res = await axios.get(link); try {
const data = res.data; console.log("all", link);
const meta = { const res = yield axios.get(link);
title: "", const data = res.data;
synopsis: "", const meta = {
image: "", title: "",
imdbId: data?.meta?.imdb_id || "", synopsis: "",
type: data?.meta?.type || "movie", image: "",
}; imdbId: ((_b = data === null || data === void 0 ? void 0 : data.meta) === null || _b === void 0 ? void 0 : _b.imdb_id) || "",
const links = []; type: ((_c = data === null || data === void 0 ? void 0 : data.meta) === null || _c === void 0 ? void 0 : _c.type) || "movie",
let directLinks = []; };
let season = new Map(); const links = [];
if (meta.type === "series") { let directLinks = [];
data?.meta?.videos?.map((video) => { let season = new Map();
if (video?.season <= 0) if (meta.type === "series") {
return; (_e = (_d = data === null || data === void 0 ? void 0 : data.meta) === null || _d === void 0 ? void 0 : _d.videos) === null || _e === void 0 ? void 0 : _e.map((video) => {
if (!season.has(video?.season)) { var _a, _b, _c, _d, _e, _f, _g, _h;
season.set(video?.season, []); if ((video === null || video === void 0 ? void 0 : video.season) <= 0)
} return;
season.get(video?.season).push({ if (!season.has(video === null || video === void 0 ? void 0 : video.season)) {
title: "Episode " + video?.episode, season.set(video === null || video === void 0 ? void 0 : video.season, []);
type: "series", }
link: JSON.stringify({ season.get(video === null || video === void 0 ? void 0 : video.season).push({
title: data?.meta?.name, title: "Episode " + (video === null || video === void 0 ? void 0 : video.episode),
imdbId: data?.meta?.imdb_id, type: "series",
season: video?.id?.split(":")[1],
episode: video?.id?.split(":")[2],
type: data?.meta?.type,
tmdbId: data?.meta?.moviedb_id?.toString() || "",
year: data?.meta?.year,
}),
});
});
const keys = Array.from(season.keys());
keys.sort();
keys.map((key) => {
directLinks = season.get(key);
links.push({
title: `Season ${key}`,
directLinks: directLinks,
});
});
}
else {
console.log("all meta Mv🔥🔥", meta);
links.push({
title: data?.meta?.name,
directLinks: [
{
title: "Movie",
type: "movie",
link: JSON.stringify({ link: JSON.stringify({
title: data?.meta?.name, title: (_a = data === null || data === void 0 ? void 0 : data.meta) === null || _a === void 0 ? void 0 : _a.name,
imdbId: data?.meta?.imdb_id, imdbId: (_b = data === null || data === void 0 ? void 0 : data.meta) === null || _b === void 0 ? void 0 : _b.imdb_id,
season: "", season: (_c = video === null || video === void 0 ? void 0 : video.id) === null || _c === void 0 ? void 0 : _c.split(":")[1],
episode: "", episode: (_d = video === null || video === void 0 ? void 0 : video.id) === null || _d === void 0 ? void 0 : _d.split(":")[2],
type: data?.meta?.type, type: (_e = data === null || data === void 0 ? void 0 : data.meta) === null || _e === void 0 ? void 0 : _e.type,
tmdbId: data?.meta?.moviedb_id?.toString() || "", tmdbId: ((_g = (_f = data === null || data === void 0 ? void 0 : data.meta) === null || _f === void 0 ? void 0 : _f.moviedb_id) === null || _g === void 0 ? void 0 : _g.toString()) || "",
year: data?.meta?.year, year: (_h = data === null || data === void 0 ? void 0 : data.meta) === null || _h === void 0 ? void 0 : _h.year,
}), }),
}, });
], });
}); const keys = Array.from(season.keys());
keys.sort();
keys.map((key) => {
directLinks = season.get(key);
links.push({
title: `Season ${key}`,
directLinks: directLinks,
});
});
}
else {
console.log("all meta Mv🔥🔥", meta);
links.push({
title: (_f = data === null || data === void 0 ? void 0 : data.meta) === null || _f === void 0 ? void 0 : _f.name,
directLinks: [
{
title: "Movie",
type: "movie",
link: JSON.stringify({
title: (_g = data === null || data === void 0 ? void 0 : data.meta) === null || _g === void 0 ? void 0 : _g.name,
imdbId: (_h = data === null || data === void 0 ? void 0 : data.meta) === null || _h === void 0 ? void 0 : _h.imdb_id,
season: "",
episode: "",
type: (_j = data === null || data === void 0 ? void 0 : data.meta) === null || _j === void 0 ? void 0 : _j.type,
tmdbId: ((_l = (_k = data === null || data === void 0 ? void 0 : data.meta) === null || _k === void 0 ? void 0 : _k.moviedb_id) === null || _l === void 0 ? void 0 : _l.toString()) || "",
year: (_m = data === null || data === void 0 ? void 0 : data.meta) === null || _m === void 0 ? void 0 : _m.year,
}),
},
],
});
}
return Object.assign(Object.assign({}, meta), { linkList: links });
} }
return { catch (err) {
...meta, console.error(err);
linkList: links, return {
}; title: "",
} synopsis: "",
catch (err) { image: "",
console.error(err); imdbId: "",
return { type: "movie",
title: "", linkList: [],
synopsis: "", };
image: "", }
imdbId: "", });
type: "movie",
linkList: [],
};
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

View File

@@ -1,89 +1,102 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, signal, providerContext, }) { const getPosts = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ filter, signal, providerContext, }) {
const catalog = []; try {
const url = "https://cinemeta-catalogs.strem.io" + filter; const catalog = [];
console.log("allGetPostUrl", url); const url = "https://cinemeta-catalogs.strem.io" + filter;
const res = await providerContext.axios.get(url, { console.log("allGetPostUrl", url);
headers: providerContext.commonHeaders, const res = yield providerContext.axios.get(url, {
signal, headers: providerContext.commonHeaders,
}); signal,
const data = res.data; });
data?.metas.map((result) => { const data = res.data;
const title = result?.name; data === null || data === void 0 ? void 0 : data.metas.map((result) => {
const id = result?.imdb_id || result?.id; const title = result === null || result === void 0 ? void 0 : result.name;
const type = result?.type; const id = (result === null || result === void 0 ? void 0 : result.imdb_id) || (result === null || result === void 0 ? void 0 : result.id);
const image = result?.poster; const type = result === null || result === void 0 ? void 0 : result.type;
if (id) { const image = result === null || result === void 0 ? void 0 : result.poster;
catalog.push({ if (id) {
title: title, catalog.push({
link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`, title: title,
image: image, link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`,
}); image: image,
} });
}); }
console.log("catalog", catalog.length); });
return catalog; console.log("catalog", catalog.length);
} return catalog;
catch (err) { }
console.error("AutoEmbed error ", err); catch (err) {
return []; console.error("AutoEmbed error ", err);
}
};
exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page,
// providerValue,
signal, providerContext, }) {
try {
if (page > 1) {
return []; return [];
} }
const catalog = []; });
const url1 = `https://v3-cinemeta.strem.io/catalog/series/top/search=${encodeURI(searchQuery)}.json`; };
const url2 = `https://v3-cinemeta.strem.io/catalog/movie/top/search=${encodeURI(searchQuery)}.json`; exports.getPosts = getPosts;
const res = await providerContext.axios.get(url1, { const getSearchPosts = function (_a) {
headers: providerContext.commonHeaders, return __awaiter(this, arguments, void 0, function* ({ searchQuery, page,
signal, // providerValue,
}); signal, providerContext, }) {
const data = res.data; try {
data?.metas.map((result) => { if (page > 1) {
const title = result.name || ""; return [];
const id = result?.imdb_id || result?.id;
const image = result?.poster;
const type = result?.type;
if (id) {
catalog.push({
title: title,
link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`,
image: image,
});
} }
}); const catalog = [];
const res2 = await providerContext.axios.get(url2, { const url1 = `https://v3-cinemeta.strem.io/catalog/series/top/search=${encodeURI(searchQuery)}.json`;
headers: providerContext.commonHeaders, const url2 = `https://v3-cinemeta.strem.io/catalog/movie/top/search=${encodeURI(searchQuery)}.json`;
signal, const res = yield providerContext.axios.get(url1, {
}); headers: providerContext.commonHeaders,
const data2 = res2.data; signal,
data2?.metas.map((result) => { });
const title = result?.name || ""; const data = res.data;
const id = result?.imdb_id || result?.id; data === null || data === void 0 ? void 0 : data.metas.map((result) => {
const image = result?.poster; const title = result.name || "";
const type = result?.type; const id = (result === null || result === void 0 ? void 0 : result.imdb_id) || (result === null || result === void 0 ? void 0 : result.id);
if (id) { const image = result === null || result === void 0 ? void 0 : result.poster;
catalog.push({ const type = result === null || result === void 0 ? void 0 : result.type;
title: title, if (id) {
link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`, catalog.push({
image: image, title: title,
}); link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`,
} image: image,
}); });
return catalog; }
} });
catch (err) { const res2 = yield providerContext.axios.get(url2, {
console.error("AutoEmbed error ", err); headers: providerContext.commonHeaders,
return []; signal,
} });
const data2 = res2.data;
data2 === null || data2 === void 0 ? void 0 : data2.metas.map((result) => {
const title = (result === null || result === void 0 ? void 0 : result.name) || "";
const id = (result === null || result === void 0 ? void 0 : result.imdb_id) || (result === null || result === void 0 ? void 0 : result.id);
const image = result === null || result === void 0 ? void 0 : result.poster;
const type = result === null || result === void 0 ? void 0 : result.type;
if (id) {
catalog.push({
title: title,
link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`,
image: image,
});
}
});
return catalog;
}
catch (err) {
console.error("AutoEmbed error ", err);
return [];
}
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;

View File

@@ -1,91 +1,104 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
exports.getRiveStream = getRiveStream; exports.getRiveStream = getRiveStream;
const types_1 = require("../types"); const types_1 = require("../types");
const getStream = async ({ link: id, type, providerContext, }) => { const getStream = (_a) => __awaiter(void 0, [_a], void 0, function* ({ link: id, type, providerContext, }) {
try { try {
const streams = []; const streams = [];
const { imdbId, season, episode, title, tmdbId, year } = JSON.parse(id); const { imdbId, season, episode, title, tmdbId, year } = JSON.parse(id);
await getRiveStream(tmdbId, episode, season, type, streams, providerContext); yield getRiveStream(tmdbId, episode, season, type, streams, providerContext);
return streams; return streams;
} }
catch (err) { catch (err) {
console.error(err); console.error(err);
return []; return [];
} }
}; });
exports.getStream = getStream; exports.getStream = getStream;
async function getRiveStream(tmdId, episode, season, type, Streams, providerContext) { function getRiveStream(tmdId, episode, season, type, Streams, providerContext) {
const secret = generateSecretKey(Number(tmdId)); return __awaiter(this, void 0, void 0, function* () {
const servers = [ const secret = generateSecretKey(Number(tmdId));
"flowcast", const servers = [
"shadow", "flowcast",
"asiacloud", "shadow",
"hindicast", "asiacloud",
"anime", "hindicast",
"animez", "anime",
"guard", "animez",
"curve", "guard",
"hq", "curve",
"ninja", "hq",
"alpha", "ninja",
"kaze", "alpha",
"zenesis", "kaze",
"genesis", "zenesis",
"zenith", "genesis",
"ghost", "zenith",
"halo", "ghost",
"kinoecho", "halo",
"ee3", "kinoecho",
"volt", "ee3",
"putafilme", "volt",
"ophim", "putafilme",
"kage", "ophim",
]; "kage",
const baseUrl = await providerContext.getBaseUrl("rive"); ];
const cors = process.env.CORS_PRXY ? process.env.CORS_PRXY + "?url=" : ""; const baseUrl = yield providerContext.getBaseUrl("rive");
console.log("CORS: " + cors); const cors = process.env.CORS_PRXY ? process.env.CORS_PRXY + "?url=" : "";
const route = type === "series" console.log("CORS: " + cors);
? `/api/backendfetch?requestID=tvVideoProvider&id=${tmdId}&season=${season}&episode=${episode}&secretKey=${secret}&service=` const route = type === "series"
: `/api/backendfetch?requestID=movieVideoProvider&id=${tmdId}&secretKey=${secret}&service=`; ? `/api/backendfetch?requestID=tvVideoProvider&id=${tmdId}&season=${season}&episode=${episode}&secretKey=${secret}&service=`
const url = cors : `/api/backendfetch?requestID=movieVideoProvider&id=${tmdId}&secretKey=${secret}&service=`;
? cors + encodeURIComponent(baseUrl + route) const url = cors
: baseUrl + route; ? cors + encodeURIComponent(baseUrl + route)
await Promise.all(servers.map(async (server) => { : baseUrl + route;
console.log("Rive: " + url + server); yield Promise.all(servers.map((server) => __awaiter(this, void 0, void 0, function* () {
try { var _a, _b, _c, _d, _e, _f;
const res = await providerContext.axios.get(url + server, { console.log("Rive: " + url + server);
timeout: 4000, try {
headers: providerContext.commonHeaders, const res = yield providerContext.axios.get(url + server, {
}); timeout: 4000,
const subtitles = []; headers: providerContext.commonHeaders,
if (res.data?.data?.captions) { });
res.data?.data?.captions.forEach((sub) => { const subtitles = [];
subtitles.push({ if ((_b = (_a = res.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.captions) {
language: sub?.label?.slice(0, 2) || "Und", (_d = (_c = res.data) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.captions.forEach((sub) => {
uri: sub?.file, var _a, _b;
title: sub?.label || "Undefined", subtitles.push({
type: sub?.file?.endsWith(".vtt") language: ((_a = sub === null || sub === void 0 ? void 0 : sub.label) === null || _a === void 0 ? void 0 : _a.slice(0, 2)) || "Und",
? types_1.TextTrackType.VTT uri: sub === null || sub === void 0 ? void 0 : sub.file,
: types_1.TextTrackType.SUBRIP, title: (sub === null || sub === void 0 ? void 0 : sub.label) || "Undefined",
type: ((_b = sub === null || sub === void 0 ? void 0 : sub.file) === null || _b === void 0 ? void 0 : _b.endsWith(".vtt"))
? types_1.TextTrackType.VTT
: types_1.TextTrackType.SUBRIP,
});
});
}
(_f = (_e = res.data) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.sources.forEach((source) => {
Streams.push({
server: (source === null || source === void 0 ? void 0 : source.source) + "-" + (source === null || source === void 0 ? void 0 : source.quality),
link: source === null || source === void 0 ? void 0 : source.url,
type: (source === null || source === void 0 ? void 0 : source.format) === "hls" ? "m3u8" : "mp4",
quality: source === null || source === void 0 ? void 0 : source.quality,
subtitles: subtitles,
}); });
}); });
} }
res.data?.data?.sources.forEach((source) => { catch (e) {
Streams.push({ console.log(e);
server: source?.source + "-" + source?.quality, }
link: source?.url, })));
type: source?.format === "hls" ? "m3u8" : "mp4", });
quality: source?.quality,
subtitles: subtitles,
});
});
}
catch (e) {
console.log(e);
}
}));
} }
function generateSecretKey(id) { function generateSecretKey(id) {
// Array of secret key fragments - updated array from the new implementation // Array of secret key fragments - updated array from the new implementation

View File

@@ -1,64 +1,77 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getEpisodes = void 0; exports.getEpisodes = void 0;
const getEpisodes = async function ({ url, providerContext, }) { const getEpisodes = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) {
if (!url.includes("luxelinks") || url.includes("luxecinema")) { var _b;
const res = await providerContext.axios.get(url, { try {
if (!url.includes("luxelinks") || url.includes("luxecinema")) {
const res = yield providerContext.axios.get(url, {
headers: providerContext.commonHeaders,
});
const data = res.data;
const encodedLink = (_b = data.match(/"link":"([^"]+)"/)) === null || _b === void 0 ? void 0 : _b[1];
if (encodedLink) {
url = encodedLink ? atob(encodedLink) : url;
}
else {
const redirectUrlRes = yield fetch("https://ext.8man.me/api/cinemaluxe", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ url }),
});
const redirectUrl = yield redirectUrlRes.json();
url = (redirectUrl === null || redirectUrl === void 0 ? void 0 : redirectUrl.redirectUrl) || url;
}
}
const res = yield providerContext.axios.get(url, {
headers: providerContext.commonHeaders, headers: providerContext.commonHeaders,
}); });
const data = res.data; const html = res.data;
const encodedLink = data.match(/"link":"([^"]+)"/)?.[1]; let $ = providerContext.cheerio.load(html);
if (encodedLink) { const episodeLinks = [];
url = encodedLink ? atob(encodedLink) : url; if (url.includes("luxedrive")) {
} episodeLinks.push({
else { title: "Movie",
const redirectUrlRes = await fetch("https://ext.8man.me/api/cinemaluxe", { link: url,
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ url }),
}); });
const redirectUrl = await redirectUrlRes.json(); return episodeLinks;
url = redirectUrl?.redirectUrl || url;
} }
} $("a.maxbutton-4,a.maxbutton,.maxbutton-hubcloud,.ep-simple-button").map((i, element) => {
const res = await providerContext.axios.get(url, { var _a;
headers: providerContext.commonHeaders, const title = (_a = $(element).text()) === null || _a === void 0 ? void 0 : _a.trim();
}); const link = $(element).attr("href");
const html = res.data; if (title &&
let $ = providerContext.cheerio.load(html); link &&
const episodeLinks = []; !title.includes("Batch") &&
if (url.includes("luxedrive")) { !title.toLowerCase().includes("zip")) {
episodeLinks.push({ episodeLinks.push({
title: "Movie", title: title
link: url, .replace(/\(\d{4}\)/, "")
.replace("Download", "Movie")
.replace("⚡", "")
.trim(),
link,
});
}
}); });
return episodeLinks; return episodeLinks;
} }
$("a.maxbutton-4,a.maxbutton,.maxbutton-hubcloud,.ep-simple-button").map((i, element) => { catch (err) {
const title = $(element).text()?.trim(); console.error("cl episode links", err);
const link = $(element).attr("href"); return [];
if (title && }
link && });
!title.includes("Batch") &&
!title.toLowerCase().includes("zip")) {
episodeLinks.push({
title: title
.replace(/\(\d{4}\)/, "")
.replace("Download", "Movie")
.replace("⚡", "")
.trim(),
link,
});
}
});
return episodeLinks;
}
catch (err) {
console.error("cl episode links", err);
return [];
}
}; };
exports.getEpisodes = getEpisodes; exports.getEpisodes = getEpisodes;

View File

@@ -1,64 +1,76 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const url = link; try {
const res = await providerContext.axios.get(url, { const url = link;
headers: providerContext.commonHeaders, const res = yield providerContext.axios.get(url, {
}); headers: providerContext.commonHeaders,
const data = res.data; });
const $ = providerContext.cheerio.load(data); const data = res.data;
const type = url.includes("tvshows") ? "series" : "movie"; const $ = providerContext.cheerio.load(data);
const imdbId = ""; const type = url.includes("tvshows") ? "series" : "movie";
const title = url.split("/")[4].replace(/-/g, " "); const imdbId = "";
const image = $(".g-item").find("a").attr("href") || ""; const title = url.split("/")[4].replace(/-/g, " ");
const synopsis = $(".wp-content").text().trim(); const image = $(".g-item").find("a").attr("href") || "";
const tags = $(".sgeneros") const synopsis = $(".wp-content").text().trim();
.children() const tags = $(".sgeneros")
.map((i, element) => $(element).text()) .children()
.get() .map((i, element) => $(element).text())
.slice(3); .get()
const rating = Number($("#repimdb").find("strong").text()) .slice(3);
.toFixed(1) const rating = Number($("#repimdb").find("strong").text())
.toString(); .toFixed(1)
const links = []; .toString();
$(".mb-center.maxbutton-5-center,.ep-button-container").map((i, element) => { const links = [];
const title = $(element) $(".mb-center.maxbutton-5-center,.ep-button-container").map((i, element) => {
.text() var _a;
.replace("\u2b07Download", "") const title = $(element)
.replace("\u2b07 Download", "") .text()
.trim(); .replace("\u2b07Download", "")
const link = $(element).find("a").attr("href"); .replace("\u2b07 Download", "")
if (title && link) { .trim();
links.push({ const link = $(element).find("a").attr("href");
title, if (title && link) {
episodesLink: link, links.push({
quality: title?.match(/\d+P\b/)?.[0].replace("P", "p") || "", title,
}); episodesLink: link,
} quality: ((_a = title === null || title === void 0 ? void 0 : title.match(/\d+P\b/)) === null || _a === void 0 ? void 0 : _a[0].replace("P", "p")) || "",
}); });
return { }
title, });
tags, return {
rating, title,
synopsis, tags,
image, rating,
imdbId, synopsis,
type, image,
linkList: links, imdbId,
}; type,
} linkList: links,
catch (err) { };
console.error(err); }
return { catch (err) {
title: "", console.error(err);
synopsis: "", return {
image: "", title: "",
imdbId: "", synopsis: "",
type: "movie", image: "",
linkList: [], imdbId: "",
}; type: "movie",
} linkList: [],
};
}
});
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

View File

@@ -1,55 +1,70 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, page, signal, providerContext, }) { const getPosts = function (_a) {
const baseUrl = await providerContext.getBaseUrl("cinemaLuxe"); return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) {
const url = `${baseUrl + filter}page/${page}/`; const baseUrl = yield providerContext.getBaseUrl("cinemaLuxe");
return posts({ url, signal, providerContext }); const url = `${baseUrl + filter}page/${page}/`;
return posts({ url, signal, providerContext });
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, signal, providerContext, }) { const getSearchPosts = function (_a) {
const baseUrl = await providerContext.getBaseUrl("cinemaLuxe"); return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) {
const url = `${baseUrl}/page/${page}/?s=${searchQuery}`; const baseUrl = yield providerContext.getBaseUrl("cinemaLuxe");
return posts({ url, signal, providerContext }); const url = `${baseUrl}/page/${page}/?s=${searchQuery}`;
return posts({ url, signal, providerContext });
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts({ url, signal, providerContext, }) { function posts(_a) {
try { return __awaiter(this, arguments, void 0, function* ({ url, signal, providerContext, }) {
const res = await fetch(url, { try {
headers: providerContext.commonHeaders, const res = yield fetch(url, {
signal, headers: providerContext.commonHeaders,
}); signal,
const data = await res.text(); });
const $ = providerContext.cheerio.load(data); const data = yield res.text();
const catalog = []; const $ = providerContext.cheerio.load(data);
$(".item.tvshows,.item.movies").map((i, element) => { const catalog = [];
const title = $(element).find(".poster").find("img").attr("alt"); $(".item.tvshows,.item.movies").map((i, element) => {
const link = $(element).find(".poster").find("a").attr("href"); const title = $(element).find(".poster").find("img").attr("alt");
const image = $(element).find(".poster").find("img").attr("data-src"); const link = $(element).find(".poster").find("a").attr("href");
if (title && link && image) { const image = $(element).find(".poster").find("img").attr("data-src");
catalog.push({ if (title && link && image) {
title: title, catalog.push({
link: link, title: title,
image: image, link: link,
}); image: image,
} });
}); }
$(".result-item").map((i, element) => { });
const title = $(element).find(".thumbnail").find("img").attr("alt"); $(".result-item").map((i, element) => {
const link = $(element).find(".thumbnail").find("a").attr("href"); const title = $(element).find(".thumbnail").find("img").attr("alt");
const image = $(element).find(".thumbnail").find("img").attr("data-src"); const link = $(element).find(".thumbnail").find("a").attr("href");
if (title && link && image) { const image = $(element).find(".thumbnail").find("img").attr("data-src");
catalog.push({ if (title && link && image) {
title: title, catalog.push({
link: link, title: title,
image: image, link: link,
}); image: image,
} });
}); }
return catalog; });
} return catalog;
catch (err) { }
console.error("cinemaluxe error ", err); catch (err) {
return []; console.error("cinemaluxe error ", err);
} return [];
}
});
} }

View File

@@ -1,11 +1,21 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const getStream = async ({ link, signal, providerContext, }) => { const getStream = (_a) => __awaiter(void 0, [_a], void 0, function* ({ link, signal, providerContext, }) {
var _b;
try { try {
let newLink = link; let newLink = link;
if (link.includes("luxedrive")) { if (link.includes("luxedrive")) {
const res = await providerContext.axios.get(link); const res = yield providerContext.axios.get(link);
const $ = providerContext.cheerio.load(res.data); const $ = providerContext.cheerio.load(res.data);
const hubcloudLink = $("a.btn.hubcloud").attr("href"); const hubcloudLink = $("a.btn.hubcloud").attr("href");
if (hubcloudLink) { if (hubcloudLink) {
@@ -19,18 +29,18 @@ const getStream = async ({ link, signal, providerContext, }) => {
} }
} }
if (newLink.includes("gdflix")) { if (newLink.includes("gdflix")) {
const sreams = await providerContext.extractors.gdFlixExtracter(newLink, signal); const sreams = yield providerContext.extractors.gdFlixExtracter(newLink, signal);
return sreams; return sreams;
} }
const res2 = await providerContext.axios.get(newLink, { signal }); const res2 = yield providerContext.axios.get(newLink, { signal });
const data2 = res2.data; const data2 = res2.data;
const hcLink = data2.match(/location\.replace\('([^']+)'/)?.[1] || newLink; const hcLink = ((_b = data2.match(/location\.replace\('([^']+)'/)) === null || _b === void 0 ? void 0 : _b[1]) || newLink;
const hubCloudLinks = await providerContext.extractors.hubcloudExtracter(hcLink.includes("https://hubcloud") ? hcLink : newLink, signal); const hubCloudLinks = yield providerContext.extractors.hubcloudExtracter(hcLink.includes("https://hubcloud") ? hcLink : newLink, signal);
return hubCloudLinks; return hubCloudLinks;
} }
catch (err) { catch (err) {
console.error(err); console.error(err);
return []; return [];
} }
}; });
exports.getStream = getStream; exports.getStream = getStream;

141
dist/dooflix/meta.js vendored
View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const headers = { const headers = {
@@ -8,72 +17,76 @@ const headers = {
"If-Modified-Since": "Wed, 14 Aug 2024 13:00:04 GMT", "If-Modified-Since": "Wed, 14 Aug 2024 13:00:04 GMT",
"User-Agent": "okhttp/3.14.9", "User-Agent": "okhttp/3.14.9",
}; };
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { axios } = providerContext; var _b, _c, _d, _e;
const res = await axios.get(link, { headers }); try {
const resData = res.data; const { axios } = providerContext;
const jsonStart = resData?.indexOf("{"); const res = yield axios.get(link, { headers });
const jsonEnd = resData?.lastIndexOf("}") + 1; const resData = res.data;
const data = JSON?.parse(resData?.substring(jsonStart, jsonEnd))?.title const jsonStart = resData === null || resData === void 0 ? void 0 : resData.indexOf("{");
? JSON?.parse(resData?.substring(jsonStart, jsonEnd)) const jsonEnd = (resData === null || resData === void 0 ? void 0 : resData.lastIndexOf("}")) + 1;
: resData; const data = ((_b = JSON === null || JSON === void 0 ? void 0 : JSON.parse(resData === null || resData === void 0 ? void 0 : resData.substring(jsonStart, jsonEnd))) === null || _b === void 0 ? void 0 : _b.title)
const title = data?.title || ""; ? JSON === null || JSON === void 0 ? void 0 : JSON.parse(resData === null || resData === void 0 ? void 0 : resData.substring(jsonStart, jsonEnd))
const synopsis = data?.description || ""; : resData;
const image = data?.poster_url || ""; const title = (data === null || data === void 0 ? void 0 : data.title) || "";
const cast = data?.cast || []; const synopsis = (data === null || data === void 0 ? void 0 : data.description) || "";
const rating = data?.imdb_rating || ""; const image = (data === null || data === void 0 ? void 0 : data.poster_url) || "";
const type = Number(data?.is_tvseries) ? "series" : "movie"; const cast = (data === null || data === void 0 ? void 0 : data.cast) || [];
const tags = data?.genre?.map((genre) => genre?.name) || []; const rating = (data === null || data === void 0 ? void 0 : data.imdb_rating) || "";
const links = []; const type = Number(data === null || data === void 0 ? void 0 : data.is_tvseries) ? "series" : "movie";
if (type === "series") { const tags = ((_c = data === null || data === void 0 ? void 0 : data.genre) === null || _c === void 0 ? void 0 : _c.map((genre) => genre === null || genre === void 0 ? void 0 : genre.name)) || [];
data?.season?.map((season) => { const links = [];
const title = season?.seasons_name || ""; if (type === "series") {
const directLinks = season?.episodes?.map((episode) => ({ (_d = data === null || data === void 0 ? void 0 : data.season) === null || _d === void 0 ? void 0 : _d.map((season) => {
title: episode?.episodes_name, var _a;
link: episode?.file_url, const title = (season === null || season === void 0 ? void 0 : season.seasons_name) || "";
})) || []; const directLinks = ((_a = season === null || season === void 0 ? void 0 : season.episodes) === null || _a === void 0 ? void 0 : _a.map((episode) => ({
links.push({ title: episode === null || episode === void 0 ? void 0 : episode.episodes_name,
title: title, link: episode === null || episode === void 0 ? void 0 : episode.file_url,
directLinks: directLinks, }))) || [];
links.push({
title: title,
directLinks: directLinks,
});
}); });
}); }
} else {
else { (_e = data === null || data === void 0 ? void 0 : data.videos) === null || _e === void 0 ? void 0 : _e.map((video) => {
data?.videos?.map((video) => { links.push({
links.push({ title: title + " " + (video === null || video === void 0 ? void 0 : video.label),
title: title + " " + video?.label, directLinks: [
directLinks: [ {
{ title: "Play",
title: "Play", link: video === null || video === void 0 ? void 0 : video.file_url,
link: video?.file_url, },
}, ],
], });
}); });
}); }
return {
image: (image === null || image === void 0 ? void 0 : image.includes("https")) ? image : image === null || image === void 0 ? void 0 : image.replace("http", "https"),
synopsis: synopsis,
title: title,
rating: rating,
imdbId: "",
cast: cast,
tags: tags,
type: type,
linkList: links,
};
} }
return { catch (err) {
image: image?.includes("https") ? image : image?.replace("http", "https"), console.error(err);
synopsis: synopsis, return {
title: title, title: "",
rating: rating, synopsis: "",
imdbId: "", image: "",
cast: cast, imdbId: "",
tags: tags, type: "movie",
type: type, linkList: [],
linkList: links, };
}; }
} });
catch (err) {
console.error(err);
return {
title: "",
synopsis: "",
image: "",
imdbId: "",
type: "movie",
linkList: [],
};
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

246
dist/dooflix/posts.js vendored
View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const headers = { const headers = {
@@ -8,133 +17,138 @@ const headers = {
"If-Modified-Since": "Wed, 14 Aug 2024 13:00:04 GMT", "If-Modified-Since": "Wed, 14 Aug 2024 13:00:04 GMT",
"User-Agent": "okhttp/3.14.9", "User-Agent": "okhttp/3.14.9",
}; };
const getPosts = async function ({ filter, page, signal, providerContext, }) { const getPosts = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) {
const { axios, getBaseUrl } = providerContext;
const baseUrl = await getBaseUrl("dooflix");
const catalog = [];
const url = `${baseUrl + filter + `?page=${page}`}`;
const res = await axios.get(url, { headers, signal });
const resData = res.data;
if (!resData || typeof resData !== "string") {
console.warn("Unexpected response format from dooflix API");
return [];
}
let data;
try { try {
const jsonStart = resData.indexOf("["); const { axios, getBaseUrl } = providerContext;
const jsonEnd = resData.lastIndexOf("]") + 1; const baseUrl = yield getBaseUrl("dooflix");
if (jsonStart === -1 || jsonEnd <= jsonStart) { const catalog = [];
// If we can't find valid JSON array markers, try parsing the entire response const url = `${baseUrl + filter + `?page=${page}`}`;
data = JSON.parse(resData); const res = yield axios.get(url, { headers, signal });
const resData = res.data;
if (!resData || typeof resData !== "string") {
console.warn("Unexpected response format from dooflix API");
return [];
} }
else { let data;
const jsonSubstring = resData.substring(jsonStart, jsonEnd); try {
const parsedArray = JSON.parse(jsonSubstring); const jsonStart = resData.indexOf("[");
data = parsedArray.length > 0 ? parsedArray : resData; const jsonEnd = resData.lastIndexOf("]") + 1;
if (jsonStart === -1 || jsonEnd <= jsonStart) {
// If we can't find valid JSON array markers, try parsing the entire response
data = JSON.parse(resData);
}
else {
const jsonSubstring = resData.substring(jsonStart, jsonEnd);
const parsedArray = JSON.parse(jsonSubstring);
data = parsedArray.length > 0 ? parsedArray : resData;
}
} }
} catch (parseError) {
catch (parseError) { console.error("Error parsing dooflix response:", parseError);
console.error("Error parsing dooflix response:", parseError); return [];
return []; }
} if (!Array.isArray(data)) {
if (!Array.isArray(data)) { console.warn("Unexpected data format from dooflix API");
console.warn("Unexpected data format from dooflix API"); return [];
return []; }
} data.forEach((result) => {
data.forEach((result) => { const id = result === null || result === void 0 ? void 0 : result.videos_id;
const id = result?.videos_id; if (!id)
if (!id) return;
return; const type = !(result === null || result === void 0 ? void 0 : result.is_tvseries) ? "tvseries" : "movie";
const type = !result?.is_tvseries ? "tvseries" : "movie"; const link = `${baseUrl}/rest-api//v130/single_details?type=${type}&id=${id}`;
const link = `${baseUrl}/rest-api//v130/single_details?type=${type}&id=${id}`; const thumbnailUrl = result === null || result === void 0 ? void 0 : result.thumbnail_url;
const thumbnailUrl = result?.thumbnail_url; const image = (thumbnailUrl === null || thumbnailUrl === void 0 ? void 0 : thumbnailUrl.includes("https"))
const image = thumbnailUrl?.includes("https") ? thumbnailUrl
? thumbnailUrl : thumbnailUrl === null || thumbnailUrl === void 0 ? void 0 : thumbnailUrl.replace("http", "https");
: thumbnailUrl?.replace("http", "https"); catalog.push({
catalog.push({ title: (result === null || result === void 0 ? void 0 : result.title) || "",
title: result?.title || "", link,
link, image,
image, });
}); });
}); return catalog;
return catalog; }
} catch (err) {
catch (err) { console.error("dooflix error:", err);
console.error("dooflix error:", err); return [];
return []; }
} });
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, providerContext, signal, }) { const getSearchPosts = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, providerContext, signal, }) {
if (page > 1) { var _b, _c;
return [];
}
const { axios, getBaseUrl } = providerContext;
const catalog = [];
const baseUrl = await getBaseUrl("dooflix");
const url = `${baseUrl}/rest-api//v130/search?q=${searchQuery}&type=movietvserieslive&range_to=0&range_from=0&tv_category_id=0&genre_id=0&country_id=0`;
const res = await axios.get(url, { headers, signal });
const resData = res.data;
if (!resData || typeof resData !== "string") {
console.warn("Unexpected search response format from dooflix API");
return [];
}
let data;
try { try {
const jsonStart = resData.indexOf("{"); if (page > 1) {
const jsonEnd = resData.lastIndexOf("}") + 1; return [];
if (jsonStart === -1 || jsonEnd <= jsonStart) {
data = resData;
} }
else { const { axios, getBaseUrl } = providerContext;
const jsonSubstring = resData.substring(jsonStart, jsonEnd); const catalog = [];
const parsedData = JSON.parse(jsonSubstring); const baseUrl = yield getBaseUrl("dooflix");
data = parsedData?.movie ? parsedData : resData; const url = `${baseUrl}/rest-api//v130/search?q=${searchQuery}&type=movietvserieslive&range_to=0&range_from=0&tv_category_id=0&genre_id=0&country_id=0`;
const res = yield axios.get(url, { headers, signal });
const resData = res.data;
if (!resData || typeof resData !== "string") {
console.warn("Unexpected search response format from dooflix API");
return [];
} }
let data;
try {
const jsonStart = resData.indexOf("{");
const jsonEnd = resData.lastIndexOf("}") + 1;
if (jsonStart === -1 || jsonEnd <= jsonStart) {
data = resData;
}
else {
const jsonSubstring = resData.substring(jsonStart, jsonEnd);
const parsedData = JSON.parse(jsonSubstring);
data = (parsedData === null || parsedData === void 0 ? void 0 : parsedData.movie) ? parsedData : resData;
}
}
catch (parseError) {
console.error("Error parsing dooflix search response:", parseError);
return [];
}
// Process movies
(_b = data === null || data === void 0 ? void 0 : data.movie) === null || _b === void 0 ? void 0 : _b.forEach((result) => {
const id = result === null || result === void 0 ? void 0 : result.videos_id;
if (!id)
return;
const link = `${baseUrl}/rest-api//v130/single_details?type=movie&id=${id}`;
const thumbnailUrl = result === null || result === void 0 ? void 0 : result.thumbnail_url;
const image = (thumbnailUrl === null || thumbnailUrl === void 0 ? void 0 : thumbnailUrl.includes("https"))
? thumbnailUrl
: thumbnailUrl === null || thumbnailUrl === void 0 ? void 0 : thumbnailUrl.replace("http", "https");
catalog.push({
title: (result === null || result === void 0 ? void 0 : result.title) || "",
link,
image,
});
});
// Process TV series
(_c = data === null || data === void 0 ? void 0 : data.tvseries) === null || _c === void 0 ? void 0 : _c.forEach((result) => {
const id = result === null || result === void 0 ? void 0 : result.videos_id;
if (!id)
return;
const link = `${baseUrl}/rest-api//v130/single_details?type=tvseries&id=${id}`;
const thumbnailUrl = result === null || result === void 0 ? void 0 : result.thumbnail_url;
const image = (thumbnailUrl === null || thumbnailUrl === void 0 ? void 0 : thumbnailUrl.includes("https"))
? thumbnailUrl
: thumbnailUrl === null || thumbnailUrl === void 0 ? void 0 : thumbnailUrl.replace("http", "https");
catalog.push({
title: (result === null || result === void 0 ? void 0 : result.title) || "",
link,
image,
});
});
return catalog;
} }
catch (parseError) { catch (error) {
console.error("Error parsing dooflix search response:", parseError); console.error("dooflix search error:", error);
return []; return [];
} }
// Process movies });
data?.movie?.forEach((result) => {
const id = result?.videos_id;
if (!id)
return;
const link = `${baseUrl}/rest-api//v130/single_details?type=movie&id=${id}`;
const thumbnailUrl = result?.thumbnail_url;
const image = thumbnailUrl?.includes("https")
? thumbnailUrl
: thumbnailUrl?.replace("http", "https");
catalog.push({
title: result?.title || "",
link,
image,
});
});
// Process TV series
data?.tvseries?.forEach((result) => {
const id = result?.videos_id;
if (!id)
return;
const link = `${baseUrl}/rest-api//v130/single_details?type=tvseries&id=${id}`;
const thumbnailUrl = result?.thumbnail_url;
const image = thumbnailUrl?.includes("https")
? thumbnailUrl
: thumbnailUrl?.replace("http", "https");
catalog.push({
title: result?.title || "",
link,
image,
});
});
return catalog;
}
catch (error) {
console.error("dooflix search error:", error);
return [];
}
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;

View File

@@ -1,26 +1,37 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const getStream = async function ({ link, }) { const getStream = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, }) {
const streams = []; try {
streams.push({ const streams = [];
server: "Dooflix", streams.push({
link: link, server: "Dooflix",
type: "m3u8", link: link,
headers: { type: "m3u8",
Connection: "Keep-Alive", headers: {
"User-Agent": "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.37", Connection: "Keep-Alive",
Referer: "https://molop.art/", "User-Agent": "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.37",
Cookie: "cf_clearance=M2_2Hy4lKRy_ruRX3dzOgm3iho1FHe2DUC1lq28BUtI-1737377622-1.2.1.1-6R8RaH94._H2BuNuotsjTZ3fAF6cLwPII0guemu9A5Xa46lpCJPuELycojdREwoonYS2kRTYcZ9_1c4h4epi2LtDvMM9jIoOZKE9pIdWa30peM1hRMpvffTjGUCraHsJNCJez8S_QZ6XkkdP7GeQ5iwiYaI6Grp6qSJWoq0Hj8lS7EITZ1LzyrALI6iLlYjgLmgLGa1VuhORWJBN8ZxrJIZ_ba_pqbrR9fjnyToqxZ0XQaZfk1d3rZyNWoZUjI98GoAxVjnKtcBQQG6b2jYPJuMbbYraGoa54N7E7BR__7o", Referer: "https://molop.art/",
}, Cookie: "cf_clearance=M2_2Hy4lKRy_ruRX3dzOgm3iho1FHe2DUC1lq28BUtI-1737377622-1.2.1.1-6R8RaH94._H2BuNuotsjTZ3fAF6cLwPII0guemu9A5Xa46lpCJPuELycojdREwoonYS2kRTYcZ9_1c4h4epi2LtDvMM9jIoOZKE9pIdWa30peM1hRMpvffTjGUCraHsJNCJez8S_QZ6XkkdP7GeQ5iwiYaI6Grp6qSJWoq0Hj8lS7EITZ1LzyrALI6iLlYjgLmgLGa1VuhORWJBN8ZxrJIZ_ba_pqbrR9fjnyToqxZ0XQaZfk1d3rZyNWoZUjI98GoAxVjnKtcBQQG6b2jYPJuMbbYraGoa54N7E7BR__7o",
}); },
console.log("doo streams", streams); });
return streams; console.log("doo streams", streams);
} return streams;
catch (err) { }
console.error(err); catch (err) {
return []; console.error(err);
} return [];
}
});
}; };
exports.getStream = getStream; exports.getStream = getStream;

View File

@@ -1,34 +1,45 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getEpisodes = void 0; exports.getEpisodes = void 0;
const getEpisodes = async function ({ url, providerContext, }) { const getEpisodes = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) {
const { axios, cheerio } = providerContext; try {
const res = await axios.get(url); const { axios, cheerio } = providerContext;
const html = res.data; const res = yield axios.get(url);
let $ = cheerio.load(html); const html = res.data;
const episodeLinks = []; let $ = cheerio.load(html);
$('a:contains("HubCloud")').map((i, element) => { const episodeLinks = [];
const title = $(element).parent().prev().text(); $('a:contains("HubCloud")').map((i, element) => {
const link = $(element).attr("href"); const title = $(element).parent().prev().text();
if (link && (title.includes("Ep") || title.includes("Download"))) { const link = $(element).attr("href");
episodeLinks.push({ if (link && (title.includes("Ep") || title.includes("Download"))) {
title: title.includes("Download") ? "Play" : title, episodeLinks.push({
link, title: title.includes("Download") ? "Play" : title,
}); link,
} });
}); }
// console.log(episodeLinks); });
return episodeLinks; // console.log(episodeLinks);
} return episodeLinks;
catch (err) { }
console.error(err); catch (err) {
return [ console.error(err);
{ return [
title: "Server 1", {
link: url, title: "Server 1",
}, link: url,
]; },
} ];
}
});
}; };
exports.getEpisodes = getEpisodes; exports.getEpisodes = getEpisodes;

147
dist/drive/meta.js vendored
View File

@@ -1,72 +1,85 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { axios, cheerio } = providerContext; var _b;
const url = link; try {
const res = await axios.get(url); const { axios, cheerio } = providerContext;
const data = res.data; const url = link;
const $ = cheerio.load(data); const res = yield axios.get(url);
const type = $(".left-wrapper") const data = res.data;
.text() const $ = cheerio.load(data);
.toLocaleLowerCase() const type = $(".left-wrapper")
.includes("movie name") .text()
? "movie" .toLocaleLowerCase()
: "series"; .includes("movie name")
const imdbId = $('a:contains("IMDb")').attr("href")?.split("/")[4] || ""; ? "movie"
const title = $(".left-wrapper").find('strong:contains("Name")').next().text() || : "series";
$(".left-wrapper") const imdbId = ((_b = $('a:contains("IMDb")').attr("href")) === null || _b === void 0 ? void 0 : _b.split("/")[4]) || "";
.find('strong:contains("Name"),h5:contains("Name")') const title = $(".left-wrapper").find('strong:contains("Name")').next().text() ||
.find("span:first") $(".left-wrapper")
.text(); .find('strong:contains("Name"),h5:contains("Name")')
const synopsis = $(".left-wrapper") .find("span:first")
.find('h2:contains("Storyline"),h3:contains("Storyline"),h5:contains("Storyline"),h4:contains("Storyline"),h4:contains("STORYLINE")') .text();
.next() const synopsis = $(".left-wrapper")
.text() || .find('h2:contains("Storyline"),h3:contains("Storyline"),h5:contains("Storyline"),h4:contains("Storyline"),h4:contains("STORYLINE")')
$(".ipc-html-content-inner-div").text() || .next()
""; .text() ||
const image = $("img.entered.lazyloaded,img.entered,img.litespeed-loaded").attr("src") || $(".ipc-html-content-inner-div").text() ||
$("img.aligncenter").attr("src") || "";
""; const image = $("img.entered.lazyloaded,img.entered,img.litespeed-loaded").attr("src") ||
// Links $("img.aligncenter").attr("src") ||
const links = []; "";
$('a:contains("1080")a:not(:contains("Zip")),a:contains("720")a:not(:contains("Zip")),a:contains("480")a:not(:contains("Zip")),a:contains("2160")a:not(:contains("Zip")),a:contains("4k")a:not(:contains("Zip"))').map((i, element) => { // Links
const title = $(element).parent("h5").prev().text(); const links = [];
const episodesLink = $(element).attr("href"); $('a:contains("1080")a:not(:contains("Zip")),a:contains("720")a:not(:contains("Zip")),a:contains("480")a:not(:contains("Zip")),a:contains("2160")a:not(:contains("Zip")),a:contains("4k")a:not(:contains("Zip"))').map((i, element) => {
const quality = title.match(/\b(480p|720p|1080p|2160p)\b/i)?.[0] || ""; var _a;
if (episodesLink && title) { const title = $(element).parent("h5").prev().text();
links.push({ const episodesLink = $(element).attr("href");
title, const quality = ((_a = title.match(/\b(480p|720p|1080p|2160p)\b/i)) === null || _a === void 0 ? void 0 : _a[0]) || "";
episodesLink: type === "series" ? episodesLink : "", if (episodesLink && title) {
directLinks: type === "movie" links.push({
? [{ title: "Movie", link: episodesLink, type: "movie" }] title,
: [], episodesLink: type === "series" ? episodesLink : "",
quality: quality, directLinks: type === "movie"
}); ? [{ title: "Movie", link: episodesLink, type: "movie" }]
} : [],
}); quality: quality,
// console.log('drive meta', title, synopsis, image, imdbId, type, links); });
console.log("drive meta", links, type); }
return { });
title, // console.log('drive meta', title, synopsis, image, imdbId, type, links);
synopsis, console.log("drive meta", links, type);
image, return {
imdbId, title,
type, synopsis,
linkList: links, image,
}; imdbId,
} type,
catch (err) { linkList: links,
console.error(err); };
return { }
title: "", catch (err) {
synopsis: "", console.error(err);
image: "", return {
imdbId: "", title: "",
type: "movie", synopsis: "",
linkList: [], image: "",
}; imdbId: "",
} type: "movie",
linkList: [],
};
}
});
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

89
dist/drive/posts.js vendored
View File

@@ -1,45 +1,60 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, page, signal, providerContext, }) { const getPosts = function (_a) {
const { getBaseUrl } = providerContext; return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("drive"); const { getBaseUrl } = providerContext;
const url = `${baseUrl + filter}/page/${page}/`; const baseUrl = yield getBaseUrl("drive");
return posts({ url, signal, providerContext }); const url = `${baseUrl + filter}/page/${page}/`;
return posts({ url, signal, providerContext });
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, signal, providerContext, }) { const getSearchPosts = function (_a) {
const { getBaseUrl } = providerContext; return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("drive"); const { getBaseUrl } = providerContext;
const url = `${baseUrl}page/${page}/?s=${searchQuery}`; const baseUrl = yield getBaseUrl("drive");
return posts({ url, signal, providerContext }); const url = `${baseUrl}page/${page}/?s=${searchQuery}`;
return posts({ url, signal, providerContext });
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts({ url, signal, providerContext, }) { function posts(_a) {
try { return __awaiter(this, arguments, void 0, function* ({ url, signal, providerContext, }) {
const { cheerio } = providerContext; try {
const res = await fetch(url, { signal }); const { cheerio } = providerContext;
const data = await res.text(); const res = yield fetch(url, { signal });
const $ = cheerio.load(data); const data = yield res.text();
const catalog = []; const $ = cheerio.load(data);
$(".recent-movies") const catalog = [];
.children() $(".recent-movies")
.map((i, element) => { .children()
const title = $(element).find("figure").find("img").attr("alt"); .map((i, element) => {
const link = $(element).find("a").attr("href"); const title = $(element).find("figure").find("img").attr("alt");
const image = $(element).find("figure").find("img").attr("src"); const link = $(element).find("a").attr("href");
if (title && link && image) { const image = $(element).find("figure").find("img").attr("src");
catalog.push({ if (title && link && image) {
title: title.replace("Download", "").trim(), catalog.push({
link: link, title: title.replace("Download", "").trim(),
image: image, link: link,
}); image: image,
} });
}); }
return catalog; });
} return catalog;
catch (err) { }
console.error("drive error ", err); catch (err) {
return []; console.error("drive error ", err);
} return [];
}
});
} }

64
dist/drive/stream.js vendored
View File

@@ -1,33 +1,45 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const getStream = async function ({ link: url, type, signal, providerContext, }) { const getStream = function (_a) {
const headers = providerContext.commonHeaders; return __awaiter(this, arguments, void 0, function* ({ link: url, type, signal, providerContext, }) {
try { var _b, _c;
if (type === "movie") { const headers = providerContext.commonHeaders;
const res = await providerContext.axios.get(url, { headers }); try {
const html = res.data; if (type === "movie") {
const $ = providerContext.cheerio.load(html); const res = yield providerContext.axios.get(url, { headers });
const link = $('a:contains("HubCloud")').attr("href"); const html = res.data;
url = link || url; const $ = providerContext.cheerio.load(html);
const link = $('a:contains("HubCloud")').attr("href");
url = link || url;
}
const res = yield providerContext.axios.get(url, { headers });
let redirectUrl = (_b = res.data.match(/<meta\s+http-equiv="refresh"\s+content="[^"]*?;\s*url=([^"]+)"\s*\/?>/i)) === null || _b === void 0 ? void 0 : _b[1];
if (url.includes("/archives/")) {
redirectUrl = (_c = res.data.match(/<a\s+[^>]*href="(https:\/\/hubcloud\.[^\/]+\/[^"]+)"/i)) === null || _c === void 0 ? void 0 : _c[1];
}
if (!redirectUrl) {
return yield providerContext.extractors.hubcloudExtracter(url, signal);
}
const res2 = yield providerContext.axios.get(redirectUrl, { headers });
const data = res2.data;
const $ = providerContext.cheerio.load(data);
const hubcloudLink = $(".fa-file-download").parent().attr("href");
return yield providerContext.extractors.hubcloudExtracter((hubcloudLink === null || hubcloudLink === void 0 ? void 0 : hubcloudLink.includes("https://hubcloud")) ? hubcloudLink : redirectUrl, signal);
} }
const res = await providerContext.axios.get(url, { headers }); catch (err) {
let redirectUrl = res.data.match(/<meta\s+http-equiv="refresh"\s+content="[^"]*?;\s*url=([^"]+)"\s*\/?>/i)?.[1]; console.error("Movies Drive err", err);
if (url.includes("/archives/")) { return [];
redirectUrl = res.data.match(/<a\s+[^>]*href="(https:\/\/hubcloud\.[^\/]+\/[^"]+)"/i)?.[1];
} }
if (!redirectUrl) { });
return await providerContext.extractors.hubcloudExtracter(url, signal);
}
const res2 = await providerContext.axios.get(redirectUrl, { headers });
const data = res2.data;
const $ = providerContext.cheerio.load(data);
const hubcloudLink = $(".fa-file-download").parent().attr("href");
return await providerContext.extractors.hubcloudExtracter(hubcloudLink?.includes("https://hubcloud") ? hubcloudLink : redirectUrl, signal);
}
catch (err) {
console.error("Movies Drive err", err);
return [];
}
}; };
exports.getStream = getStream; exports.getStream = getStream;

View File

@@ -1,33 +1,43 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getEpisodes = void 0; exports.getEpisodes = void 0;
const getEpisodes = async function ({ url, providerContext, }) { const getEpisodes = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) {
const headers = providerContext.commonHeaders; try {
const { axios, cheerio } = providerContext; const headers = providerContext.commonHeaders;
const res = await axios.get(url, { headers }); const { axios, cheerio } = providerContext;
const data = res.data; const res = yield axios.get(url, { headers });
const $ = cheerio.load(data); const data = res.data;
const episodeLinks = []; const $ = cheerio.load(data);
$(".dlink.dl").map((i, element) => { const episodeLinks = [];
const title = $(element) $(".dlink.dl").map((i, element) => {
.find("a") var _a, _b;
.text() const title = (_b = (_a = $(element)
?.replace("Download", "") .find("a")
?.trim(); .text()) === null || _a === void 0 ? void 0 : _a.replace("Download", "")) === null || _b === void 0 ? void 0 : _b.trim();
const link = $(element).find("a").attr("href"); const link = $(element).find("a").attr("href");
if (title && link) { if (title && link) {
episodeLinks.push({ episodeLinks.push({
title, title,
link, link,
}); });
} }
}); });
return episodeLinks; return episodeLinks;
} }
catch (err) { catch (err) {
console.error("cl episode links", err); console.error("cl episode links", err);
return []; return [];
} }
});
}; };
exports.getEpisodes = getEpisodes; exports.getEpisodes = getEpisodes;

103
dist/filmyfly/meta.js vendored
View File

@@ -1,52 +1,63 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { axios, cheerio, commonHeaders: headers } = providerContext; try {
const url = link; const { axios, cheerio, commonHeaders: headers } = providerContext;
const res = await axios.get(url, { headers }); const url = link;
const data = res.data; const res = yield axios.get(url, { headers });
const $ = cheerio.load(data); const data = res.data;
const type = url.includes("tvshows") ? "series" : "movie"; const $ = cheerio.load(data);
const imdbId = ""; const type = url.includes("tvshows") ? "series" : "movie";
const title = $('.fname:contains("Name")').find(".colora").text().trim(); const imdbId = "";
const image = $(".ss").find("img").attr("src") || ""; const title = $('.fname:contains("Name")').find(".colora").text().trim();
const synopsis = $('.fname:contains("Description")') const image = $(".ss").find("img").attr("src") || "";
.find(".colorg") const synopsis = $('.fname:contains("Description")')
.text() .find(".colorg")
.trim(); .text()
const tags = $('.fname:contains("Genre")').find(".colorb").text().split(",") || []; .trim();
const rating = ""; const tags = $('.fname:contains("Genre")').find(".colorb").text().split(",") || [];
const links = []; const rating = "";
const downloadLink = $(".dlbtn").find("a").attr("href"); const links = [];
if (downloadLink) { const downloadLink = $(".dlbtn").find("a").attr("href");
links.push({ if (downloadLink) {
title: title, links.push({
episodesLink: downloadLink, title: title,
}); episodesLink: downloadLink,
});
}
return {
title,
tags,
rating,
synopsis,
image,
imdbId,
type,
linkList: links,
};
} }
return { catch (err) {
title, console.error(err);
tags, return {
rating, title: "",
synopsis, synopsis: "",
image, image: "",
imdbId, imdbId: "",
type, type: "movie",
linkList: links, linkList: [],
}; };
} }
catch (err) { });
console.error(err);
return {
title: "",
synopsis: "",
image: "",
imdbId: "",
type: "movie",
linkList: [],
};
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

View File

@@ -1,46 +1,61 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, page, signal, providerContext, }) { const getPosts = function (_a) {
const { getBaseUrl } = providerContext; return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("filmyfly"); const { getBaseUrl } = providerContext;
const url = `${baseUrl + filter}/${page}`; const baseUrl = yield getBaseUrl("filmyfly");
return posts({ url, signal, baseUrl, providerContext }); const url = `${baseUrl + filter}/${page}`;
return posts({ url, signal, baseUrl, providerContext });
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, signal, providerContext, }) { const getSearchPosts = function (_a) {
const { getBaseUrl } = providerContext; return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("filmyfly"); const { getBaseUrl } = providerContext;
const url = `${baseUrl}/site-1.html?to-search=${searchQuery}`; const baseUrl = yield getBaseUrl("filmyfly");
if (page > 1) { const url = `${baseUrl}/site-1.html?to-search=${searchQuery}`;
return []; if (page > 1) {
} return [];
return posts({ url, signal, baseUrl, providerContext }); }
return posts({ url, signal, baseUrl, providerContext });
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts({ url, signal, baseUrl, providerContext, }) { function posts(_a) {
try { return __awaiter(this, arguments, void 0, function* ({ url, signal, baseUrl, providerContext, }) {
const { cheerio, commonHeaders: headers } = providerContext; try {
const res = await fetch(url, { headers, signal }); const { cheerio, commonHeaders: headers } = providerContext;
const data = await res.text(); const res = yield fetch(url, { headers, signal });
const $ = cheerio.load(data); const data = yield res.text();
const catalog = []; const $ = cheerio.load(data);
$(".A2,.A10,.fl").map((i, element) => { const catalog = [];
const title = $(element).find("a").eq(1).text() || $(element).find("b").text(); $(".A2,.A10,.fl").map((i, element) => {
const link = $(element).find("a").attr("href"); const title = $(element).find("a").eq(1).text() || $(element).find("b").text();
const image = $(element).find("img").attr("src"); const link = $(element).find("a").attr("href");
if (title && link && image) { const image = $(element).find("img").attr("src");
catalog.push({ if (title && link && image) {
title: title, catalog.push({
link: baseUrl + link, title: title,
image: image, link: baseUrl + link,
}); image: image,
} });
}); }
return catalog; });
} return catalog;
catch (err) { }
console.error("ff error ", err); catch (err) {
return []; console.error("ff error ", err);
} return [];
}
});
} }

View File

@@ -1,40 +1,51 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const getStream = async function ({ link, signal, providerContext, }) { const getStream = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, signal, providerContext, }) {
const res = await providerContext.axios.get(link, { signal }); try {
const data = res.data; const res = yield providerContext.axios.get(link, { signal });
const $ = providerContext.cheerio.load(data); const data = res.data;
const streams = []; const $ = providerContext.cheerio.load(data);
const elements = $(".button2,.button1,.button3,.button4,.button").toArray(); const streams = [];
const promises = elements.map(async (element) => { const elements = $(".button2,.button1,.button3,.button4,.button").toArray();
const title = $(element).text(); const promises = elements.map((element) => __awaiter(this, void 0, void 0, function* () {
let link = $(element).attr("href"); const title = $(element).text();
if (title.includes("GDFLIX") && link) { let link = $(element).attr("href");
const gdLinks = await providerContext.extractors.gdFlixExtracter(link, signal); if (title.includes("GDFLIX") && link) {
streams.push(...gdLinks); const gdLinks = yield providerContext.extractors.gdFlixExtracter(link, signal);
} streams.push(...gdLinks);
const alreadyAdded = streams.find((s) => s.link === link); }
if (title && const alreadyAdded = streams.find((s) => s.link === link);
link && if (title &&
!title.includes("Watch") && link &&
!title.includes("Login") && !title.includes("Watch") &&
!title.includes("GoFile") && !title.includes("Login") &&
!alreadyAdded) { !title.includes("GoFile") &&
streams.push({ !alreadyAdded) {
server: title, streams.push({
link: link, server: title,
type: "mkv", link: link,
}); type: "mkv",
} });
}); }
await Promise.all(promises); }));
return streams; yield Promise.all(promises);
} return streams;
catch (err) { }
console.error(err); catch (err) {
return []; console.error(err);
} return [];
}
});
}; };
exports.getStream = getStream; exports.getStream = getStream;

110
dist/flixhq/meta.js vendored
View File

@@ -1,56 +1,64 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link: id, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link: id, providerContext, }) {
const { axios, getBaseUrl } = providerContext; try {
const baseUrl = await getBaseUrl("consumet"); const { axios, getBaseUrl } = providerContext;
const url = `${baseUrl}/movies/flixhq/info?id=` + id; const baseUrl = yield getBaseUrl("consumet");
const res = await axios.get(url); const url = `${baseUrl}/movies/flixhq/info?id=` + id;
const data = res.data; const res = yield axios.get(url);
const meta = { const data = res.data;
title: data.title, const meta = {
synopsis: data.description.replace(/<[^>]*>?/gm, "").trim(), title: data.title,
image: data.cover, synopsis: data.description.replace(/<[^>]*>?/gm, "").trim(),
cast: data.casts, image: data.cover,
rating: data.rating, cast: data.casts,
tags: [data?.type, data?.duration, data.releaseDate.split("-")[0]], rating: data.rating,
imdbId: "", tags: [data === null || data === void 0 ? void 0 : data.type, data === null || data === void 0 ? void 0 : data.duration, data.releaseDate.split("-")[0]],
type: data.episodes.length > 1 ? "series" : "movie", imdbId: "",
}; type: data.episodes.length > 1 ? "series" : "movie",
const links = []; };
data.episodes.forEach((episode) => { const links = [];
const title = episode?.number data.episodes.forEach((episode) => {
? "Season-" + episode?.season + " Ep-" + episode.number const title = (episode === null || episode === void 0 ? void 0 : episode.number)
: episode.title; ? "Season-" + (episode === null || episode === void 0 ? void 0 : episode.season) + " Ep-" + episode.number
const link = episode.id + "*" + data.id; : episode.title;
if (link && title) { const link = episode.id + "*" + data.id;
links.push({ if (link && title) {
title, links.push({
link, title,
}); link,
} });
}); }
return { });
...meta, return Object.assign(Object.assign({}, meta), { linkList: [
linkList: [ {
{ title: meta.title,
title: meta.title, directLinks: links,
directLinks: links, },
}, ] });
], }
}; catch (err) {
} console.error(err);
catch (err) { return {
console.error(err); title: "",
return { synopsis: "",
title: "", image: "",
synopsis: "", imdbId: "",
image: "", type: "movie",
imdbId: "", linkList: [],
type: "movie", };
linkList: [], }
}; });
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

88
dist/flixhq/posts.js vendored
View File

@@ -1,44 +1,60 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, signal, providerContext, }) { const getPosts = function (_a) {
const { getBaseUrl } = providerContext; return __awaiter(this, arguments, void 0, function* ({ filter, signal, providerContext, }) {
const urlRes = await getBaseUrl("consumet"); const { getBaseUrl } = providerContext;
const baseUrl = urlRes + "/movies/flixhq"; const urlRes = yield getBaseUrl("consumet");
const url = `${baseUrl + filter}`; const baseUrl = urlRes + "/movies/flixhq";
return posts({ url, signal, providerContext }); const url = `${baseUrl + filter}`;
return posts({ url, signal, providerContext });
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, signal, providerContext, }) { const getSearchPosts = function (_a) {
const { getBaseUrl } = providerContext; return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) {
const urlRes = await getBaseUrl("consumet"); const { getBaseUrl } = providerContext;
const baseUrl = urlRes + "/movies/flixhq"; const urlRes = yield getBaseUrl("consumet");
const url = `${baseUrl}/${searchQuery}?page=${page}`; const baseUrl = urlRes + "/movies/flixhq";
return posts({ url, signal, providerContext }); const url = `${baseUrl}/${searchQuery}?page=${page}`;
return posts({ url, signal, providerContext });
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts({ url, signal, providerContext, }) { function posts(_a) {
try { return __awaiter(this, arguments, void 0, function* ({ url, signal, providerContext, }) {
const { axios } = providerContext; var _b;
const res = await axios.get(url, { signal }); try {
const data = res.data?.results || res.data; const { axios } = providerContext;
const catalog = []; const res = yield axios.get(url, { signal });
data?.map((element) => { const data = ((_b = res.data) === null || _b === void 0 ? void 0 : _b.results) || res.data;
const title = element.title; const catalog = [];
const link = element.id; data === null || data === void 0 ? void 0 : data.map((element) => {
const image = element.image; const title = element.title;
if (title && link && image) { const link = element.id;
catalog.push({ const image = element.image;
title: title, if (title && link && image) {
link: link, catalog.push({
image: image, title: title,
}); link: link,
} image: image,
}); });
return catalog; }
} });
catch (err) { return catalog;
console.error("flixhq error ", err); }
return []; catch (err) {
} console.error("flixhq error ", err);
return [];
}
});
} }

102
dist/flixhq/stream.js vendored
View File

@@ -1,55 +1,69 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const types_1 = require("../types"); const types_1 = require("../types");
const getStream = async function ({ link: id, providerContext, }) { const getStream = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link: id, providerContext, }) {
const { getBaseUrl } = providerContext; var _b;
const episodeId = id.split("*")[0]; try {
const mediaId = id.split("*")[1]; const { getBaseUrl } = providerContext;
const baseUrl = await getBaseUrl("consumet"); const episodeId = id.split("*")[0];
const serverUrl = `${baseUrl}/movies/flixhq/servers?episodeId=${episodeId}&mediaId=${mediaId}`; const mediaId = id.split("*")[1];
const res = await fetch(serverUrl); const baseUrl = yield getBaseUrl("consumet");
const servers = await res.json(); const serverUrl = `${baseUrl}/movies/flixhq/servers?episodeId=${episodeId}&mediaId=${mediaId}`;
const streamLinks = []; const res = yield fetch(serverUrl);
for (const server of servers) { const servers = yield res.json();
const streamUrl = `${baseUrl}/movies/flixhq/watch?server=` + const streamLinks = [];
server.name + for (const server of servers) {
"&episodeId=" + const streamUrl = `${baseUrl}/movies/flixhq/watch?server=` +
episodeId + server.name +
"&mediaId=" + "&episodeId=" +
mediaId; episodeId +
const streamRes = await fetch(streamUrl); "&mediaId=" +
const streamData = await streamRes.json(); mediaId;
const subtitles = []; const streamRes = yield fetch(streamUrl);
if (streamData?.sources?.length > 0) { const streamData = yield streamRes.json();
if (streamData.subtitles) { const subtitles = [];
streamData.subtitles.forEach((sub) => { if (((_b = streamData === null || streamData === void 0 ? void 0 : streamData.sources) === null || _b === void 0 ? void 0 : _b.length) > 0) {
subtitles.push({ if (streamData.subtitles) {
language: sub?.lang?.slice(0, 2), streamData.subtitles.forEach((sub) => {
uri: sub?.url, var _a;
type: types_1.TextTrackType.VTT, subtitles.push({
title: sub?.lang, language: (_a = sub === null || sub === void 0 ? void 0 : sub.lang) === null || _a === void 0 ? void 0 : _a.slice(0, 2),
uri: sub === null || sub === void 0 ? void 0 : sub.url,
type: types_1.TextTrackType.VTT,
title: sub === null || sub === void 0 ? void 0 : sub.lang,
});
});
}
streamData.sources.forEach((source) => {
var _a;
streamLinks.push({
server: (server === null || server === void 0 ? void 0 : server.name) +
"-" +
((_a = source === null || source === void 0 ? void 0 : source.quality) === null || _a === void 0 ? void 0 : _a.replace("auto", "MultiQuality")),
link: source.url,
type: source.isM3U8 ? "m3u8" : "mp4",
subtitles: subtitles,
}); });
}); });
} }
streamData.sources.forEach((source) => {
streamLinks.push({
server: server?.name +
"-" +
source?.quality?.replace("auto", "MultiQuality"),
link: source.url,
type: source.isM3U8 ? "m3u8" : "mp4",
subtitles: subtitles,
});
});
} }
return streamLinks;
} }
return streamLinks; catch (err) {
} console.error(err);
catch (err) { return [];
console.error(err); }
return []; });
}
}; };
exports.getStream = getStream; exports.getStream = getStream;

View File

@@ -32,6 +32,15 @@ var __importStar = (this && this.__importStar) || (function () {
return result; return result;
}; };
})(); })();
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) { var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
@@ -40,162 +49,163 @@ exports.gdFlixExtracter = gdFlixExtracter;
const axios_1 = __importDefault(require("axios")); const axios_1 = __importDefault(require("axios"));
const cheerio = __importStar(require("cheerio")); const cheerio = __importStar(require("cheerio"));
const headers_1 = require("./headers"); const headers_1 = require("./headers");
async function gdFlixExtracter(link, signal) { function gdFlixExtracter(link, signal) {
try { return __awaiter(this, void 0, void 0, function* () {
const streamLinks = []; var _a, _b, _c, _d, _e, _f, _g, _h;
const res = await (0, axios_1.default)(`${link}`, { headers: headers_1.headers, signal });
console.log('gdFlixExtracter', link);
const data = res.data;
let $drive = cheerio.load(data);
// handle if redirected to another link
if ($drive('body').attr('onload')?.includes('location.replace')) {
const newLink = $drive('body')
.attr('onload')
?.split("location.replace('")?.[1]
.split("'")?.[0];
console.log('newLink', newLink);
if (newLink) {
const newRes = await axios_1.default.get(newLink, { headers: headers_1.headers, signal });
$drive = cheerio.load(newRes.data);
}
}
// try {
// const resumeBot = $drive('.fab.fa-artstation').prev().attr('href') || '';
// console.log('resumeBot', resumeBot);
// const resumeBotRes = await axios.get(resumeBot, {headers});
// const resumeBotToken = resumeBotRes.data.match(
// /formData\.append\('token', '([a-f0-9]+)'\)/,
// )[1];
// const resumeBotBody = new FormData();
// resumeBotBody.append('token', resumeBotToken);
// const resumeBotPath = resumeBotRes.data.match(
// /fetch\('\/download\?id=([a-zA-Z0-9\/+]+)'/,
// )[1];
// const resumeBotBaseUrl = resumeBot.split('/download')[0];
// // console.log(
// // 'resumeBotPath',
// // resumeBotBaseUrl + '/download?id=' + resumeBotPath,
// // );
// // console.log('resumeBotBody', resumeBotToken);
// const resumeBotDownload = await fetch(
// resumeBotBaseUrl + '/download?id=' + resumeBotPath,
// {
// method: 'POST',
// body: resumeBotBody,
// headers: {
// Referer: resumeBot,
// Cookie: 'PHPSESSID=7e9658ce7c805dab5bbcea9046f7f308',
// },
// },
// );
// const resumeBotDownloadData = await resumeBotDownload.json();
// console.log('resumeBotDownloadData', resumeBotDownloadData.url);
// streamLinks.push({
// server: 'ResumeBot',
// link: resumeBotDownloadData.url,
// type: 'mkv',
// });
// } catch (err) {
// console.log('ResumeBot link not found', err);
// }
/// resume cloud
try { try {
const baseUrl = link.split('/').slice(0, 3).join('/'); const streamLinks = [];
const resumeDrive = $drive('.btn-secondary').attr('href') || ''; const res = yield (0, axios_1.default)(`${link}`, { headers: headers_1.headers, signal });
console.log('resumeDrive', resumeDrive); console.log('gdFlixExtracter', link);
if (resumeDrive.includes('indexbot')) { const data = res.data;
const resumeBotRes = await axios_1.default.get(resumeDrive, { headers: headers_1.headers }); let $drive = cheerio.load(data);
const resumeBotToken = resumeBotRes.data.match(/formData\.append\('token', '([a-f0-9]+)'\)/)[1]; // handle if redirected to another link
const resumeBotBody = new FormData(); if ((_a = $drive('body').attr('onload')) === null || _a === void 0 ? void 0 : _a.includes('location.replace')) {
resumeBotBody.append('token', resumeBotToken); const newLink = (_d = (_c = (_b = $drive('body')
const resumeBotPath = resumeBotRes.data.match(/fetch\('\/download\?id=([a-zA-Z0-9\/+]+)'/)[1]; .attr('onload')) === null || _b === void 0 ? void 0 : _b.split("location.replace('")) === null || _c === void 0 ? void 0 : _c[1].split("'")) === null || _d === void 0 ? void 0 : _d[0];
const resumeBotBaseUrl = resumeDrive.split('/download')[0]; console.log('newLink', newLink);
// console.log( if (newLink) {
// 'resumeBotPath', const newRes = yield axios_1.default.get(newLink, { headers: headers_1.headers, signal });
// resumeBotBaseUrl + '/download?id=' + resumeBotPath, $drive = cheerio.load(newRes.data);
// );
// console.log('resumeBotBody', resumeBotToken);
const resumeBotDownload = await fetch(resumeBotBaseUrl + '/download?id=' + resumeBotPath, {
method: 'POST',
body: resumeBotBody,
headers: {
Referer: resumeDrive,
Cookie: 'PHPSESSID=7e9658ce7c805dab5bbcea9046f7f308',
},
});
const resumeBotDownloadData = await resumeBotDownload.json();
console.log('resumeBotDownloadData', resumeBotDownloadData.url);
streamLinks.push({
server: 'ResumeBot',
link: resumeBotDownloadData.url,
type: 'mkv',
});
}
else {
const url = baseUrl + resumeDrive;
const resumeDriveRes = await axios_1.default.get(url, { headers: headers_1.headers });
const resumeDriveHtml = resumeDriveRes.data;
const $resumeDrive = cheerio.load(resumeDriveHtml);
const resumeLink = $resumeDrive('.btn-success').attr('href');
// console.log('resumeLink', resumeLink);
if (resumeLink) {
streamLinks.push({
server: 'ResumeCloud',
link: resumeLink,
type: 'mkv',
});
} }
} }
} // try {
catch (err) { // const resumeBot = $drive('.fab.fa-artstation').prev().attr('href') || '';
console.log('Resume link not found'); // console.log('resumeBot', resumeBot);
} // const resumeBotRes = await axios.get(resumeBot, {headers});
//instant link // const resumeBotToken = resumeBotRes.data.match(
try { // /formData\.append\('token', '([a-f0-9]+)'\)/,
const seed = $drive('.btn-danger').attr('href') || ''; // )[1];
console.log('seed', seed); // const resumeBotBody = new FormData();
if (!seed.includes('?url=')) { // resumeBotBody.append('token', resumeBotToken);
const newLinkRes = await axios_1.default.head(seed, { headers: headers_1.headers, signal }); // const resumeBotPath = resumeBotRes.data.match(
console.log('newLinkRes', newLinkRes.request?.responseURL); // /fetch\('\/download\?id=([a-zA-Z0-9\/+]+)'/,
const newLink = newLinkRes.request?.responseURL?.split('?url=')?.[1] || seed; // )[1];
streamLinks.push({ server: 'G-Drive', link: newLink, type: 'mkv' }); // const resumeBotBaseUrl = resumeBot.split('/download')[0];
} // // console.log(
else { // // 'resumeBotPath',
const instantToken = seed.split('=')[1]; // // resumeBotBaseUrl + '/download?id=' + resumeBotPath,
// console.log('InstantToken', instantToken); // // );
const InstantFromData = new FormData(); // // console.log('resumeBotBody', resumeBotToken);
InstantFromData.append('keys', instantToken); // const resumeBotDownload = await fetch(
const videoSeedUrl = seed.split('/').slice(0, 3).join('/') + '/api'; // resumeBotBaseUrl + '/download?id=' + resumeBotPath,
// console.log('videoSeedUrl', videoSeedUrl); // {
const instantLinkRes = await fetch(videoSeedUrl, { // method: 'POST',
method: 'POST', // body: resumeBotBody,
body: InstantFromData, // headers: {
headers: { // Referer: resumeBot,
'x-token': videoSeedUrl, // Cookie: 'PHPSESSID=7e9658ce7c805dab5bbcea9046f7f308',
}, // },
}); // },
const instantLinkData = await instantLinkRes.json(); // );
// console.log('instantLinkData', instantLinkData); // const resumeBotDownloadData = await resumeBotDownload.json();
if (instantLinkData.error === false) { // console.log('resumeBotDownloadData', resumeBotDownloadData.url);
const instantLink = instantLinkData.url; // streamLinks.push({
// server: 'ResumeBot',
// link: resumeBotDownloadData.url,
// type: 'mkv',
// });
// } catch (err) {
// console.log('ResumeBot link not found', err);
// }
/// resume cloud
try {
const baseUrl = link.split('/').slice(0, 3).join('/');
const resumeDrive = $drive('.btn-secondary').attr('href') || '';
console.log('resumeDrive', resumeDrive);
if (resumeDrive.includes('indexbot')) {
const resumeBotRes = yield axios_1.default.get(resumeDrive, { headers: headers_1.headers });
const resumeBotToken = resumeBotRes.data.match(/formData\.append\('token', '([a-f0-9]+)'\)/)[1];
const resumeBotBody = new FormData();
resumeBotBody.append('token', resumeBotToken);
const resumeBotPath = resumeBotRes.data.match(/fetch\('\/download\?id=([a-zA-Z0-9\/+]+)'/)[1];
const resumeBotBaseUrl = resumeDrive.split('/download')[0];
// console.log(
// 'resumeBotPath',
// resumeBotBaseUrl + '/download?id=' + resumeBotPath,
// );
// console.log('resumeBotBody', resumeBotToken);
const resumeBotDownload = yield fetch(resumeBotBaseUrl + '/download?id=' + resumeBotPath, {
method: 'POST',
body: resumeBotBody,
headers: {
Referer: resumeDrive,
Cookie: 'PHPSESSID=7e9658ce7c805dab5bbcea9046f7f308',
},
});
const resumeBotDownloadData = yield resumeBotDownload.json();
console.log('resumeBotDownloadData', resumeBotDownloadData.url);
streamLinks.push({ streamLinks.push({
server: 'Gdrive-Instant', server: 'ResumeBot',
link: instantLink, link: resumeBotDownloadData.url,
type: 'mkv', type: 'mkv',
}); });
} }
else { else {
console.log('Instant link not found', instantLinkData); const url = baseUrl + resumeDrive;
const resumeDriveRes = yield axios_1.default.get(url, { headers: headers_1.headers });
const resumeDriveHtml = resumeDriveRes.data;
const $resumeDrive = cheerio.load(resumeDriveHtml);
const resumeLink = $resumeDrive('.btn-success').attr('href');
// console.log('resumeLink', resumeLink);
if (resumeLink) {
streamLinks.push({
server: 'ResumeCloud',
link: resumeLink,
type: 'mkv',
});
}
} }
} }
catch (err) {
console.log('Resume link not found');
}
//instant link
try {
const seed = $drive('.btn-danger').attr('href') || '';
console.log('seed', seed);
if (!seed.includes('?url=')) {
const newLinkRes = yield axios_1.default.head(seed, { headers: headers_1.headers, signal });
console.log('newLinkRes', (_e = newLinkRes.request) === null || _e === void 0 ? void 0 : _e.responseURL);
const newLink = ((_h = (_g = (_f = newLinkRes.request) === null || _f === void 0 ? void 0 : _f.responseURL) === null || _g === void 0 ? void 0 : _g.split('?url=')) === null || _h === void 0 ? void 0 : _h[1]) || seed;
streamLinks.push({ server: 'G-Drive', link: newLink, type: 'mkv' });
}
else {
const instantToken = seed.split('=')[1];
// console.log('InstantToken', instantToken);
const InstantFromData = new FormData();
InstantFromData.append('keys', instantToken);
const videoSeedUrl = seed.split('/').slice(0, 3).join('/') + '/api';
// console.log('videoSeedUrl', videoSeedUrl);
const instantLinkRes = yield fetch(videoSeedUrl, {
method: 'POST',
body: InstantFromData,
headers: {
'x-token': videoSeedUrl,
},
});
const instantLinkData = yield instantLinkRes.json();
// console.log('instantLinkData', instantLinkData);
if (instantLinkData.error === false) {
const instantLink = instantLinkData.url;
streamLinks.push({
server: 'Gdrive-Instant',
link: instantLink,
type: 'mkv',
});
}
else {
console.log('Instant link not found', instantLinkData);
}
}
}
catch (err) {
console.log('Instant link not found', err);
}
return streamLinks;
} }
catch (err) { catch (error) {
console.log('Instant link not found', err); console.log('gdflix error: ', error);
return [];
} }
return streamLinks; });
}
catch (error) {
console.log('gdflix error: ', error);
return [];
}
} }

17
dist/getBaseUrl.js vendored
View File

@@ -1,10 +1,19 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getBaseUrl = void 0; exports.getBaseUrl = void 0;
const storage_1 = require("../storage"); const storage_1 = require("../storage");
// 1 hour // 1 hour
const expireTime = 60 * 60 * 1000; const expireTime = 60 * 60 * 1000;
const getBaseUrl = async (providerValue) => { const getBaseUrl = (providerValue) => __awaiter(void 0, void 0, void 0, function* () {
try { try {
let baseUrl = ''; let baseUrl = '';
const cacheKey = 'CacheBaseUrl' + providerValue; const cacheKey = 'CacheBaseUrl' + providerValue;
@@ -17,8 +26,8 @@ const getBaseUrl = async (providerValue) => {
baseUrl = cachedUrl; baseUrl = cachedUrl;
} }
else { else {
const baseUrlRes = await fetch('https://himanshu8443.github.io/providers/modflix.json'); const baseUrlRes = yield fetch('https://himanshu8443.github.io/providers/modflix.json');
const baseUrlData = await baseUrlRes.json(); const baseUrlData = yield baseUrlRes.json();
baseUrl = baseUrlData[providerValue].url; baseUrl = baseUrlData[providerValue].url;
storage_1.cacheStorageService.setString(cacheKey, baseUrl); storage_1.cacheStorageService.setString(cacheKey, baseUrl);
storage_1.cacheStorageService.setObject(timeKey, Date.now()); storage_1.cacheStorageService.setObject(timeKey, Date.now());
@@ -29,5 +38,5 @@ const getBaseUrl = async (providerValue) => {
console.error(`Error fetching baseUrl: ${providerValue}`, error); console.error(`Error fetching baseUrl: ${providerValue}`, error);
return ''; return '';
} }
}; });
exports.getBaseUrl = getBaseUrl; exports.getBaseUrl = getBaseUrl;

View File

@@ -1,37 +1,48 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) { var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.gofileExtracter = gofileExtracter; exports.gofileExtracter = gofileExtracter;
const axios_1 = __importDefault(require("axios")); const axios_1 = __importDefault(require("axios"));
async function gofileExtracter(id) { function gofileExtracter(id) {
try { return __awaiter(this, void 0, void 0, function* () {
const gofileRes = await axios_1.default.get('https://gofile.io/d/' + id); try {
const genAccountres = await axios_1.default.post('https://api.gofile.io/accounts'); const gofileRes = yield axios_1.default.get('https://gofile.io/d/' + id);
const token = genAccountres.data.data.token; const genAccountres = yield axios_1.default.post('https://api.gofile.io/accounts');
console.log('gofile token', token); const token = genAccountres.data.data.token;
const wtRes = await axios_1.default.get('https://gofile.io/dist/js/global.js'); console.log('gofile token', token);
const wt = wtRes.data.match(/appdata\.wt\s*=\s*["']([^"']+)["']/)[1]; const wtRes = yield axios_1.default.get('https://gofile.io/dist/js/global.js');
console.log('gofile wt', wt); const wt = wtRes.data.match(/appdata\.wt\s*=\s*["']([^"']+)["']/)[1];
const res = await axios_1.default.get(`https://api.gofile.io/contents/${id}?wt=${wt}`, { console.log('gofile wt', wt);
headers: { const res = yield axios_1.default.get(`https://api.gofile.io/contents/${id}?wt=${wt}`, {
Authorization: `Bearer ${token}`, headers: {
}, Authorization: `Bearer ${token}`,
}); },
const oId = Object.keys(res.data.data.children)[0]; });
console.log('gofile extracter', res.data.data.children[oId].link); const oId = Object.keys(res.data.data.children)[0];
const link = res.data.data.children[oId].link; console.log('gofile extracter', res.data.data.children[oId].link);
return { const link = res.data.data.children[oId].link;
link, return {
token, link,
}; token,
} };
catch (e) { }
console.log('gofile extracter err', e); catch (e) {
return { console.log('gofile extracter err', e);
link: '', return {
token: '', link: '',
}; token: '',
} };
}
});
} }

172
dist/guardahd/meta.js vendored
View File

@@ -1,89 +1,99 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
const axios = providerContext.axios; return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
try { var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
console.log("all", link); const axios = providerContext.axios;
const res = await axios.get(link); try {
const data = res.data; console.log("all", link);
const meta = { const res = yield axios.get(link);
title: "", const data = res.data;
synopsis: "", const meta = {
image: "", title: "",
imdbId: data?.meta?.imdb_id || "", synopsis: "",
type: data?.meta?.type || "movie", image: "",
}; imdbId: ((_b = data === null || data === void 0 ? void 0 : data.meta) === null || _b === void 0 ? void 0 : _b.imdb_id) || "",
const links = []; type: ((_c = data === null || data === void 0 ? void 0 : data.meta) === null || _c === void 0 ? void 0 : _c.type) || "movie",
let directLinks = []; };
let season = new Map(); const links = [];
if (meta.type === "series") { let directLinks = [];
data?.meta?.videos?.map((video) => { let season = new Map();
if (video?.season <= 0) if (meta.type === "series") {
return; (_e = (_d = data === null || data === void 0 ? void 0 : data.meta) === null || _d === void 0 ? void 0 : _d.videos) === null || _e === void 0 ? void 0 : _e.map((video) => {
if (!season.has(video?.season)) { var _a, _b, _c, _d, _e, _f, _g, _h;
season.set(video?.season, []); if ((video === null || video === void 0 ? void 0 : video.season) <= 0)
} return;
season.get(video?.season).push({ if (!season.has(video === null || video === void 0 ? void 0 : video.season)) {
title: "Episode " + video?.episode, season.set(video === null || video === void 0 ? void 0 : video.season, []);
type: "series", }
link: JSON.stringify({ season.get(video === null || video === void 0 ? void 0 : video.season).push({
title: data?.meta?.name, title: "Episode " + (video === null || video === void 0 ? void 0 : video.episode),
imdbId: data?.meta?.imdb_id, type: "series",
season: video?.id?.split(":")[1],
episode: video?.id?.split(":")[2],
type: data?.meta?.type,
tmdbId: data?.meta?.moviedb_id?.toString() || "",
year: data?.meta?.year,
}),
});
});
const keys = Array.from(season.keys());
keys.sort();
keys.map((key) => {
directLinks = season.get(key);
links.push({
title: `Season ${key}`,
directLinks: directLinks,
});
});
}
else {
console.log("all meta Mv🔥🔥", meta);
links.push({
title: data?.meta?.name,
directLinks: [
{
title: "Movie",
type: "movie",
link: JSON.stringify({ link: JSON.stringify({
title: data?.meta?.name, title: (_a = data === null || data === void 0 ? void 0 : data.meta) === null || _a === void 0 ? void 0 : _a.name,
imdbId: data?.meta?.imdb_id, imdbId: (_b = data === null || data === void 0 ? void 0 : data.meta) === null || _b === void 0 ? void 0 : _b.imdb_id,
season: "", season: (_c = video === null || video === void 0 ? void 0 : video.id) === null || _c === void 0 ? void 0 : _c.split(":")[1],
episode: "", episode: (_d = video === null || video === void 0 ? void 0 : video.id) === null || _d === void 0 ? void 0 : _d.split(":")[2],
type: data?.meta?.type, type: (_e = data === null || data === void 0 ? void 0 : data.meta) === null || _e === void 0 ? void 0 : _e.type,
tmdbId: data?.meta?.moviedb_id?.toString() || "", tmdbId: ((_g = (_f = data === null || data === void 0 ? void 0 : data.meta) === null || _f === void 0 ? void 0 : _f.moviedb_id) === null || _g === void 0 ? void 0 : _g.toString()) || "",
year: data?.meta?.year, year: (_h = data === null || data === void 0 ? void 0 : data.meta) === null || _h === void 0 ? void 0 : _h.year,
}), }),
}, });
], });
}); const keys = Array.from(season.keys());
keys.sort();
keys.map((key) => {
directLinks = season.get(key);
links.push({
title: `Season ${key}`,
directLinks: directLinks,
});
});
}
else {
console.log("all meta Mv🔥🔥", meta);
links.push({
title: (_f = data === null || data === void 0 ? void 0 : data.meta) === null || _f === void 0 ? void 0 : _f.name,
directLinks: [
{
title: "Movie",
type: "movie",
link: JSON.stringify({
title: (_g = data === null || data === void 0 ? void 0 : data.meta) === null || _g === void 0 ? void 0 : _g.name,
imdbId: (_h = data === null || data === void 0 ? void 0 : data.meta) === null || _h === void 0 ? void 0 : _h.imdb_id,
season: "",
episode: "",
type: (_j = data === null || data === void 0 ? void 0 : data.meta) === null || _j === void 0 ? void 0 : _j.type,
tmdbId: ((_l = (_k = data === null || data === void 0 ? void 0 : data.meta) === null || _k === void 0 ? void 0 : _k.moviedb_id) === null || _l === void 0 ? void 0 : _l.toString()) || "",
year: (_m = data === null || data === void 0 ? void 0 : data.meta) === null || _m === void 0 ? void 0 : _m.year,
}),
},
],
});
}
return Object.assign(Object.assign({}, meta), { linkList: links });
} }
return { catch (err) {
...meta, console.error(err);
linkList: links, return {
}; title: "",
} synopsis: "",
catch (err) { image: "",
console.error(err); imdbId: "",
return { type: "movie",
title: "", linkList: [],
synopsis: "", };
image: "", }
imdbId: "", });
type: "movie",
linkList: [],
};
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

129
dist/guardahd/posts.js vendored
View File

@@ -1,66 +1,79 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, signal, providerContext, }) { const getPosts = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ filter, signal, providerContext, }) {
const catalog = []; try {
const url = "https://cinemeta-catalogs.strem.io" + filter; const catalog = [];
console.log("allGetPostUrl", url); const url = "https://cinemeta-catalogs.strem.io" + filter;
const res = await providerContext.axios.get(url, { console.log("allGetPostUrl", url);
headers: providerContext.commonHeaders, const res = yield providerContext.axios.get(url, {
signal, headers: providerContext.commonHeaders,
}); signal,
const data = res.data; });
data?.metas.map((result) => { const data = res.data;
const title = result?.name; data === null || data === void 0 ? void 0 : data.metas.map((result) => {
const id = result?.imdb_id || result?.id; const title = result === null || result === void 0 ? void 0 : result.name;
const type = result?.type; const id = (result === null || result === void 0 ? void 0 : result.imdb_id) || (result === null || result === void 0 ? void 0 : result.id);
const image = result?.poster; const type = result === null || result === void 0 ? void 0 : result.type;
if (id) { const image = result === null || result === void 0 ? void 0 : result.poster;
catalog.push({ if (id) {
title: title, catalog.push({
link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`, title: title,
image: image, link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`,
}); image: image,
} });
}); }
console.log("catalog", catalog.length); });
return catalog; console.log("catalog", catalog.length);
} return catalog;
catch (err) { }
console.error("AutoEmbed error ", err); catch (err) {
return []; console.error("AutoEmbed error ", err);
}
};
exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, signal, providerContext, }) {
try {
const { axios, commonHeaders: headers } = providerContext;
if (page > 1) {
return []; return [];
} }
const catalog = []; });
const url2 = `https://v3-cinemeta.strem.io/catalog/movie/top/search=${encodeURI(searchQuery)}.json`; };
const res2 = await axios.get(url2, { headers, signal }); exports.getPosts = getPosts;
const data2 = res2.data; const getSearchPosts = function (_a) {
data2?.metas.map((result) => { return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) {
const title = result?.name || ""; try {
const id = result?.imdb_id || result?.id; const { axios, commonHeaders: headers } = providerContext;
const image = result?.poster; if (page > 1) {
const type = result?.type; return [];
if (id) {
catalog.push({
title: title,
link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`,
image: image,
});
} }
}); const catalog = [];
return catalog; const url2 = `https://v3-cinemeta.strem.io/catalog/movie/top/search=${encodeURI(searchQuery)}.json`;
} const res2 = yield axios.get(url2, { headers, signal });
catch (err) { const data2 = res2.data;
console.error("AutoEmbed error ", err); data2 === null || data2 === void 0 ? void 0 : data2.metas.map((result) => {
return []; const title = (result === null || result === void 0 ? void 0 : result.name) || "";
} const id = (result === null || result === void 0 ? void 0 : result.imdb_id) || (result === null || result === void 0 ? void 0 : result.id);
const image = result === null || result === void 0 ? void 0 : result.poster;
const type = result === null || result === void 0 ? void 0 : result.type;
if (id) {
catalog.push({
title: title,
link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`,
image: image,
});
}
});
return catalog;
}
catch (err) {
console.error("AutoEmbed error ", err);
return [];
}
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;

View File

@@ -1,102 +1,117 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const getStream = async function ({ link: id, type, providerContext, }) { const getStream = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link: id, type, providerContext, }) {
const { axios, cheerio, extractors } = providerContext; try {
const { superVideoExtractor } = extractors; const { axios, cheerio, extractors } = providerContext;
async function ExtractGuardahd({ imdb, // type, // season, const { superVideoExtractor } = extractors;
}) { function ExtractGuardahd(_a) {
try { return __awaiter(this, arguments, void 0, function* ({ imdb, // type, // season,
const baseUrl = "https://guardahd.stream"; }) {
const path = "/set-movie-a/" + imdb; try {
const url = baseUrl + path; const baseUrl = "https://guardahd.stream";
console.log("url:", url); const path = "/set-movie-a/" + imdb;
const res = await axios.get(url, { timeout: 4000 }); const url = baseUrl + path;
const html = res.data; console.log("url:", url);
const $ = cheerio.load(html); const res = yield axios.get(url, { timeout: 4000 });
const superVideoUrl = $('li:contains("supervideo")').attr("data-link"); const html = res.data;
console.log("superVideoUrl:", superVideoUrl); const $ = cheerio.load(html);
if (!superVideoUrl) { const superVideoUrl = $('li:contains("supervideo")').attr("data-link");
return null; console.log("superVideoUrl:", superVideoUrl);
} if (!superVideoUrl) {
const controller2 = new AbortController(); return null;
const signal2 = controller2.signal; }
setTimeout(() => controller2.abort(), 4000); const controller2 = new AbortController();
const res2 = await fetch("https:" + superVideoUrl, { signal: signal2 }); const signal2 = controller2.signal;
const data = await res2.text(); setTimeout(() => controller2.abort(), 4000);
// console.log('mostraguarda data:', data); const res2 = yield fetch("https:" + superVideoUrl, { signal: signal2 });
const streamUrl = await superVideoExtractor(data); const data = yield res2.text();
return streamUrl; // console.log('mostraguarda data:', data);
const streamUrl = yield superVideoExtractor(data);
return streamUrl;
}
catch (err) {
console.error("Error in GetMostraguardaStram:", err);
}
});
} }
catch (err) { function GetMostraguardaStream(_a) {
console.error("Error in GetMostraguardaStram:", err); return __awaiter(this, arguments, void 0, function* ({ imdb, type, season, episode, }) {
try {
const baseUrl = "https://mostraguarda.stream";
const path = type === "tv"
? `/serie/${imdb}/${season}/${episode}`
: `/movie/${imdb}`;
const url = baseUrl + path;
console.log("url:", url);
const res = yield axios(url, { timeout: 4000 });
const html = res.data;
const $ = cheerio.load(html);
const superVideoUrl = $('li:contains("supervideo")').attr("data-link");
console.log("superVideoUrl:", superVideoUrl);
if (!superVideoUrl) {
return null;
}
const controller2 = new AbortController();
const signal2 = controller2.signal;
setTimeout(() => controller2.abort(), 4000);
const res2 = yield fetch("https:" + superVideoUrl, { signal: signal2 });
const data = yield res2.text();
// console.log('mostraguarda data:', data);
const streamUrl = yield superVideoExtractor(data);
return streamUrl;
}
catch (err) {
console.error("Error in GetMostraguardaStram:", err);
}
});
} }
} console.log(id);
async function GetMostraguardaStream({ imdb, type, season, episode, }) { const streams = [];
try { const { imdbId, season, episode } = JSON.parse(id);
const baseUrl = "https://mostraguarda.stream"; ///// mostraguarda
const path = type === "tv" const mostraguardaStream = yield GetMostraguardaStream({
? `/serie/${imdb}/${season}/${episode}` imdb: imdbId,
: `/movie/${imdb}`; type: type,
const url = baseUrl + path; season: season,
console.log("url:", url); episode: episode,
const res = await axios(url, { timeout: 4000 });
const html = res.data;
const $ = cheerio.load(html);
const superVideoUrl = $('li:contains("supervideo")').attr("data-link");
console.log("superVideoUrl:", superVideoUrl);
if (!superVideoUrl) {
return null;
}
const controller2 = new AbortController();
const signal2 = controller2.signal;
setTimeout(() => controller2.abort(), 4000);
const res2 = await fetch("https:" + superVideoUrl, { signal: signal2 });
const data = await res2.text();
// console.log('mostraguarda data:', data);
const streamUrl = await superVideoExtractor(data);
return streamUrl;
}
catch (err) {
console.error("Error in GetMostraguardaStram:", err);
}
}
console.log(id);
const streams = [];
const { imdbId, season, episode } = JSON.parse(id);
///// mostraguarda
const mostraguardaStream = await GetMostraguardaStream({
imdb: imdbId,
type: type,
season: season,
episode: episode,
});
if (mostraguardaStream) {
streams.push({
server: "Supervideo 1",
link: mostraguardaStream,
type: "m3u8",
}); });
} if (mostraguardaStream) {
const guardahdStream = await ExtractGuardahd({ streams.push({
imdb: imdbId, server: "Supervideo 1",
type: type, link: mostraguardaStream,
season: season, type: "m3u8",
episode: episode, });
}); }
if (guardahdStream) { const guardahdStream = yield ExtractGuardahd({
streams.push({ imdb: imdbId,
server: "Supervideo 2", type: type,
link: guardahdStream, season: season,
type: "m3u8", episode: episode,
}); });
if (guardahdStream) {
streams.push({
server: "Supervideo 2",
link: guardahdStream,
type: "m3u8",
});
}
return streams;
} }
return streams; catch (err) {
} console.error(err);
catch (err) { return [];
console.error(err); }
return []; });
}
}; };
exports.getStream = getStream; exports.getStream = getStream;

206
dist/hdhub4u/meta.js vendored
View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const hdbHeaders = { const hdbHeaders = {
@@ -6,110 +15,113 @@ const hdbHeaders = {
Referer: "https://google.com", Referer: "https://google.com",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0",
}; };
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { axios, cheerio } = providerContext; var _b;
const url = link; try {
const res = await axios.get(url, { headers: hdbHeaders }); const { axios, cheerio } = providerContext;
const data = res.data; const url = link;
const $ = cheerio.load(data); const res = yield axios.get(url, { headers: hdbHeaders });
const container = $(".page-body"); const data = res.data;
const imdbId = container const $ = cheerio.load(data);
.find('a[href*="imdb.com/title/tt"]:not([href*="imdb.com/title/tt/"])') const container = $(".page-body");
.attr("href") const imdbId = ((_b = container
?.split("/")[4] || ""; .find('a[href*="imdb.com/title/tt"]:not([href*="imdb.com/title/tt/"])')
const title = container .attr("href")) === null || _b === void 0 ? void 0 : _b.split("/")[4]) || "";
.find('h2[data-ved="2ahUKEwjL0NrBk4vnAhWlH7cAHRCeAlwQ3B0oATAfegQIFBAM"],h2[data-ved="2ahUKEwiP0pGdlermAhUFYVAKHV8tAmgQ3B0oATAZegQIDhAM"]') const title = container
.text(); .find('h2[data-ved="2ahUKEwjL0NrBk4vnAhWlH7cAHRCeAlwQ3B0oATAfegQIFBAM"],h2[data-ved="2ahUKEwiP0pGdlermAhUFYVAKHV8tAmgQ3B0oATAZegQIDhAM"]')
const type = title.toLocaleLowerCase().includes("season") .text();
? "series" const type = title.toLocaleLowerCase().includes("season")
: "movie"; ? "series"
const synopsis = container : "movie";
.find('strong:contains("DESCRIPTION")') const synopsis = container
.parent() .find('strong:contains("DESCRIPTION")')
.text()
.replace("DESCRIPTION:", "");
const image = container.find('img[decoding="async"]').attr("src") || "";
// Links
const links = [];
const directLink = [];
// direct link type
$('strong:contains("EPiSODE")').map((i, element) => {
const epTitle = $(element).parent().parent().text();
const episodesLink = $(element)
.parent() .parent()
.parent() .text()
.parent() .replace("DESCRIPTION:", "");
.next() const image = container.find('img[decoding="async"]').attr("src") || "";
.next() // Links
.find("a") const links = [];
.attr("href") || const directLink = [];
$(element).parent().parent().parent().next().find("a").attr("href"); // direct link type
if (episodesLink && episodesLink) { $('strong:contains("EPiSODE")').map((i, element) => {
directLink.push({ const epTitle = $(element).parent().parent().text();
title: epTitle, const episodesLink = $(element)
link: episodesLink, .parent()
}); .parent()
} .parent()
}); .next()
if (directLink.length === 0) { .next()
container.find('a:contains("EPiSODE")').map((i, element) => { .find("a")
const epTitle = $(element).text(); .attr("href") ||
const episodesLink = $(element).attr("href"); $(element).parent().parent().parent().next().find("a").attr("href");
if (episodesLink) { if (episodesLink && episodesLink) {
directLink.push({ directLink.push({
title: epTitle.toLocaleUpperCase(), title: epTitle,
link: episodesLink, link: episodesLink,
}); });
} }
}); });
if (directLink.length === 0) {
container.find('a:contains("EPiSODE")').map((i, element) => {
const epTitle = $(element).text();
const episodesLink = $(element).attr("href");
if (episodesLink) {
directLink.push({
title: epTitle.toLocaleUpperCase(),
link: episodesLink,
});
}
});
}
if (directLink.length > 0) {
links.push({
title: title,
directLinks: directLink,
});
}
if (directLink.length === 0) {
container
.find('a:contains("480"),a:contains("720"),a:contains("1080"),a:contains("2160"),a:contains("4K")')
.map((i, element) => {
var _a;
const quality = ((_a = $(element)
.text()
.match(/\b(480p|720p|1080p|2160p)\b/i)) === null || _a === void 0 ? void 0 : _a[0]) || "";
const movieLinks = $(element).attr("href");
const title = $(element).text();
if (movieLinks) {
links.push({
directLinks: [
{ link: movieLinks, title: "Movie", type: "movie" },
],
quality: quality,
title: title,
});
}
});
}
// console.log('drive meta', title, synopsis, image, imdbId, type, links);
return {
title,
synopsis,
image,
imdbId,
type,
linkList: links,
};
} }
if (directLink.length > 0) { catch (err) {
links.push({ console.error(err);
title: title, return {
directLinks: directLink, title: "",
}); synopsis: "",
image: "",
imdbId: "",
type: "movie",
linkList: [],
};
} }
if (directLink.length === 0) { });
container
.find('a:contains("480"),a:contains("720"),a:contains("1080"),a:contains("2160"),a:contains("4K")')
.map((i, element) => {
const quality = $(element)
.text()
.match(/\b(480p|720p|1080p|2160p)\b/i)?.[0] || "";
const movieLinks = $(element).attr("href");
const title = $(element).text();
if (movieLinks) {
links.push({
directLinks: [
{ link: movieLinks, title: "Movie", type: "movie" },
],
quality: quality,
title: title,
});
}
});
}
// console.log('drive meta', title, synopsis, image, imdbId, type, links);
return {
title,
synopsis,
image,
imdbId,
type,
linkList: links,
};
}
catch (err) {
console.error(err);
return {
title: "",
synopsis: "",
image: "",
imdbId: "",
type: "movie",
linkList: [],
};
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

95
dist/hdhub4u/posts.js vendored
View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const hdbHeaders = { const hdbHeaders = {
@@ -6,48 +15,54 @@ const hdbHeaders = {
Referer: "https://google.com", Referer: "https://google.com",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0",
}; };
const getPosts = async function ({ filter, page, signal, providerContext, }) { const getPosts = function (_a) {
const { getBaseUrl } = providerContext; return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("hdhub"); const { getBaseUrl } = providerContext;
const url = `${baseUrl + filter}/page/${page}/`; const baseUrl = yield getBaseUrl("hdhub");
return posts({ url, signal, providerContext }); const url = `${baseUrl + filter}/page/${page}/`;
return posts({ url, signal, providerContext });
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, signal, providerContext, }) { const getSearchPosts = function (_a) {
const { getBaseUrl } = providerContext; return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("hdhub"); const { getBaseUrl } = providerContext;
const url = `${baseUrl}/page/${page}/?s=${searchQuery}`; const baseUrl = yield getBaseUrl("hdhub");
return posts({ url, signal, providerContext }); const url = `${baseUrl}/page/${page}/?s=${searchQuery}`;
return posts({ url, signal, providerContext });
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts({ url, signal, providerContext, }) { function posts(_a) {
const { cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ url, signal, providerContext, }) {
try { const { cheerio } = providerContext;
const res = await fetch(url, { try {
headers: hdbHeaders, const res = yield fetch(url, {
signal, headers: hdbHeaders,
}); signal,
const data = await res.text(); });
const $ = cheerio.load(data); const data = yield res.text();
const catalog = []; const $ = cheerio.load(data);
$(".recent-movies") const catalog = [];
.children() $(".recent-movies")
.map((i, element) => { .children()
const title = $(element).find("figure").find("img").attr("alt"); .map((i, element) => {
const link = $(element).find("a").attr("href"); const title = $(element).find("figure").find("img").attr("alt");
const image = $(element).find("figure").find("img").attr("src"); const link = $(element).find("a").attr("href");
if (title && link && image) { const image = $(element).find("figure").find("img").attr("src");
catalog.push({ if (title && link && image) {
title: title.replace("Download", "").trim(), catalog.push({
link: link, title: title.replace("Download", "").trim(),
image: image, link: link,
}); image: image,
} });
}); }
return catalog; });
} return catalog;
catch (err) { }
console.error("hdhubGetPosts error ", err); catch (err) {
return []; console.error("hdhubGetPosts error ", err);
} return [];
}
});
} }

174
dist/hdhub4u/stream.js vendored
View File

@@ -1,51 +1,63 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = getStream; exports.getStream = getStream;
exports.getRedirectLinks = getRedirectLinks; exports.getRedirectLinks = getRedirectLinks;
exports.decodeString = decodeString; exports.decodeString = decodeString;
async function getStream({ link, signal, providerContext, }) { function getStream(_a) {
const { axios, cheerio, extractors, commonHeaders: headers, } = providerContext; return __awaiter(this, arguments, void 0, function* ({ link, signal, providerContext, }) {
const { hubcloudExtracter } = extractors; var _b, _c, _d, _e;
let hubdriveLink = ""; const { axios, cheerio, extractors, commonHeaders: headers, } = providerContext;
if (link.includes("hubdrive")) { const { hubcloudExtracter } = extractors;
const hubdriveRes = await axios.get(link, { headers, signal }); let hubdriveLink = "";
const hubdriveText = hubdriveRes.data; if (link.includes("hubdrive")) {
const $ = cheerio.load(hubdriveText); const hubdriveRes = yield axios.get(link, { headers, signal });
hubdriveLink =
$(".btn.btn-primary.btn-user.btn-success1.m-1").attr("href") || link;
}
else {
const res = await axios.get(link, { headers, signal });
const text = res.data;
const encryptedString = text.split("s('o','")?.[1]?.split("',180")?.[0];
const decodedString = decodeString(encryptedString);
link = atob(decodedString?.o);
const redirectLink = await getRedirectLinks(link, signal, headers);
const redirectLinkRes = await axios.get(redirectLink, { headers, signal });
const redirectLinkText = redirectLinkRes.data;
const $ = cheerio.load(redirectLinkText);
hubdriveLink =
$('h3:contains("1080p")').find("a").attr("href") ||
redirectLinkText.match(/href="(https:\/\/hubcloud\.[^\/]+\/drive\/[^"]+)"/)[1];
if (hubdriveLink.includes("hubdrive")) {
const hubdriveRes = await axios.get(hubdriveLink, { headers, signal });
const hubdriveText = hubdriveRes.data; const hubdriveText = hubdriveRes.data;
const $$ = cheerio.load(hubdriveText); const $ = cheerio.load(hubdriveText);
hubdriveLink = hubdriveLink =
$$(".btn.btn-primary.btn-user.btn-success1.m-1").attr("href") || $(".btn.btn-primary.btn-user.btn-success1.m-1").attr("href") || link;
hubdriveLink;
} }
} else {
const hubdriveLinkRes = await axios.get(hubdriveLink, { headers, signal }); const res = yield axios.get(link, { headers, signal });
const hubcloudText = hubdriveLinkRes.data; const text = res.data;
const hubcloudLink = hubcloudText.match(/<META HTTP-EQUIV="refresh" content="0; url=([^"]+)">/i)?.[1] || hubdriveLink; const encryptedString = (_d = (_c = (_b = text.split("s('o','")) === null || _b === void 0 ? void 0 : _b[1]) === null || _c === void 0 ? void 0 : _c.split("',180")) === null || _d === void 0 ? void 0 : _d[0];
try { const decodedString = decodeString(encryptedString);
return await hubcloudExtracter(hubcloudLink, signal); link = atob(decodedString === null || decodedString === void 0 ? void 0 : decodedString.o);
} const redirectLink = yield getRedirectLinks(link, signal, headers);
catch (error) { const redirectLinkRes = yield axios.get(redirectLink, { headers, signal });
console.log("hd hub 4 getStream error: ", error); const redirectLinkText = redirectLinkRes.data;
return []; const $ = cheerio.load(redirectLinkText);
} hubdriveLink =
$('h3:contains("1080p")').find("a").attr("href") ||
redirectLinkText.match(/href="(https:\/\/hubcloud\.[^\/]+\/drive\/[^"]+)"/)[1];
if (hubdriveLink.includes("hubdrive")) {
const hubdriveRes = yield axios.get(hubdriveLink, { headers, signal });
const hubdriveText = hubdriveRes.data;
const $$ = cheerio.load(hubdriveText);
hubdriveLink =
$$(".btn.btn-primary.btn-user.btn-success1.m-1").attr("href") ||
hubdriveLink;
}
}
const hubdriveLinkRes = yield axios.get(hubdriveLink, { headers, signal });
const hubcloudText = hubdriveLinkRes.data;
const hubcloudLink = ((_e = hubcloudText.match(/<META HTTP-EQUIV="refresh" content="0; url=([^"]+)">/i)) === null || _e === void 0 ? void 0 : _e[1]) || hubdriveLink;
try {
return yield hubcloudExtracter(hubcloudLink, signal);
}
catch (error) {
console.log("hd hub 4 getStream error: ", error);
return [];
}
});
} }
const encode = function (value) { const encode = function (value) {
return btoa(value.toString()); return btoa(value.toString());
@@ -78,49 +90,51 @@ const abortableTimeout = (ms, { signal } = {}) => {
} }
}); });
}; };
async function getRedirectLinks(link, signal, headers) { function getRedirectLinks(link, signal, headers) {
try { return __awaiter(this, void 0, void 0, function* () {
const res = await fetch(link, { headers, signal }); try {
const resText = await res.text(); const res = yield fetch(link, { headers, signal });
var regex = /ck\('_wp_http_\d+','([^']+)'/g; const resText = yield res.text();
var combinedString = ""; var regex = /ck\('_wp_http_\d+','([^']+)'/g;
var match; var combinedString = "";
while ((match = regex.exec(resText)) !== null) { var match;
// console.log(match[1]); while ((match = regex.exec(resText)) !== null) {
combinedString += match[1]; // console.log(match[1]);
} combinedString += match[1];
// console.log(decode(combinedString));
const decodedString = decode(pen(decode(decode(combinedString))));
// console.log(decodedString);
const data = JSON.parse(decodedString);
console.log(data);
const token = encode(data?.data);
const blogLink = data?.wp_http1 + "?re=" + token;
// abort timeout on signal
let wait = abortableTimeout((Number(data?.total_time) + 3) * 1000, {
signal,
});
await wait;
console.log("blogLink", blogLink);
let vcloudLink = "Invalid Request";
while (vcloudLink.includes("Invalid Request")) {
const blogRes = await fetch(blogLink, { headers, signal });
const blogResText = (await blogRes.text());
if (blogResText.includes("Invalid Request")) {
console.log(blogResText);
} }
else { // console.log(decode(combinedString));
vcloudLink = blogResText.match(/var reurl = "([^"]+)"/) || ""; const decodedString = decode(pen(decode(decode(combinedString))));
break; // console.log(decodedString);
const data = JSON.parse(decodedString);
console.log(data);
const token = encode(data === null || data === void 0 ? void 0 : data.data);
const blogLink = (data === null || data === void 0 ? void 0 : data.wp_http1) + "?re=" + token;
// abort timeout on signal
let wait = abortableTimeout((Number(data === null || data === void 0 ? void 0 : data.total_time) + 3) * 1000, {
signal,
});
yield wait;
console.log("blogLink", blogLink);
let vcloudLink = "Invalid Request";
while (vcloudLink.includes("Invalid Request")) {
const blogRes = yield fetch(blogLink, { headers, signal });
const blogResText = (yield blogRes.text());
if (blogResText.includes("Invalid Request")) {
console.log(blogResText);
}
else {
vcloudLink = blogResText.match(/var reurl = "([^"]+)"/) || "";
break;
}
} }
// console.log('vcloudLink', vcloudLink?.[1]);
return blogLink || link;
} }
// console.log('vcloudLink', vcloudLink?.[1]); catch (err) {
return blogLink || link; console.log("Error in getRedirectLinks", err);
} return link;
catch (err) { }
console.log("Error in getRedirectLinks", err); });
return link;
}
} }
function rot13(str) { function rot13(str) {
return str.replace(/[a-zA-Z]/g, function (char) { return str.replace(/[a-zA-Z]/g, function (char) {

130
dist/hiAnime/meta.js vendored
View File

@@ -1,78 +1,86 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { getBaseUrl, axios } = providerContext; try {
const baseUrl = await getBaseUrl("consumet"); const { getBaseUrl, axios } = providerContext;
const url = `${baseUrl}/anime/zoro/info?id=` + link; const baseUrl = yield getBaseUrl("consumet");
const res = await axios.get(url); const url = `${baseUrl}/anime/zoro/info?id=` + link;
const data = res.data; const res = yield axios.get(url);
const meta = { const data = res.data;
title: data.title, const meta = {
synopsis: data.description, title: data.title,
image: data.image, synopsis: data.description,
tags: [ image: data.image,
data?.type, tags: [
data?.subOrDub === "both" ? "Sub And Dub" : data?.subOrDub, data === null || data === void 0 ? void 0 : data.type,
], (data === null || data === void 0 ? void 0 : data.subOrDub) === "both" ? "Sub And Dub" : data === null || data === void 0 ? void 0 : data.subOrDub,
imdbId: "", ],
type: data.episodes.length > 0 ? "series" : "movie", imdbId: "",
}; type: data.episodes.length > 0 ? "series" : "movie",
const linkList = []; };
const subLinks = []; const linkList = [];
data.episodes.forEach((episode) => { const subLinks = [];
if (!episode?.isSubbed) {
return;
}
const title = "Episode " + episode.number + (episode?.isFiller ? " (Filler)" : "");
const link = episode.id + "$sub";
if (link && title) {
subLinks.push({
title,
link,
});
}
});
linkList.push({
title: meta.title + " (Sub)",
directLinks: subLinks,
});
if (data?.subOrDub === "both") {
const dubLinks = [];
data.episodes.forEach((episode) => { data.episodes.forEach((episode) => {
if (!episode?.isDubbed) { if (!(episode === null || episode === void 0 ? void 0 : episode.isSubbed)) {
return; return;
} }
const title = "Episode " + episode.number + (episode?.isFiller ? " (Filler)" : ""); const title = "Episode " + episode.number + ((episode === null || episode === void 0 ? void 0 : episode.isFiller) ? " (Filler)" : "");
const link = episode.id + "$dub"; const link = episode.id + "$sub";
if (link && title) { if (link && title) {
dubLinks.push({ subLinks.push({
title, title,
link, link,
}); });
} }
}); });
linkList.push({ linkList.push({
title: meta.title + " (Dub)", title: meta.title + " (Sub)",
directLinks: dubLinks, directLinks: subLinks,
}); });
if ((data === null || data === void 0 ? void 0 : data.subOrDub) === "both") {
const dubLinks = [];
data.episodes.forEach((episode) => {
if (!(episode === null || episode === void 0 ? void 0 : episode.isDubbed)) {
return;
}
const title = "Episode " + episode.number + ((episode === null || episode === void 0 ? void 0 : episode.isFiller) ? " (Filler)" : "");
const link = episode.id + "$dub";
if (link && title) {
dubLinks.push({
title,
link,
});
}
});
linkList.push({
title: meta.title + " (Dub)",
directLinks: dubLinks,
});
}
return Object.assign(Object.assign({}, meta), { linkList: linkList });
} }
return { catch (err) {
...meta, console.error(err);
linkList: linkList, return {
}; title: "",
} synopsis: "",
catch (err) { image: "",
console.error(err); imdbId: "",
return { type: "movie",
title: "", linkList: [],
synopsis: "", };
image: "", }
imdbId: "", });
type: "movie",
linkList: [],
};
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

82
dist/hiAnime/posts.js vendored
View File

@@ -1,41 +1,57 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, page, signal, providerContext, }) { const getPosts = function (_a) {
const { getBaseUrl, axios } = providerContext; return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("consumet"); const { getBaseUrl, axios } = providerContext;
const url = `${baseUrl + filter}?page=${page}`; const baseUrl = yield getBaseUrl("consumet");
return posts({ url, signal, axios }); const url = `${baseUrl + filter}?page=${page}`;
return posts({ url, signal, axios });
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, signal, providerContext, }) { const getSearchPosts = function (_a) {
const { getBaseUrl, axios } = providerContext; return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("consumet"); const { getBaseUrl, axios } = providerContext;
const url = `${baseUrl}/anime/zoro/${searchQuery}?page=${page}`; const baseUrl = yield getBaseUrl("consumet");
return posts({ url, signal, axios }); const url = `${baseUrl}/anime/zoro/${searchQuery}?page=${page}`;
return posts({ url, signal, axios });
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts({ url, signal, axios, }) { function posts(_a) {
try { return __awaiter(this, arguments, void 0, function* ({ url, signal, axios, }) {
const res = await axios.get(url, { signal }); var _b;
const data = res.data?.results; try {
const catalog = []; const res = yield axios.get(url, { signal });
data?.map((element) => { const data = (_b = res.data) === null || _b === void 0 ? void 0 : _b.results;
const title = element.title; const catalog = [];
const link = element.id; data === null || data === void 0 ? void 0 : data.map((element) => {
const image = element.image; const title = element.title;
if (title && link && image) { const link = element.id;
catalog.push({ const image = element.image;
title: title, if (title && link && image) {
link: link, catalog.push({
image: image, title: title,
}); link: link,
} image: image,
}); });
return catalog; }
} });
catch (err) { return catalog;
console.error("zoro error ", err); }
return []; catch (err) {
} console.error("zoro error ", err);
return [];
}
});
} }

103
dist/hiAnime/stream.js vendored
View File

@@ -1,54 +1,67 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const types_1 = require("../types"); const types_1 = require("../types");
const getStream = async function ({ link: id, providerContext, }) { const getStream = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link: id, providerContext, }) {
const { getBaseUrl, axios } = providerContext; try {
const baseUrl = await getBaseUrl("consumet"); const { getBaseUrl, axios } = providerContext;
const servers = ["vidcloud", "vidstreaming"]; const baseUrl = yield getBaseUrl("consumet");
const url = `${baseUrl}/anime/zoro/watch?episodeId=${id}&server=`; const servers = ["vidcloud", "vidstreaming"];
const streamLinks = []; const url = `${baseUrl}/anime/zoro/watch?episodeId=${id}&server=`;
await Promise.all(servers.map(async (server) => { const streamLinks = [];
try { yield Promise.all(servers.map((server) => __awaiter(this, void 0, void 0, function* () {
const res = await axios.get(url + server); var _a, _b;
if (res.data) { try {
const subtitles = []; const res = yield axios.get(url + server);
res.data?.subtitles.forEach((sub) => { if (res.data) {
if (sub?.lang === "Thumbnails") const subtitles = [];
return; (_a = res.data) === null || _a === void 0 ? void 0 : _a.subtitles.forEach((sub) => {
subtitles.push({ var _a, _b;
language: sub?.lang?.slice(0, 2) || "Und", if ((sub === null || sub === void 0 ? void 0 : sub.lang) === "Thumbnails")
uri: sub?.url, return;
title: sub?.lang || "Undefined", subtitles.push({
type: sub?.url?.endsWith(".vtt") language: ((_a = sub === null || sub === void 0 ? void 0 : sub.lang) === null || _a === void 0 ? void 0 : _a.slice(0, 2)) || "Und",
? types_1.TextTrackType.VTT uri: sub === null || sub === void 0 ? void 0 : sub.url,
: types_1.TextTrackType.SUBRIP, title: (sub === null || sub === void 0 ? void 0 : sub.lang) || "Undefined",
type: ((_b = sub === null || sub === void 0 ? void 0 : sub.url) === null || _b === void 0 ? void 0 : _b.endsWith(".vtt"))
? types_1.TextTrackType.VTT
: types_1.TextTrackType.SUBRIP,
});
}); });
}); (_b = res.data) === null || _b === void 0 ? void 0 : _b.sources.forEach((source) => {
res.data?.sources.forEach((source) => { streamLinks.push({
streamLinks.push({ server: server,
server: server, link: source === null || source === void 0 ? void 0 : source.url,
link: source?.url, type: (source === null || source === void 0 ? void 0 : source.isM3U8) ? "m3u8" : "mp4",
type: source?.isM3U8 ? "m3u8" : "mp4", headers: {
headers: { Referer: "https://megacloud.club/",
Referer: "https://megacloud.club/", Origin: "https://megacloud.club",
Origin: "https://megacloud.club", },
}, subtitles: subtitles,
subtitles: subtitles, });
}); });
}); }
} }
} catch (e) {
catch (e) { console.log(e);
console.log(e); }
} })));
})); return streamLinks;
return streamLinks; }
} catch (err) {
catch (err) { console.error(err);
console.error(err); return [];
return []; }
} });
}; };
exports.getStream = getStream; exports.getStream = getStream;

View File

@@ -32,6 +32,15 @@ var __importStar = (this && this.__importStar) || (function () {
return result; return result;
}; };
})(); })();
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) { var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
@@ -46,75 +55,78 @@ const decode = function (value) {
} }
return atob(value.toString()); return atob(value.toString());
}; };
async function hubcloudExtracter(link, signal) { function hubcloudExtracter(link, signal) {
try { return __awaiter(this, void 0, void 0, function* () {
console.log('hubcloudExtracter', link); var _a, _b, _c, _d, _e;
const baseUrl = link.split('/').slice(0, 3).join('/'); try {
const streamLinks = []; console.log('hubcloudExtracter', link);
const vLinkRes = await (0, axios_1.default)(`${link}`, { headers: headers_1.headers, signal }); const baseUrl = link.split('/').slice(0, 3).join('/');
const vLinkText = vLinkRes.data; const streamLinks = [];
const $vLink = cheerio.load(vLinkText); const vLinkRes = yield (0, axios_1.default)(`${link}`, { headers: headers_1.headers, signal });
const vLinkRedirect = vLinkText.match(/var\s+url\s*=\s*'([^']+)';/) || []; const vLinkText = vLinkRes.data;
let vcloudLink = decode(vLinkRedirect[1]?.split('r=')?.[1]) || const $vLink = cheerio.load(vLinkText);
vLinkRedirect[1] || const vLinkRedirect = vLinkText.match(/var\s+url\s*=\s*'([^']+)';/) || [];
$vLink('.fa-file-download.fa-lg').parent().attr('href') || let vcloudLink = decode((_b = (_a = vLinkRedirect[1]) === null || _a === void 0 ? void 0 : _a.split('r=')) === null || _b === void 0 ? void 0 : _b[1]) ||
link; vLinkRedirect[1] ||
console.log('vcloudLink', vcloudLink); $vLink('.fa-file-download.fa-lg').parent().attr('href') ||
if (vcloudLink?.startsWith('/')) { link;
vcloudLink = `${baseUrl}${vcloudLink}`; console.log('vcloudLink', vcloudLink);
console.log('New vcloudLink', vcloudLink); if (vcloudLink === null || vcloudLink === void 0 ? void 0 : vcloudLink.startsWith('/')) {
vcloudLink = `${baseUrl}${vcloudLink}`;
console.log('New vcloudLink', vcloudLink);
}
const vcloudRes = yield fetch(vcloudLink, {
headers: headers_1.headers,
signal,
redirect: 'follow',
});
const $ = cheerio.load(yield vcloudRes.text());
// console.log('vcloudRes', $.text());
const linkClass = $('.btn-success.btn-lg.h6,.btn-danger,.btn-secondary');
for (const element of linkClass) {
const itm = $(element);
let link = itm.attr('href') || '';
if ((link === null || link === void 0 ? void 0 : link.includes('.dev')) && !(link === null || link === void 0 ? void 0 : link.includes('/?id='))) {
streamLinks.push({ server: 'Cf Worker', link: link, type: 'mkv' });
}
if (link === null || link === void 0 ? void 0 : link.includes('pixeld')) {
if (!(link === null || link === void 0 ? void 0 : link.includes('api'))) {
const token = link.split('/').pop();
const baseUrl = link.split('/').slice(0, -2).join('/');
link = `${baseUrl}/api/file/${token}?download`;
}
streamLinks.push({ server: 'Pixeldrain', link: link, type: 'mkv' });
}
if ((link === null || link === void 0 ? void 0 : link.includes('hubcloud')) || (link === null || link === void 0 ? void 0 : link.includes('/?id='))) {
try {
const newLinkRes = yield axios_1.default.head(link, { headers: headers_1.headers, signal });
const newLink = ((_e = (_d = (_c = newLinkRes.request) === null || _c === void 0 ? void 0 : _c.responseURL) === null || _d === void 0 ? void 0 : _d.split('link=')) === null || _e === void 0 ? void 0 : _e[1]) || link;
streamLinks.push({ server: 'hubcloud', link: newLink, type: 'mkv' });
}
catch (error) {
console.log('hubcloudExtracter error in hubcloud link: ', error);
}
}
if (link === null || link === void 0 ? void 0 : link.includes('cloudflarestorage')) {
streamLinks.push({ server: 'CfStorage', link: link, type: 'mkv' });
}
if (link === null || link === void 0 ? void 0 : link.includes('fastdl')) {
streamLinks.push({ server: 'FastDl', link: link, type: 'mkv' });
}
if (link.includes('hubcdn')) {
streamLinks.push({
server: 'HubCdn',
link: link,
type: 'mkv',
});
}
}
console.log('streamLinks', streamLinks);
return streamLinks;
} }
const vcloudRes = await fetch(vcloudLink, { catch (error) {
headers: headers_1.headers, console.log('hubcloudExtracter error: ', error);
signal, return [];
redirect: 'follow',
});
const $ = cheerio.load(await vcloudRes.text());
// console.log('vcloudRes', $.text());
const linkClass = $('.btn-success.btn-lg.h6,.btn-danger,.btn-secondary');
for (const element of linkClass) {
const itm = $(element);
let link = itm.attr('href') || '';
if (link?.includes('.dev') && !link?.includes('/?id=')) {
streamLinks.push({ server: 'Cf Worker', link: link, type: 'mkv' });
}
if (link?.includes('pixeld')) {
if (!link?.includes('api')) {
const token = link.split('/').pop();
const baseUrl = link.split('/').slice(0, -2).join('/');
link = `${baseUrl}/api/file/${token}?download`;
}
streamLinks.push({ server: 'Pixeldrain', link: link, type: 'mkv' });
}
if (link?.includes('hubcloud') || link?.includes('/?id=')) {
try {
const newLinkRes = await axios_1.default.head(link, { headers: headers_1.headers, signal });
const newLink = newLinkRes.request?.responseURL?.split('link=')?.[1] || link;
streamLinks.push({ server: 'hubcloud', link: newLink, type: 'mkv' });
}
catch (error) {
console.log('hubcloudExtracter error in hubcloud link: ', error);
}
}
if (link?.includes('cloudflarestorage')) {
streamLinks.push({ server: 'CfStorage', link: link, type: 'mkv' });
}
if (link?.includes('fastdl')) {
streamLinks.push({ server: 'FastDl', link: link, type: 'mkv' });
}
if (link.includes('hubcdn')) {
streamLinks.push({
server: 'HubCdn',
link: link,
type: 'mkv',
});
}
} }
console.log('streamLinks', streamLinks); });
return streamLinks;
}
catch (error) {
console.log('hubcloudExtracter error: ', error);
return [];
}
} }

View File

@@ -1,70 +1,86 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getEpisodes = void 0; exports.getEpisodes = void 0;
exports.extractKmhdLink = extractKmhdLink; exports.extractKmhdLink = extractKmhdLink;
const getEpisodes = async function ({ url, providerContext, }) { const getEpisodes = function (_a) {
const { axios, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) {
const episodesLink = []; var _b;
try { const { axios, cheerio } = providerContext;
if (url.includes("gdflix")) { const episodesLink = [];
const baseUrl = url.split("/pack")?.[0]; try {
const res = await axios.get(url); if (url.includes("gdflix")) {
const data = res.data; const baseUrl = (_b = url.split("/pack")) === null || _b === void 0 ? void 0 : _b[0];
const $ = cheerio.load(data); const res = yield axios.get(url);
const links = $(".list-group-item"); const data = res.data;
links?.map((i, link) => { const $ = cheerio.load(data);
episodesLink.push({ const links = $(".list-group-item");
title: $(link).text() || "", links === null || links === void 0 ? void 0 : links.map((i, link) => {
link: baseUrl + $(link).find("a").attr("href") || "", episodesLink.push({
title: $(link).text() || "",
link: baseUrl + $(link).find("a").attr("href") || "",
});
}); });
}); if (episodesLink.length > 0) {
if (episodesLink.length > 0) { return episodesLink;
return episodesLink; }
} }
} if (url.includes("/pack")) {
if (url.includes("/pack")) { const epIds = yield extractKmhdEpisodes(url, providerContext);
const epIds = await extractKmhdEpisodes(url, providerContext); epIds === null || epIds === void 0 ? void 0 : epIds.forEach((id, index) => {
epIds?.forEach((id, index) => { episodesLink.push({
title: `Episode ${index + 1}`,
link: url.split("/pack")[0] + "/file/" + id,
});
});
}
const res = yield axios.get(url, {
headers: {
Cookie: "_ga_GNR438JY8N=GS1.1.1722240350.5.0.1722240350.0.0.0; _ga=GA1.1.372196696.1722150754; unlocked=true",
},
});
const episodeData = res.data;
const $ = cheerio.load(episodeData);
const links = $(".autohyperlink");
links === null || links === void 0 ? void 0 : links.map((i, link) => {
episodesLink.push({ episodesLink.push({
title: `Episode ${index + 1}`, title: $(link).parent().children().remove().end().text() || "",
link: url.split("/pack")[0] + "/file/" + id, link: $(link).attr("href") || "",
}); });
}); });
return episodesLink;
} }
const res = await axios.get(url, { catch (err) {
headers: { console.error(err);
Cookie: "_ga_GNR438JY8N=GS1.1.1722240350.5.0.1722240350.0.0.0; _ga=GA1.1.372196696.1722150754; unlocked=true", return [];
}, }
}); });
const episodeData = res.data;
const $ = cheerio.load(episodeData);
const links = $(".autohyperlink");
links?.map((i, link) => {
episodesLink.push({
title: $(link).parent().children().remove().end().text() || "",
link: $(link).attr("href") || "",
});
});
return episodesLink;
}
catch (err) {
console.error(err);
return [];
}
}; };
exports.getEpisodes = getEpisodes; exports.getEpisodes = getEpisodes;
async function extractKmhdLink(katlink, providerContext) { function extractKmhdLink(katlink, providerContext) {
const { axios } = providerContext; return __awaiter(this, void 0, void 0, function* () {
const res = await axios.get(katlink); const { axios } = providerContext;
const data = res.data; const res = yield axios.get(katlink);
const hubDriveRes = data.match(/hubdrive_res:\s*"([^"]+)"/)[1]; const data = res.data;
const hubDriveLink = data.match(/hubdrive_res\s*:\s*{[^}]*?link\s*:\s*"([^"]+)"/)[1]; const hubDriveRes = data.match(/hubdrive_res:\s*"([^"]+)"/)[1];
return hubDriveLink + hubDriveRes; const hubDriveLink = data.match(/hubdrive_res\s*:\s*{[^}]*?link\s*:\s*"([^"]+)"/)[1];
return hubDriveLink + hubDriveRes;
});
} }
async function extractKmhdEpisodes(katlink, providerContext) { function extractKmhdEpisodes(katlink, providerContext) {
const { axios } = providerContext; return __awaiter(this, void 0, void 0, function* () {
const res = await axios.get(katlink); const { axios } = providerContext;
const data = res.data; const res = yield axios.get(katlink);
const ids = data.match(/[\w]+_[a-f0-9]{8}/g); const data = res.data;
return ids; const ids = data.match(/[\w]+_[a-f0-9]{8}/g);
return ids;
});
} }

221
dist/katmovies/meta.js vendored
View File

@@ -1,115 +1,128 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { axios, cheerio } = providerContext; var _b;
const url = link; try {
const res = await axios.get(url); const { axios, cheerio } = providerContext;
const data = res.data; const url = link;
const $ = cheerio.load(data); const res = yield axios.get(url);
const container = $(".yQ8hqd.ksSzJd.LoQAYe").html() const data = res.data;
? $(".yQ8hqd.ksSzJd.LoQAYe") const $ = cheerio.load(data);
: $(".FxvUNb"); const container = $(".yQ8hqd.ksSzJd.LoQAYe").html()
const imdbId = container ? $(".yQ8hqd.ksSzJd.LoQAYe")
.find('a[href*="imdb.com/title/tt"]:not([href*="imdb.com/title/tt/"])') : $(".FxvUNb");
.attr("href") const imdbId = ((_b = container
?.split("/")[4] || ""; .find('a[href*="imdb.com/title/tt"]:not([href*="imdb.com/title/tt/"])')
const title = container .attr("href")) === null || _b === void 0 ? void 0 : _b.split("/")[4]) || "";
.find('li:contains("Name")') const title = container
.children() .find('li:contains("Name")')
.remove() .children()
.end() .remove()
.text(); .end()
const type = $(".yQ8hqd.ksSzJd.LoQAYe").html() ? "series" : "movie"; .text();
const synopsis = container.find('li:contains("Stars")').text(); const type = $(".yQ8hqd.ksSzJd.LoQAYe").html() ? "series" : "movie";
const image = $('h4:contains("SCREENSHOTS")').next().find("img").attr("src") || ""; const synopsis = container.find('li:contains("Stars")').text();
console.log("katGetInfo", title, synopsis, image, imdbId, type); const image = $('h4:contains("SCREENSHOTS")').next().find("img").attr("src") || "";
// Links console.log("katGetInfo", title, synopsis, image, imdbId, type);
const links = []; // Links
const directLink = []; const links = [];
// direct links const directLink = [];
$(".entry-content") // direct links
.find('p:contains("Episode")')
.each((i, element) => {
const dlLink = $(element)
.nextAll("h3,h2")
.first()
.find('a:contains("1080"),a:contains("720"),a:contains("480")')
.attr("href") || "";
const dlTitle = $(element).find("span").text();
if (link.trim().length > 0 && dlTitle.includes("Episode ")) {
directLink.push({
title: dlTitle,
link: dlLink,
});
}
});
if (directLink.length > 0) {
links.push({
quality: "",
title: title,
directLinks: directLink,
});
}
$(".entry-content")
.find("pre")
.nextUntil("div")
.filter("h2")
.each((i, element) => {
const link = $(element).find("a").attr("href");
const quality = $(element)
.text()
.match(/\b(480p|720p|1080p|2160p)\b/i)?.[0] || "";
const title = $(element).text();
if (link && title.includes("")) {
links.push({
quality,
title,
episodesLink: link,
});
}
});
if (links.length === 0 && type === "movie") {
$(".entry-content") $(".entry-content")
.find('h2:contains("DOWNLOAD"),h3:contains("DOWNLOAD")') .find('p:contains("Episode")')
.nextUntil("pre,div")
.filter("h2")
.each((i, element) => { .each((i, element) => {
const link = $(element).find("a").attr("href"); const dlLink = $(element)
const quality = $(element) .nextAll("h3,h2")
.text() .first()
.match(/\b(480p|720p|1080p|2160p)\b/i)?.[0] || ""; .find('a:contains("1080"),a:contains("720"),a:contains("480")')
const title = $(element).text(); .attr("href") || "";
if (link && !title.includes("Online")) { const dlTitle = $(element).find("span").text();
links.push({ if (link.trim().length > 0 && dlTitle.includes("Episode ")) {
quality, directLink.push({
title, title: dlTitle,
directLinks: [{ link, title, type: "movie" }], link: dlLink,
}); });
} }
}); });
if (directLink.length > 0) {
links.push({
quality: "",
title: title,
directLinks: directLink,
});
}
$(".entry-content")
.find("pre")
.nextUntil("div")
.filter("h2")
.each((i, element) => {
var _a;
const link = $(element).find("a").attr("href");
const quality = ((_a = $(element)
.text()
.match(/\b(480p|720p|1080p|2160p)\b/i)) === null || _a === void 0 ? void 0 : _a[0]) || "";
const title = $(element).text();
if (link && title.includes("")) {
links.push({
quality,
title,
episodesLink: link,
});
}
});
if (links.length === 0 && type === "movie") {
$(".entry-content")
.find('h2:contains("DOWNLOAD"),h3:contains("DOWNLOAD")')
.nextUntil("pre,div")
.filter("h2")
.each((i, element) => {
var _a;
const link = $(element).find("a").attr("href");
const quality = ((_a = $(element)
.text()
.match(/\b(480p|720p|1080p|2160p)\b/i)) === null || _a === void 0 ? void 0 : _a[0]) || "";
const title = $(element).text();
if (link && !title.includes("Online")) {
links.push({
quality,
title,
directLinks: [{ link, title, type: "movie" }],
});
}
});
}
// console.log('drive meta', title, synopsis, image, imdbId, type, links);
return {
title,
synopsis,
image,
imdbId,
type,
linkList: links,
};
} }
// console.log('drive meta', title, synopsis, image, imdbId, type, links); catch (err) {
return { console.error(err);
title, return {
synopsis, title: "",
image, synopsis: "",
imdbId, image: "",
type, imdbId: "",
linkList: links, type: "movie",
}; linkList: [],
} };
catch (err) { }
console.error(err); });
return {
title: "",
synopsis: "",
image: "",
imdbId: "",
type: "movie",
linkList: [],
};
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

View File

@@ -1,44 +1,59 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, page, signal, providerContext, }) { const getPosts = function (_a) {
const { getBaseUrl, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("kat"); const { getBaseUrl, cheerio } = providerContext;
const url = `${baseUrl + filter}/page/${page}/`; const baseUrl = yield getBaseUrl("kat");
return posts({ url, signal, cheerio }); const url = `${baseUrl + filter}/page/${page}/`;
return posts({ url, signal, cheerio });
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, signal, providerContext, }) { const getSearchPosts = function (_a) {
const { getBaseUrl, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("kat"); const { getBaseUrl, cheerio } = providerContext;
const url = `${baseUrl}/page/${page}/?s=${searchQuery}`; const baseUrl = yield getBaseUrl("kat");
return posts({ url, signal, cheerio }); const url = `${baseUrl}/page/${page}/?s=${searchQuery}`;
return posts({ url, signal, cheerio });
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts({ url, signal, cheerio, }) { function posts(_a) {
try { return __awaiter(this, arguments, void 0, function* ({ url, signal, cheerio, }) {
const res = await fetch(url, { signal }); try {
const data = await res.text(); const res = yield fetch(url, { signal });
const $ = cheerio.load(data); const data = yield res.text();
const catalog = []; const $ = cheerio.load(data);
$(".recent-posts") const catalog = [];
.children() $(".recent-posts")
.map((i, element) => { .children()
const title = $(element).find("img").attr("alt"); .map((i, element) => {
const link = $(element).find("a").attr("href"); const title = $(element).find("img").attr("alt");
const image = $(element).find("img").attr("src"); const link = $(element).find("a").attr("href");
if (title && link && image) { const image = $(element).find("img").attr("src");
catalog.push({ if (title && link && image) {
title: title.replace("Download", "").trim(), catalog.push({
link: link, title: title.replace("Download", "").trim(),
image: image, link: link,
}); image: image,
} });
}); }
return catalog; });
} return catalog;
catch (err) { }
console.error("katmovies error ", err); catch (err) {
return []; console.error("katmovies error ", err);
} return [];
}
});
} }

View File

@@ -1,91 +1,104 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
async function extractKmhdLink(katlink, providerContext) { function extractKmhdLink(katlink, providerContext) {
const { axios } = providerContext; return __awaiter(this, void 0, void 0, function* () {
const res = await axios.get(katlink); const { axios } = providerContext;
const data = res.data; const res = yield axios.get(katlink);
const hubDriveRes = data.match(/hubdrive_res:\s*"([^"]+)"/)[1]; const data = res.data;
const hubDriveLink = data.match(/hubdrive_res\s*:\s*{[^}]*?link\s*:\s*"([^"]+)"/)[1]; const hubDriveRes = data.match(/hubdrive_res:\s*"([^"]+)"/)[1];
return hubDriveLink + hubDriveRes; const hubDriveLink = data.match(/hubdrive_res\s*:\s*{[^}]*?link\s*:\s*"([^"]+)"/)[1];
return hubDriveLink + hubDriveRes;
});
} }
const getStream = async function ({ link, signal, providerContext, }) { const getStream = function (_a) {
const { axios, cheerio, extractors } = providerContext; return __awaiter(this, arguments, void 0, function* ({ link, signal, providerContext, }) {
const { hubcloudExtracter, gdFlixExtracter } = extractors; const { axios, cheerio, extractors } = providerContext;
const streamLinks = []; const { hubcloudExtracter, gdFlixExtracter } = extractors;
console.log("katGetStream", link); const streamLinks = [];
try { console.log("katGetStream", link);
if (link.includes("gdflix")) { try {
return await gdFlixExtracter(link, signal); if (link.includes("gdflix")) {
} return yield gdFlixExtracter(link, signal);
if (link.includes("kmhd")) { }
const hubcloudLink = await extractKmhdLink(link, providerContext); if (link.includes("kmhd")) {
return await hubcloudExtracter(hubcloudLink, signal); const hubcloudLink = yield extractKmhdLink(link, providerContext);
} return yield hubcloudExtracter(hubcloudLink, signal);
if (link.includes("gdflix")) { }
// resume link if (link.includes("gdflix")) {
try { // resume link
const resumeDrive = link.replace("/file", "/zfile"); try {
// console.log('resumeDrive', resumeDrive); const resumeDrive = link.replace("/file", "/zfile");
const resumeDriveRes = await axios.get(resumeDrive); // console.log('resumeDrive', resumeDrive);
const resumeDriveHtml = resumeDriveRes.data; const resumeDriveRes = yield axios.get(resumeDrive);
const $resumeDrive = cheerio.load(resumeDriveHtml); const resumeDriveHtml = resumeDriveRes.data;
const resumeLink = $resumeDrive(".btn-success").attr("href"); const $resumeDrive = cheerio.load(resumeDriveHtml);
console.log("resumeLink", resumeLink); const resumeLink = $resumeDrive(".btn-success").attr("href");
if (resumeLink) { console.log("resumeLink", resumeLink);
streamLinks.push({ if (resumeLink) {
server: "ResumeCloud", streamLinks.push({
link: resumeLink, server: "ResumeCloud",
type: "mkv", link: resumeLink,
type: "mkv",
});
}
}
catch (err) {
console.log("Resume link not found");
}
//instant link
try {
const driveres = yield axios.get(link, { timeout: 10000 });
const $drive = cheerio.load(driveres.data);
const seed = $drive(".btn-danger").attr("href") || "";
const instantToken = seed.split("=")[1];
// console.log('InstantToken', instantToken);
const InstantFromData = new FormData();
InstantFromData.append("keys", instantToken);
const videoSeedUrl = seed.split("/").slice(0, 3).join("/") + "/api";
// console.log('videoSeedUrl', videoSeedUrl);
const instantLinkRes = yield fetch(videoSeedUrl, {
method: "POST",
body: InstantFromData,
headers: {
"x-token": videoSeedUrl,
},
}); });
const instantLinkData = yield instantLinkRes.json();
console.log("instantLinkData", instantLinkData);
if (instantLinkData.error === false) {
const instantLink = instantLinkData.url;
streamLinks.push({
server: "Gdrive-Instant",
link: instantLink,
type: "mkv",
});
}
else {
console.log("Instant link not found", instantLinkData);
}
} }
} catch (err) {
catch (err) { console.log("Instant link not found", err);
console.log("Resume link not found");
}
//instant link
try {
const driveres = await axios.get(link, { timeout: 10000 });
const $drive = cheerio.load(driveres.data);
const seed = $drive(".btn-danger").attr("href") || "";
const instantToken = seed.split("=")[1];
// console.log('InstantToken', instantToken);
const InstantFromData = new FormData();
InstantFromData.append("keys", instantToken);
const videoSeedUrl = seed.split("/").slice(0, 3).join("/") + "/api";
// console.log('videoSeedUrl', videoSeedUrl);
const instantLinkRes = await fetch(videoSeedUrl, {
method: "POST",
body: InstantFromData,
headers: {
"x-token": videoSeedUrl,
},
});
const instantLinkData = await instantLinkRes.json();
console.log("instantLinkData", instantLinkData);
if (instantLinkData.error === false) {
const instantLink = instantLinkData.url;
streamLinks.push({
server: "Gdrive-Instant",
link: instantLink,
type: "mkv",
});
}
else {
console.log("Instant link not found", instantLinkData);
} }
return streamLinks;
} }
catch (err) { const stereams = yield hubcloudExtracter(link, signal);
console.log("Instant link not found", err); return stereams;
}
return streamLinks;
} }
const stereams = await hubcloudExtracter(link, signal); catch (error) {
return stereams; console.log("katgetStream error: ", error);
} return [];
catch (error) { }
console.log("katgetStream error: ", error); });
return [];
}
}; };
exports.getStream = getStream; exports.getStream = getStream;

100
dist/kissKh/meta.js vendored
View File

@@ -1,50 +1,60 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { axios } = providerContext; var _b, _c;
const res = await axios.get(link); try {
const data = res.data; const { axios } = providerContext;
const meta = { const res = yield axios.get(link);
title: data.title, const data = res.data;
synopsis: data.description, const meta = {
image: data.thumbnail, title: data.title,
tags: [data?.releaseDate?.split("-")[0], data?.status, data?.type], synopsis: data.description,
imdbId: "", image: data.thumbnail,
type: data.episodesCount > 1 ? "series" : "movie", tags: [(_b = data === null || data === void 0 ? void 0 : data.releaseDate) === null || _b === void 0 ? void 0 : _b.split("-")[0], data === null || data === void 0 ? void 0 : data.status, data === null || data === void 0 ? void 0 : data.type],
}; imdbId: "",
const linkList = []; type: data.episodesCount > 1 ? "series" : "movie",
const subLinks = []; };
data?.episodes?.reverse().map((episode) => { const linkList = [];
const title = "Episode " + episode?.number; const subLinks = [];
const link = episode?.id?.toString(); (_c = data === null || data === void 0 ? void 0 : data.episodes) === null || _c === void 0 ? void 0 : _c.reverse().map((episode) => {
if (link && title) { var _a;
subLinks.push({ const title = "Episode " + (episode === null || episode === void 0 ? void 0 : episode.number);
title, const link = (_a = episode === null || episode === void 0 ? void 0 : episode.id) === null || _a === void 0 ? void 0 : _a.toString();
link, if (link && title) {
}); subLinks.push({
} title,
}); link,
linkList.push({ });
title: meta.title, }
directLinks: subLinks, });
}); linkList.push({
return { title: meta.title,
...meta, directLinks: subLinks,
linkList: linkList, });
}; return Object.assign(Object.assign({}, meta), { linkList: linkList });
} }
catch (err) { catch (err) {
console.error(err); console.error(err);
return { return {
title: "", title: "",
synopsis: "", synopsis: "",
image: "", image: "",
imdbId: "", imdbId: "",
type: "movie", type: "movie",
linkList: [], linkList: [],
}; };
} }
});
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

118
dist/kissKh/posts.js vendored
View File

@@ -1,59 +1,73 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, signal, providerContext, }) { const getPosts = function (_a) {
const { getBaseUrl, axios } = providerContext; return __awaiter(this, arguments, void 0, function* ({ filter, signal, providerContext, }) {
const baseUrl = await getBaseUrl("kissKh"); var _b;
const url = `${baseUrl + filter}&type=0`; const { getBaseUrl, axios } = providerContext;
try { const baseUrl = yield getBaseUrl("kissKh");
const res = await axios.get(url, { signal }); const url = `${baseUrl + filter}&type=0`;
const data = res.data?.data; try {
const catalog = []; const res = yield axios.get(url, { signal });
data?.map((element) => { const data = (_b = res.data) === null || _b === void 0 ? void 0 : _b.data;
const title = element.title; const catalog = [];
const link = baseUrl + `/api/DramaList/Drama/${element?.id}?isq=false`; data === null || data === void 0 ? void 0 : data.map((element) => {
const image = element.thumbnail; const title = element.title;
if (title && link && image) { const link = baseUrl + `/api/DramaList/Drama/${element === null || element === void 0 ? void 0 : element.id}?isq=false`;
catalog.push({ const image = element.thumbnail;
title: title, if (title && link && image) {
link: link, catalog.push({
image: image, title: title,
}); link: link,
} image: image,
}); });
return catalog; }
} });
catch (err) { return catalog;
console.error("kiss error ", err); }
return []; catch (err) {
} console.error("kiss error ", err);
return [];
}
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, signal, providerContext, }) { const getSearchPosts = function (_a) {
const { getBaseUrl, axios } = providerContext; return __awaiter(this, arguments, void 0, function* ({ searchQuery, signal, providerContext, }) {
const baseUrl = await getBaseUrl("kissKh"); const { getBaseUrl, axios } = providerContext;
const url = `${baseUrl}/api/DramaList/Search?q=${searchQuery}&type=0`; const baseUrl = yield getBaseUrl("kissKh");
try { const url = `${baseUrl}/api/DramaList/Search?q=${searchQuery}&type=0`;
const res = await axios.get(url, { signal }); try {
const data = res.data; const res = yield axios.get(url, { signal });
const catalog = []; const data = res.data;
data?.map((element) => { const catalog = [];
const title = element.title; data === null || data === void 0 ? void 0 : data.map((element) => {
const link = baseUrl + `/api/DramaList/Drama/${element?.id}?isq=false`; const title = element.title;
const image = element.thumbnail; const link = baseUrl + `/api/DramaList/Drama/${element === null || element === void 0 ? void 0 : element.id}?isq=false`;
if (title && link && image) { const image = element.thumbnail;
catalog.push({ if (title && link && image) {
title: title, catalog.push({
link: link, title: title,
image: image, link: link,
}); image: image,
} });
}); }
return catalog; });
} return catalog;
catch (err) { }
console.error("kiss error ", err); catch (err) {
return []; console.error("kiss error ", err);
} return [];
}
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;

83
dist/kissKh/stream.js vendored
View File

@@ -1,42 +1,55 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const types_1 = require("../types"); const types_1 = require("../types");
const getStream = async function ({ link: id, providerContext, }) { const getStream = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link: id, providerContext, }) {
const { axios, getBaseUrl } = providerContext; var _b, _c, _d;
const streamLinks = []; try {
const subtitles = []; const { axios, getBaseUrl } = providerContext;
const baseUrl = await getBaseUrl("kissKh"); const streamLinks = [];
const streamUrl = "https://adorable-salamander-ecbb21.netlify.app/api/kisskh/video?id=" + const subtitles = [];
id; const baseUrl = yield getBaseUrl("kissKh");
const res = await axios.get(streamUrl); const streamUrl = "https://adorable-salamander-ecbb21.netlify.app/api/kisskh/video?id=" +
const stream = res.data?.source?.Video; id;
const subData = res.data?.subtitles; const res = yield axios.get(streamUrl);
subData?.map((sub) => { const stream = (_c = (_b = res.data) === null || _b === void 0 ? void 0 : _b.source) === null || _c === void 0 ? void 0 : _c.Video;
subtitles.push({ const subData = (_d = res.data) === null || _d === void 0 ? void 0 : _d.subtitles;
title: sub?.label, subData === null || subData === void 0 ? void 0 : subData.map((sub) => {
language: sub?.land, var _a;
type: sub?.src?.includes(".vtt") subtitles.push({
? types_1.TextTrackType.VTT title: sub === null || sub === void 0 ? void 0 : sub.label,
: types_1.TextTrackType.SUBRIP, language: sub === null || sub === void 0 ? void 0 : sub.land,
uri: sub?.src, type: ((_a = sub === null || sub === void 0 ? void 0 : sub.src) === null || _a === void 0 ? void 0 : _a.includes(".vtt"))
? types_1.TextTrackType.VTT
: types_1.TextTrackType.SUBRIP,
uri: sub === null || sub === void 0 ? void 0 : sub.src,
});
}); });
}); streamLinks.push({
streamLinks.push({ server: "kissKh",
server: "kissKh", link: stream,
link: stream, type: "m3u8",
type: "m3u8", subtitles,
subtitles, headers: {
headers: { referer: baseUrl,
referer: baseUrl, },
}, });
}); return streamLinks;
return streamLinks; }
} catch (err) {
catch (err) { console.error(err);
console.error(err); return [];
return []; }
} });
}; };
exports.getStream = getStream; exports.getStream = getStream;

View File

@@ -1,34 +1,45 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getEpisodes = void 0; exports.getEpisodes = void 0;
const getEpisodes = async function ({ url, providerContext, }) { const getEpisodes = function (_a) {
const { axios, cheerio, commonHeaders: headers } = providerContext; return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) {
console.log("getEpisodeLinks", url); const { axios, cheerio, commonHeaders: headers } = providerContext;
try { console.log("getEpisodeLinks", url);
const res = await axios.get(url, { headers }); try {
const $ = cheerio.load(res.data); const res = yield axios.get(url, { headers });
const container = $(".entry-content,.entry-inner"); const $ = cheerio.load(res.data);
$(".unili-content,.code-block-1").remove(); const container = $(".entry-content,.entry-inner");
const episodes = []; $(".unili-content,.code-block-1").remove();
container.find("h4").each((index, element) => { const episodes = [];
const el = $(element); container.find("h4").each((index, element) => {
const title = el.text().replaceAll("-", "").replaceAll(":", ""); const el = $(element);
const link = el const title = el.text().replaceAll("-", "").replaceAll(":", "");
.next("p") const link = el
.find('.btn-outline[style="background:linear-gradient(135deg,#ed0b0b,#f2d152); color: white;"]') .next("p")
.parent() .find('.btn-outline[style="background:linear-gradient(135deg,#ed0b0b,#f2d152); color: white;"]')
.attr("href"); .parent()
if (title && link) { .attr("href");
episodes.push({ title, link }); if (title && link) {
} episodes.push({ title, link });
}); }
// console.log(episodes); });
return episodes; // console.log(episodes);
} return episodes;
catch (err) { }
console.log("getEpisodeLinks error: "); catch (err) {
// console.error(err); console.log("getEpisodeLinks error: ");
return []; // console.error(err);
} return [];
}
});
}; };
exports.getEpisodes = getEpisodes; exports.getEpisodes = getEpisodes;

View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const headers = { const headers = {
@@ -17,88 +26,69 @@ const headers = {
"Upgrade-Insecure-Requests": "1", "Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0",
}; };
const getMeta = async ({ link, providerContext, }) => { const getMeta = (_a) => __awaiter(void 0, [_a], void 0, function* ({ link, providerContext, }) {
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
try { try {
const { axios, cheerio } = providerContext; const { axios, cheerio } = providerContext;
const url = link; const url = link;
console.log("url", url); console.log("url", url);
const baseUrl = url.split("/").slice(0, 3).join("/"); const baseUrl = url.split("/").slice(0, 3).join("/");
const response = await axios.get(url, { const response = yield axios.get(url, {
headers: { headers: Object.assign(Object.assign({}, headers), { Referer: baseUrl }),
...headers,
Referer: baseUrl,
},
}); });
const $ = cheerio.load(response.data); const $ = cheerio.load(response.data);
const infoContainer = $(".entry-content,.post-inner"); const infoContainer = $(".entry-content,.post-inner");
const heading = infoContainer?.find("h3"); const heading = infoContainer === null || infoContainer === void 0 ? void 0 : infoContainer.find("h3");
const imdbId = const imdbId =
//@ts-ignore //@ts-ignore
heading?.next("p")?.find("a")?.[0]?.attribs?.href?.match(/tt\d+/g)?.[0] || ((_g = (_f = (_e = (_d = (_c = (_b = heading === null || heading === void 0 ? void 0 : heading.next("p")) === null || _b === void 0 ? void 0 : _b.find("a")) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.attribs) === null || _e === void 0 ? void 0 : _e.href) === null || _f === void 0 ? void 0 : _f.match(/tt\d+/g)) === null || _g === void 0 ? void 0 : _g[0]) ||
infoContainer.text().match(/tt\d+/g)?.[0] || ((_h = infoContainer.text().match(/tt\d+/g)) === null || _h === void 0 ? void 0 : _h[0]) ||
""; "";
// console.log(imdbId) // console.log(imdbId)
const type = heading?.next("p")?.text()?.includes("Series Name") const type = ((_k = (_j = heading === null || heading === void 0 ? void 0 : heading.next("p")) === null || _j === void 0 ? void 0 : _j.text()) === null || _k === void 0 ? void 0 : _k.includes("Series Name"))
? "series" ? "series"
: "movie"; : "movie";
// console.log(type); // console.log(type);
// title // title
const titleRegex = /Name: (.+)/; const titleRegex = /Name: (.+)/;
const title = heading?.next("p")?.text()?.match(titleRegex)?.[1] || ""; const title = ((_o = (_m = (_l = heading === null || heading === void 0 ? void 0 : heading.next("p")) === null || _l === void 0 ? void 0 : _l.text()) === null || _m === void 0 ? void 0 : _m.match(titleRegex)) === null || _o === void 0 ? void 0 : _o[1]) || "";
// console.log(title); // console.log(title);
// synopsis // synopsis
const synopsisNode = //@ts-ignore const synopsisNode = //@ts-ignore
infoContainer?.find("p")?.next("h3,h4")?.next("p")?.[0]?.children?.[0]; (_t = (_s = (_r = (_q = (_p = infoContainer === null || infoContainer === void 0 ? void 0 : infoContainer.find("p")) === null || _p === void 0 ? void 0 : _p.next("h3,h4")) === null || _q === void 0 ? void 0 : _q.next("p")) === null || _r === void 0 ? void 0 : _r[0]) === null || _s === void 0 ? void 0 : _s.children) === null || _t === void 0 ? void 0 : _t[0];
const synopsis = synopsisNode && "data" in synopsisNode ? synopsisNode.data : ""; const synopsis = synopsisNode && "data" in synopsisNode ? synopsisNode.data : "";
// console.log(synopsis); // console.log(synopsis);
// image // image
let image = infoContainer?.find("img[data-lazy-src]")?.attr("data-lazy-src") || ""; let image = ((_u = infoContainer === null || infoContainer === void 0 ? void 0 : infoContainer.find("img[data-lazy-src]")) === null || _u === void 0 ? void 0 : _u.attr("data-lazy-src")) || "";
if (image.startsWith("//")) { if (image.startsWith("//")) {
image = "https:" + image; image = "https:" + image;
} }
// console.log(image); // console.log(image);
// console.log({title, synopsis, image, imdbId, type}); // console.log({title, synopsis, image, imdbId, type});
/// Links /// Links
const hr = infoContainer?.first()?.find("hr"); const hr = (_v = infoContainer === null || infoContainer === void 0 ? void 0 : infoContainer.first()) === null || _v === void 0 ? void 0 : _v.find("hr");
const list = hr?.nextUntil("hr"); const list = hr === null || hr === void 0 ? void 0 : hr.nextUntil("hr");
const links = []; const links = [];
list.each((index, element) => { list.each((index, element) => {
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
element = $(element); element = $(element);
// title // title
const title = element?.text() || ""; const title = (element === null || element === void 0 ? void 0 : element.text()) || "";
const quality = element?.text().match(/\d+p\b/)?.[0] || ""; const quality = ((_a = element === null || element === void 0 ? void 0 : element.text().match(/\d+p\b/)) === null || _a === void 0 ? void 0 : _a[0]) || "";
// console.log(title); // console.log(title);
// movieLinks // movieLinks
const movieLinks = element const movieLinks = (element === null || element === void 0 ? void 0 : element.next().find(".dwd-button").text().toLowerCase().includes("download"))
?.next() ? (_c = (_b = element === null || element === void 0 ? void 0 : element.next().find(".dwd-button")) === null || _b === void 0 ? void 0 : _b.parent()) === null || _c === void 0 ? void 0 : _c.attr("href")
.find(".dwd-button")
.text()
.toLowerCase()
.includes("download")
? element?.next().find(".dwd-button")?.parent()?.attr("href")
: ""; : "";
// episode links // episode links
const vcloudLinks = element const vcloudLinks = (_e = (_d = element === null || element === void 0 ? void 0 : element.next().find(".btn-outline[style='background:linear-gradient(135deg,#ed0b0b,#f2d152); color: white;'],.btn-outline[style='background:linear-gradient(135deg,#ed0b0b,#f2d152); color: #fdf8f2;']")) === null || _d === void 0 ? void 0 : _d.parent()) === null || _e === void 0 ? void 0 : _e.attr("href");
?.next()
.find(".btn-outline[style='background:linear-gradient(135deg,#ed0b0b,#f2d152); color: white;'],.btn-outline[style='background:linear-gradient(135deg,#ed0b0b,#f2d152); color: #fdf8f2;']")
?.parent()
?.attr("href");
console.log(title); console.log(title);
const episodesLink = (vcloudLinks const episodesLink = (vcloudLinks
? vcloudLinks ? vcloudLinks
: element : (element === null || element === void 0 ? void 0 : element.next().find(".dwd-button").text().toLowerCase().includes("episode"))
?.next() ? (_g = (_f = element === null || element === void 0 ? void 0 : element.next().find(".dwd-button")) === null || _f === void 0 ? void 0 : _f.parent()) === null || _g === void 0 ? void 0 : _g.attr("href")
.find(".dwd-button")
.text()
.toLowerCase()
.includes("episode")
? element?.next().find(".dwd-button")?.parent()?.attr("href")
: "") || : "") ||
element ((_j = (_h = element === null || element === void 0 ? void 0 : element.next().find(".btn-outline[style='background:linear-gradient(135deg,#0ebac3,#09d261); color: white;']")) === null || _h === void 0 ? void 0 : _h.parent()) === null || _j === void 0 ? void 0 : _j.attr("href"));
?.next()
.find(".btn-outline[style='background:linear-gradient(135deg,#0ebac3,#09d261); color: white;']")
?.parent()
?.attr("href");
if (movieLinks || episodesLink) { if (movieLinks || episodesLink) {
links.push({ links.push({
title, title,
@@ -133,5 +123,5 @@ const getMeta = async ({ link, providerContext, }) => {
linkList: [], linkList: [],
}; };
} }
}; });
exports.getMeta = getMeta; exports.getMeta = getMeta;

View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const headers = { const headers = {
@@ -17,57 +26,55 @@ const headers = {
"Upgrade-Insecure-Requests": "1", "Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",
}; };
const getPosts = async ({ filter, page, providerValue, signal, providerContext, }) => { const getPosts = (_a) => __awaiter(void 0, [_a], void 0, function* ({ filter, page, providerValue, signal, providerContext, }) {
const { getBaseUrl } = providerContext; const { getBaseUrl } = providerContext;
const baseUrl = await getBaseUrl("lux"); const baseUrl = yield getBaseUrl("lux");
console.log("vegaGetPosts baseUrl:", providerValue, baseUrl); console.log("vegaGetPosts baseUrl:", providerValue, baseUrl);
const url = `${baseUrl}/${filter}/page/${page}/`; const url = `${baseUrl}/${filter}/page/${page}/`;
console.log("lux url:", url); console.log("lux url:", url);
return posts(url, signal, providerContext); return posts(url, signal, providerContext);
}; });
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async ({ searchQuery, page, providerValue, signal, providerContext, }) => { const getSearchPosts = (_a) => __awaiter(void 0, [_a], void 0, function* ({ searchQuery, page, providerValue, signal, providerContext, }) {
const { getBaseUrl } = providerContext; const { getBaseUrl } = providerContext;
const baseUrl = await getBaseUrl("lux"); const baseUrl = yield getBaseUrl("lux");
console.log("vegaGetPosts baseUrl:", providerValue, baseUrl); console.log("vegaGetPosts baseUrl:", providerValue, baseUrl);
const url = `${baseUrl}/page/${page}/?s=${searchQuery}`; const url = `${baseUrl}/page/${page}/?s=${searchQuery}`;
console.log("lux url:", url); console.log("lux url:", url);
return posts(url, signal, providerContext); return posts(url, signal, providerContext);
}; });
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts(url, signal, providerContext) { function posts(url, signal, providerContext) {
try { return __awaiter(this, void 0, void 0, function* () {
const { axios, cheerio } = providerContext; var _a, _b;
const urlRes = await axios.get(url, { headers, signal }); try {
const $ = cheerio.load(urlRes.data); const { axios, cheerio } = providerContext;
const posts = []; const urlRes = yield axios.get(url, { headers, signal });
$(".blog-items") const $ = cheerio.load(urlRes.data);
?.children("article") const posts = [];
?.each((index, element) => { (_b = (_a = $(".blog-items")) === null || _a === void 0 ? void 0 : _a.children("article")) === null || _b === void 0 ? void 0 : _b.each((index, element) => {
const post = { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
title: $(element) const post = {
?.find("a") title: ((_e = (_d = (_c = (_b = (_a = $(element)) === null || _a === void 0 ? void 0 : _a.find("a")) === null || _b === void 0 ? void 0 : _b.attr("title")) === null || _c === void 0 ? void 0 : _c.replace("Download", "")) === null || _d === void 0 ? void 0 : _d.match(/^(.*?)\s*\((\d{4})\)|^(.*?)\s*\((Season \d+)\)/)) === null || _e === void 0 ? void 0 : _e[0]) ||
?.attr("title") ((_h = (_g = (_f = $(element)) === null || _f === void 0 ? void 0 : _f.find("a")) === null || _g === void 0 ? void 0 : _g.attr("title")) === null || _h === void 0 ? void 0 : _h.replace("Download", "")) ||
?.replace("Download", "") "",
?.match(/^(.*?)\s*\((\d{4})\)|^(.*?)\s*\((Season \d+)\)/)?.[0] || link: ((_k = (_j = $(element)) === null || _j === void 0 ? void 0 : _j.find("a")) === null || _k === void 0 ? void 0 : _k.attr("href")) || "",
$(element)?.find("a")?.attr("title")?.replace("Download", "") || image: $(element).find("a").find("img").attr("data-lazy-src") ||
"", $(element).find("a").find("img").attr("data-src") ||
link: $(element)?.find("a")?.attr("href") || "", $(element).find("a").find("img").attr("src") ||
image: $(element).find("a").find("img").attr("data-lazy-src") || "",
$(element).find("a").find("img").attr("data-src") || };
$(element).find("a").find("img").attr("src") || if (post.image.startsWith("//")) {
"", post.image = "https:" + post.image;
}; }
if (post.image.startsWith("//")) { posts.push(post);
post.image = "https:" + post.image; });
} // console.log(posts);
posts.push(post); return posts;
}); }
// console.log(posts); catch (error) {
return posts; console.error("vegaGetPosts error:", error);
} return [];
catch (error) { }
console.error("vegaGetPosts error:", error); });
return [];
}
} }

View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = getStream; exports.getStream = getStream;
const headers = { const headers = {
@@ -17,49 +26,35 @@ const headers = {
"Upgrade-Insecure-Requests": "1", "Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0",
}; };
async function getStream({ link, type, signal, providerContext, }) { function getStream(_a) {
const { axios, cheerio, extractors } = providerContext; return __awaiter(this, arguments, void 0, function* ({ link, type, signal, providerContext, }) {
const { hubcloudExtracter } = extractors; var _b, _c, _d, _e;
try { const { axios, cheerio, extractors } = providerContext;
const streamLinks = []; const { hubcloudExtracter } = extractors;
console.log("dotlink", link); try {
if (type === "movie") { const streamLinks = [];
// vlink console.log("dotlink", link);
const dotlinkRes = await axios(`${link}`, { headers }); if (type === "movie") {
const dotlinkText = dotlinkRes.data; // vlink
// console.log('dotlinkText', dotlinkText); const dotlinkRes = yield axios(`${link}`, { headers });
const vlink = dotlinkText.match(/<a\s+href="([^"]*cloud\.[^"]*)"/i) || []; const dotlinkText = dotlinkRes.data;
// console.log('vLink', vlink[1]); // console.log('dotlinkText', dotlinkText);
link = vlink[1]; const vlink = dotlinkText.match(/<a\s+href="([^"]*cloud\.[^"]*)"/i) || [];
// filepress link // console.log('vLink', vlink[1]);
try { link = vlink[1];
const $ = cheerio.load(dotlinkText); // filepress link
const filepressLink = $('.btn.btn-sm.btn-outline[style="background:linear-gradient(135deg,rgb(252,185,0) 0%,rgb(0,0,0)); color: #fdf8f2;"]') try {
.parent() const $ = cheerio.load(dotlinkText);
.attr("href"); const filepressLink = $('.btn.btn-sm.btn-outline[style="background:linear-gradient(135deg,rgb(252,185,0) 0%,rgb(0,0,0)); color: #fdf8f2;"]')
// console.log('filepressLink', filepressLink); .parent()
const filepressID = filepressLink?.split("/").pop(); .attr("href");
const filepressBaseUrl = filepressLink // console.log('filepressLink', filepressLink);
?.split("/") const filepressID = filepressLink === null || filepressLink === void 0 ? void 0 : filepressLink.split("/").pop();
.slice(0, -2) const filepressBaseUrl = filepressLink === null || filepressLink === void 0 ? void 0 : filepressLink.split("/").slice(0, -2).join("/");
.join("/"); // console.log('filepressID', filepressID);
// console.log('filepressID', filepressID); // console.log('filepressBaseUrl', filepressBaseUrl);
// console.log('filepressBaseUrl', filepressBaseUrl); const filepressTokenRes = yield axios.post(filepressBaseUrl + "/api/file/downlaod/", {
const filepressTokenRes = await axios.post(filepressBaseUrl + "/api/file/downlaod/", { id: filepressID,
id: filepressID,
method: "indexDownlaod",
captchaValue: null,
}, {
headers: {
"Content-Type": "application/json",
Referer: filepressBaseUrl,
},
});
// console.log('filepressTokenRes', filepressTokenRes.data);
if (filepressTokenRes.data?.status) {
const filepressToken = filepressTokenRes.data?.data;
const filepressStreamLink = await axios.post(filepressBaseUrl + "/api/file/downlaod2/", {
id: filepressToken,
method: "indexDownlaod", method: "indexDownlaod",
captchaValue: null, captchaValue: null,
}, { }, {
@@ -68,27 +63,41 @@ async function getStream({ link, type, signal, providerContext, }) {
Referer: filepressBaseUrl, Referer: filepressBaseUrl,
}, },
}); });
// console.log('filepressStreamLink', filepressStreamLink.data); // console.log('filepressTokenRes', filepressTokenRes.data);
streamLinks.push({ if ((_b = filepressTokenRes.data) === null || _b === void 0 ? void 0 : _b.status) {
server: "filepress", const filepressToken = (_c = filepressTokenRes.data) === null || _c === void 0 ? void 0 : _c.data;
link: filepressStreamLink.data?.data?.[0], const filepressStreamLink = yield axios.post(filepressBaseUrl + "/api/file/downlaod2/", {
type: "mkv", id: filepressToken,
}); method: "indexDownlaod",
captchaValue: null,
}, {
headers: {
"Content-Type": "application/json",
Referer: filepressBaseUrl,
},
});
// console.log('filepressStreamLink', filepressStreamLink.data);
streamLinks.push({
server: "filepress",
link: (_e = (_d = filepressStreamLink.data) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e[0],
type: "mkv",
});
}
}
catch (error) {
console.log("filepress error: ");
// console.error(error);
} }
} }
catch (error) { return yield hubcloudExtracter(link, signal);
console.log("filepress error: "); }
// console.error(error); catch (error) {
console.log("getStream error: ", error);
if (error.message.includes("Aborted")) {
} }
else {
}
return [];
} }
return await hubcloudExtracter(link, signal); });
}
catch (error) {
console.log("getStream error: ", error);
if (error.message.includes("Aborted")) {
}
else {
}
return [];
}
} }

95
dist/mod/episodes.js vendored
View File

@@ -1,49 +1,60 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getEpisodes = void 0; exports.getEpisodes = void 0;
const getEpisodes = async function ({ url, providerContext, }) { const getEpisodes = function (_a) {
const { axios, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) {
try { var _b;
if (url.includes("url=")) { const { axios, cheerio } = providerContext;
url = atob(url.split("url=")[1]); try {
} if (url.includes("url=")) {
const res = await axios.get(url); url = atob(url.split("url=")[1]);
const html = res.data;
let $ = cheerio.load(html);
if (url.includes("url=")) {
const newUrl = $("meta[http-equiv='refresh']")
.attr("content")
?.split("url=")[1];
const res2 = await axios.get(newUrl || url);
const html2 = res2.data;
$ = cheerio.load(html2);
}
const episodeLinks = [];
$("h3,h4").map((i, element) => {
const seriesTitle = $(element).text();
const episodesLink = $(element).find("a").attr("href");
if (episodesLink && episodesLink !== "#") {
episodeLinks.push({
title: seriesTitle.trim() || "No title found",
link: episodesLink || "",
});
} }
}); const res = yield axios.get(url);
$("a.maxbutton").map((i, element) => { const html = res.data;
const seriesTitle = $(element).children("span").text(); let $ = cheerio.load(html);
const episodesLink = $(element).attr("href"); if (url.includes("url=")) {
if (episodesLink && episodesLink !== "#") { const newUrl = (_b = $("meta[http-equiv='refresh']")
episodeLinks.push({ .attr("content")) === null || _b === void 0 ? void 0 : _b.split("url=")[1];
title: seriesTitle.trim() || "No title found", const res2 = yield axios.get(newUrl || url);
link: episodesLink || "", const html2 = res2.data;
}); $ = cheerio.load(html2);
} }
}); const episodeLinks = [];
return episodeLinks; $("h3,h4").map((i, element) => {
} const seriesTitle = $(element).text();
catch (err) { const episodesLink = $(element).find("a").attr("href");
console.error(err); if (episodesLink && episodesLink !== "#") {
return []; episodeLinks.push({
} title: seriesTitle.trim() || "No title found",
link: episodesLink || "",
});
}
});
$("a.maxbutton").map((i, element) => {
const seriesTitle = $(element).children("span").text();
const episodesLink = $(element).attr("href");
if (episodesLink && episodesLink !== "#") {
episodeLinks.push({
title: seriesTitle.trim() || "No title found",
link: episodesLink || "",
});
}
});
return episodeLinks;
}
catch (err) {
console.error(err);
return [];
}
});
}; };
exports.getEpisodes = getEpisodes; exports.getEpisodes = getEpisodes;

127
dist/mod/meta.js vendored
View File

@@ -1,62 +1,75 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { axios, cheerio } = providerContext; var _b;
const url = link; try {
const res = await axios.get(url); const { axios, cheerio } = providerContext;
const data = res.data; const url = link;
const $ = cheerio.load(data); const res = yield axios.get(url);
const meta = { const data = res.data;
title: $(".imdbwp__title").text(), const $ = cheerio.load(data);
synopsis: $(".imdbwp__teaser").text(), const meta = {
image: $(".imdbwp__thumb").find("img").attr("src") || "", title: $(".imdbwp__title").text(),
imdbId: $(".imdbwp__link").attr("href")?.split("/")[4] || "", synopsis: $(".imdbwp__teaser").text(),
type: $(".thecontent").text().toLocaleLowerCase().includes("season") image: $(".imdbwp__thumb").find("img").attr("src") || "",
? "series" imdbId: ((_b = $(".imdbwp__link").attr("href")) === null || _b === void 0 ? void 0 : _b.split("/")[4]) || "",
: "movie", type: $(".thecontent").text().toLocaleLowerCase().includes("season")
}; ? "series"
const links = []; : "movie",
$("h3,h4").map((i, element) => { };
const seriesTitle = $(element).text(); const links = [];
// const batchZipLink = $(element) $("h3,h4").map((i, element) => {
// .next("p") var _a;
// .find(".maxbutton-batch-zip,.maxbutton-zip-download") const seriesTitle = $(element).text();
// .attr("href"); // const batchZipLink = $(element)
const episodesLink = $(element) // .next("p")
.next("p") // .find(".maxbutton-batch-zip,.maxbutton-zip-download")
.find(".maxbutton-episode-links,.maxbutton-g-drive,.maxbutton-af-download") // .attr("href");
.attr("href"); const episodesLink = $(element)
const movieLink = $(element) .next("p")
.next("p") .find(".maxbutton-episode-links,.maxbutton-g-drive,.maxbutton-af-download")
.find(".maxbutton-download-links") .attr("href");
.attr("href"); const movieLink = $(element)
if (movieLink || .next("p")
(episodesLink && episodesLink !== "javascript:void(0);")) { .find(".maxbutton-download-links")
links.push({ .attr("href");
title: seriesTitle.replace("Download ", "").trim() || "Download", if (movieLink ||
episodesLink: episodesLink || "", (episodesLink && episodesLink !== "javascript:void(0);")) {
directLinks: movieLink links.push({
? [{ link: movieLink, title: "Movie", type: "movie" }] title: seriesTitle.replace("Download ", "").trim() || "Download",
: [], episodesLink: episodesLink || "",
quality: seriesTitle?.match(/\d+p\b/)?.[0] || "", directLinks: movieLink
}); ? [{ link: movieLink, title: "Movie", type: "movie" }]
} : [],
}); quality: ((_a = seriesTitle === null || seriesTitle === void 0 ? void 0 : seriesTitle.match(/\d+p\b/)) === null || _a === void 0 ? void 0 : _a[0]) || "",
// console.log('mod meta', links); });
return { ...meta, linkList: links }; }
} });
catch (err) { // console.log('mod meta', links);
console.error(err); return Object.assign(Object.assign({}, meta), { linkList: links });
return { }
title: "", catch (err) {
synopsis: "", console.error(err);
image: "", return {
imdbId: "", title: "",
type: "movie", synopsis: "",
linkList: [], image: "",
}; imdbId: "",
} type: "movie",
linkList: [],
};
}
});
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

87
dist/mod/posts.js vendored
View File

@@ -1,44 +1,59 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, page, signal, providerContext, }) { const getPosts = function (_a) {
const { getBaseUrl, axios, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("Moviesmod"); const { getBaseUrl, axios, cheerio } = providerContext;
const url = `${baseUrl + filter}/page/${page}/`; const baseUrl = yield getBaseUrl("Moviesmod");
return posts({ url, signal, axios, cheerio }); const url = `${baseUrl + filter}/page/${page}/`;
return posts({ url, signal, axios, cheerio });
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, signal, providerContext, }) { const getSearchPosts = function (_a) {
const { getBaseUrl, axios, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("Moviesmod"); const { getBaseUrl, axios, cheerio } = providerContext;
const url = `${baseUrl}/search/${searchQuery}/page/${page}/`; const baseUrl = yield getBaseUrl("Moviesmod");
return posts({ url, signal, axios, cheerio }); const url = `${baseUrl}/search/${searchQuery}/page/${page}/`;
return posts({ url, signal, axios, cheerio });
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts({ url, signal, axios, cheerio, }) { function posts(_a) {
try { return __awaiter(this, arguments, void 0, function* ({ url, signal, axios, cheerio, }) {
const res = await axios.get(url, { signal }); try {
const data = res.data; const res = yield axios.get(url, { signal });
const $ = cheerio.load(data); const data = res.data;
const catalog = []; const $ = cheerio.load(data);
$(".post-cards") const catalog = [];
.find("article") $(".post-cards")
.map((i, element) => { .find("article")
const title = $(element).find("a").attr("title"); .map((i, element) => {
const link = $(element).find("a").attr("href"); const title = $(element).find("a").attr("title");
const image = $(element).find("img").attr("src"); const link = $(element).find("a").attr("href");
if (title && link && image) { const image = $(element).find("img").attr("src");
catalog.push({ if (title && link && image) {
title: title, catalog.push({
link: link, title: title,
image: image, link: link,
}); image: image,
} });
}); }
return catalog; });
} return catalog;
catch (err) { }
console.error("modGetPosts error ", err); catch (err) {
return []; console.error("modGetPosts error ", err);
} return [];
}
});
} }

448
dist/mod/stream.js vendored
View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const headers = { const headers = {
@@ -17,192 +26,199 @@ const headers = {
"Upgrade-Insecure-Requests": "1", "Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",
}; };
const getStream = async function ({ link: url, type, providerContext, }) { const getStream = function (_a) {
const { axios, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ link: url, type, providerContext, }) {
try { var _b, _c;
const modGetEpisodeLinks = async function ({ url, providerContext, }) { const { axios, cheerio } = providerContext;
const { axios, cheerio } = providerContext; try {
const modGetEpisodeLinks = function (_a) {
return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) {
var _b;
const { axios, cheerio } = providerContext;
try {
if (url.includes("url=")) {
url = atob(url.split("url=")[1]);
}
const res = yield axios.get(url);
const html = res.data;
let $ = cheerio.load(html);
if (url.includes("url=")) {
const newUrl = (_b = $("meta[http-equiv='refresh']")
.attr("content")) === null || _b === void 0 ? void 0 : _b.split("url=")[1];
const res2 = yield axios.get(newUrl || url);
const html2 = res2.data;
$ = cheerio.load(html2);
}
const episodeLinks = [];
$("h3,h4").map((i, element) => {
const seriesTitle = $(element).text();
const episodesLink = $(element).find("a").attr("href");
if (episodesLink && episodesLink !== "#") {
episodeLinks.push({
title: seriesTitle.trim() || "No title found",
link: episodesLink || "",
});
}
});
$("a.maxbutton").map((i, element) => {
const seriesTitle = $(element).children("span").text();
const episodesLink = $(element).attr("href");
if (episodesLink && episodesLink !== "#") {
episodeLinks.push({
title: seriesTitle.trim() || "No title found",
link: episodesLink || "",
});
}
});
return episodeLinks;
}
catch (err) {
console.error(err);
return [];
}
});
};
console.log("modGetStream", type, url);
if (type === "movie") {
const servers = yield modGetEpisodeLinks({ url, providerContext });
url = servers[0].link || url;
}
let downloadLink = yield modExtractor(url, providerContext);
// console.log(downloadLink.data);
const ddl = ((_c = (_b = downloadLink === null || downloadLink === void 0 ? void 0 : downloadLink.data) === null || _b === void 0 ? void 0 : _b.match(/content="0;url=(.*?)"/)) === null || _c === void 0 ? void 0 : _c[1]) || url;
// console.log('ddl', url);
// console.log(ddl);
// console.log(ddl);
const servers = [];
const driveLink = yield isDriveLink(ddl);
const driveRes = yield axios.get(driveLink, { headers });
const driveHtml = driveRes.data;
const $drive = cheerio.load(driveHtml);
try { try {
if (url.includes("url=")) { const resumeBot = $drive(".btn.btn-light").attr("href") || "";
url = atob(url.split("url=")[1]); const resumeBotRes = yield axios.get(resumeBot, { headers });
} const resumeBotToken = resumeBotRes.data.match(/formData\.append\('token', '([a-f0-9]+)'\)/)[1];
const res = await axios.get(url); const resumeBotBody = new FormData();
const html = res.data; resumeBotBody.append("token", resumeBotToken);
let $ = cheerio.load(html); const resumeBotPath = resumeBotRes.data.match(/fetch\('\/download\?id=([a-zA-Z0-9\/+]+)'/)[1];
if (url.includes("url=")) { const resumeBotBaseUrl = resumeBot.split("/download")[0];
const newUrl = $("meta[http-equiv='refresh']") // console.log(
.attr("content") // 'resumeBotPath',
?.split("url=")[1]; // resumeBotBaseUrl + '/download?id=' + resumeBotPath,
const res2 = await axios.get(newUrl || url); // );
const html2 = res2.data; // console.log('resumeBotBody', resumeBotToken);
$ = cheerio.load(html2); const resumeBotDownload = yield fetch(resumeBotBaseUrl + "/download?id=" + resumeBotPath, {
} method: "POST",
const episodeLinks = []; body: resumeBotBody,
$("h3,h4").map((i, element) => { headers: {
const seriesTitle = $(element).text(); Referer: resumeBot,
const episodesLink = $(element).find("a").attr("href"); Cookie: "PHPSESSID=7e9658ce7c805dab5bbcea9046f7f308",
if (episodesLink && episodesLink !== "#") { },
episodeLinks.push({
title: seriesTitle.trim() || "No title found",
link: episodesLink || "",
});
}
}); });
$("a.maxbutton").map((i, element) => { const resumeBotDownloadData = yield resumeBotDownload.json();
const seriesTitle = $(element).children("span").text(); console.log("resumeBotDownloadData", resumeBotDownloadData.url);
const episodesLink = $(element).attr("href");
if (episodesLink && episodesLink !== "#") {
episodeLinks.push({
title: seriesTitle.trim() || "No title found",
link: episodesLink || "",
});
}
});
return episodeLinks;
}
catch (err) {
console.error(err);
return [];
}
};
console.log("modGetStream", type, url);
if (type === "movie") {
const servers = await modGetEpisodeLinks({ url, providerContext });
url = servers[0].link || url;
}
let downloadLink = await modExtractor(url, providerContext);
// console.log(downloadLink.data);
const ddl = downloadLink?.data?.match(/content="0;url=(.*?)"/)?.[1] || url;
// console.log('ddl', url);
// console.log(ddl);
// console.log(ddl);
const servers = [];
const driveLink = await isDriveLink(ddl);
const driveRes = await axios.get(driveLink, { headers });
const driveHtml = driveRes.data;
const $drive = cheerio.load(driveHtml);
try {
const resumeBot = $drive(".btn.btn-light").attr("href") || "";
const resumeBotRes = await axios.get(resumeBot, { headers });
const resumeBotToken = resumeBotRes.data.match(/formData\.append\('token', '([a-f0-9]+)'\)/)[1];
const resumeBotBody = new FormData();
resumeBotBody.append("token", resumeBotToken);
const resumeBotPath = resumeBotRes.data.match(/fetch\('\/download\?id=([a-zA-Z0-9\/+]+)'/)[1];
const resumeBotBaseUrl = resumeBot.split("/download")[0];
// console.log(
// 'resumeBotPath',
// resumeBotBaseUrl + '/download?id=' + resumeBotPath,
// );
// console.log('resumeBotBody', resumeBotToken);
const resumeBotDownload = await fetch(resumeBotBaseUrl + "/download?id=" + resumeBotPath, {
method: "POST",
body: resumeBotBody,
headers: {
Referer: resumeBot,
Cookie: "PHPSESSID=7e9658ce7c805dab5bbcea9046f7f308",
},
});
const resumeBotDownloadData = await resumeBotDownload.json();
console.log("resumeBotDownloadData", resumeBotDownloadData.url);
servers.push({
server: "ResumeBot",
link: resumeBotDownloadData.url,
type: "mkv",
});
}
catch (err) {
console.log("ResumeBot link not found", err);
}
// CF workers type 1
try {
const cfWorkersLink = driveLink.replace("/file", "/wfile") + "?type=1";
const cfWorkersRes = await axios.get(cfWorkersLink, { headers });
const cfWorkersHtml = cfWorkersRes.data;
const $cfWorkers = cheerio.load(cfWorkersHtml);
const cfWorkersStream = $cfWorkers(".btn-success");
cfWorkersStream.each((i, el) => {
const link = el.attribs?.href;
if (link) {
servers.push({
server: "Cf Worker 1." + i,
link: link,
type: "mkv",
});
}
});
}
catch (err) {
console.log("CF workers link not found", err);
}
// CF workers type 2
try {
const cfWorkersLink = driveLink.replace("/file", "/wfile") + "?type=2";
const cfWorkersRes = await axios.get(cfWorkersLink, { headers });
const cfWorkersHtml = cfWorkersRes.data;
const $cfWorkers = cheerio.load(cfWorkersHtml);
const cfWorkersStream = $cfWorkers(".btn-success");
cfWorkersStream.each((i, el) => {
const link = el.attribs?.href;
if (link) {
servers.push({
server: "Cf Worker 2." + i,
link: link,
type: "mkv",
});
}
});
}
catch (err) {
console.log("CF workers link not found", err);
}
// gdrive
//instant link
try {
const seed = $drive(".btn-danger").attr("href") || "";
const instantToken = seed.split("=")[1];
// console.log('InstantToken', instantToken);
const InstantFromData = new FormData();
InstantFromData.append("keys", instantToken);
const videoSeedUrl = seed.split("/").slice(0, 3).join("/") + "/api";
// console.log('videoSeedUrl', videoSeedUrl);
const instantLinkRes = await fetch(videoSeedUrl, {
method: "POST",
body: InstantFromData,
headers: {
"x-token": videoSeedUrl,
},
});
const instantLinkData = await instantLinkRes.json();
// console.log('instantLinkData', instantLinkData);
if (instantLinkData.error === false) {
const instantLink = instantLinkData.url;
servers.push({ servers.push({
server: "Gdrive-Instant", server: "ResumeBot",
link: instantLink, link: resumeBotDownloadData.url,
type: "mkv", type: "mkv",
}); });
} }
else { catch (err) {
console.log("Instant link not found", instantLinkData); console.log("ResumeBot link not found", err);
} }
// CF workers type 1
try {
const cfWorkersLink = driveLink.replace("/file", "/wfile") + "?type=1";
const cfWorkersRes = yield axios.get(cfWorkersLink, { headers });
const cfWorkersHtml = cfWorkersRes.data;
const $cfWorkers = cheerio.load(cfWorkersHtml);
const cfWorkersStream = $cfWorkers(".btn-success");
cfWorkersStream.each((i, el) => {
var _a;
const link = (_a = el.attribs) === null || _a === void 0 ? void 0 : _a.href;
if (link) {
servers.push({
server: "Cf Worker 1." + i,
link: link,
type: "mkv",
});
}
});
}
catch (err) {
console.log("CF workers link not found", err);
}
// CF workers type 2
try {
const cfWorkersLink = driveLink.replace("/file", "/wfile") + "?type=2";
const cfWorkersRes = yield axios.get(cfWorkersLink, { headers });
const cfWorkersHtml = cfWorkersRes.data;
const $cfWorkers = cheerio.load(cfWorkersHtml);
const cfWorkersStream = $cfWorkers(".btn-success");
cfWorkersStream.each((i, el) => {
var _a;
const link = (_a = el.attribs) === null || _a === void 0 ? void 0 : _a.href;
if (link) {
servers.push({
server: "Cf Worker 2." + i,
link: link,
type: "mkv",
});
}
});
}
catch (err) {
console.log("CF workers link not found", err);
}
// gdrive
//instant link
try {
const seed = $drive(".btn-danger").attr("href") || "";
const instantToken = seed.split("=")[1];
// console.log('InstantToken', instantToken);
const InstantFromData = new FormData();
InstantFromData.append("keys", instantToken);
const videoSeedUrl = seed.split("/").slice(0, 3).join("/") + "/api";
// console.log('videoSeedUrl', videoSeedUrl);
const instantLinkRes = yield fetch(videoSeedUrl, {
method: "POST",
body: InstantFromData,
headers: {
"x-token": videoSeedUrl,
},
});
const instantLinkData = yield instantLinkRes.json();
// console.log('instantLinkData', instantLinkData);
if (instantLinkData.error === false) {
const instantLink = instantLinkData.url;
servers.push({
server: "Gdrive-Instant",
link: instantLink,
type: "mkv",
});
}
else {
console.log("Instant link not found", instantLinkData);
}
}
catch (err) {
console.log("Instant link not found", err);
}
return servers;
} }
catch (err) { catch (err) {
console.log("Instant link not found", err); console.log("getStream error", err);
return [];
} }
return servers; });
}
catch (err) {
console.log("getStream error", err);
return [];
}
}; };
exports.getStream = getStream; exports.getStream = getStream;
const isDriveLink = async (ddl) => { const isDriveLink = (ddl) => __awaiter(void 0, void 0, void 0, function* () {
if (ddl.includes("drive")) { if (ddl.includes("drive")) {
const driveLeach = await fetch(ddl); const driveLeach = yield fetch(ddl);
const driveLeachData = await driveLeach.text(); const driveLeachData = yield driveLeach.text();
const pathMatch = driveLeachData.match(/window\.location\.replace\("([^"]+)"\)/); const pathMatch = driveLeachData.match(/window\.location\.replace\("([^"]+)"\)/);
const path = pathMatch?.[1]; const path = pathMatch === null || pathMatch === void 0 ? void 0 : pathMatch[1];
const mainUrl = ddl.split("/")[2]; const mainUrl = ddl.split("/")[2];
console.log(`driveUrl = https://${mainUrl}${path}`); console.log(`driveUrl = https://${mainUrl}${path}`);
return `https://${mainUrl}${path}`; return `https://${mainUrl}${path}`;
@@ -210,47 +226,49 @@ const isDriveLink = async (ddl) => {
else { else {
return ddl; return ddl;
} }
}; });
async function modExtractor(url, providerContext) { function modExtractor(url, providerContext) {
const { axios, cheerio } = providerContext; return __awaiter(this, void 0, void 0, function* () {
try { const { axios, cheerio } = providerContext;
const wpHttp = url.split("sid=")[1]; try {
var bodyFormData0 = new FormData(); const wpHttp = url.split("sid=")[1];
bodyFormData0.append("_wp_http", wpHttp); var bodyFormData0 = new FormData();
const res = await fetch(url.split("?")[0], { bodyFormData0.append("_wp_http", wpHttp);
method: "POST", const res = yield fetch(url.split("?")[0], {
body: bodyFormData0, method: "POST",
}); body: bodyFormData0,
const data = await res.text(); });
// console.log('', data); const data = yield res.text();
const html = data; // console.log('', data);
const $ = cheerio.load(html); const html = data;
// find input with name="_wp_http2" const $ = cheerio.load(html);
const wpHttp2 = $("input").attr("name", "_wp_http2").val(); // find input with name="_wp_http2"
// console.log('wpHttp2', wpHttp2); const wpHttp2 = $("input").attr("name", "_wp_http2").val();
// form data // console.log('wpHttp2', wpHttp2);
var bodyFormData = new FormData(); // form data
bodyFormData.append("_wp_http2", wpHttp2); var bodyFormData = new FormData();
const formUrl1 = $("form").attr("action"); bodyFormData.append("_wp_http2", wpHttp2);
const formUrl = formUrl1 || url.split("?")[0]; const formUrl1 = $("form").attr("action");
const res2 = await fetch(formUrl, { const formUrl = formUrl1 || url.split("?")[0];
method: "POST", const res2 = yield fetch(formUrl, {
body: bodyFormData, method: "POST",
}); body: bodyFormData,
const html2 = await res2.text(); });
const link = html2.match(/setAttribute\("href",\s*"(.*?)"/)[1]; const html2 = yield res2.text();
console.log(link); const link = html2.match(/setAttribute\("href",\s*"(.*?)"/)[1];
const cookie = link.split("=")[1]; console.log(link);
console.log("cookie", cookie); const cookie = link.split("=")[1];
const downloadLink = await axios.get(link, { console.log("cookie", cookie);
headers: { const downloadLink = yield axios.get(link, {
Referer: formUrl, headers: {
Cookie: `${cookie}=${wpHttp2}`, Referer: formUrl,
}, Cookie: `${cookie}=${wpHttp2}`,
}); },
return downloadLink; });
} return downloadLink;
catch (err) { }
console.log("modGetStream error", err); catch (err) {
} console.log("modGetStream error", err);
}
});
} }

View File

@@ -1,85 +1,100 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.mpGetStream = void 0; exports.mpGetStream = void 0;
const types_1 = require("../types"); const types_1 = require("../types");
const mpGetStream = async function ({ link: id, type, providerContext, }) { const mpGetStream = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link: id, type, providerContext, }) {
const { getBaseUrl, cheerio } = providerContext; var _b, _c;
const streams = []; try {
const { season, episode, tmdbId } = JSON.parse(id); const { getBaseUrl, cheerio } = providerContext;
const baseUrl = await getBaseUrl('moviesapi'); const streams = [];
const link = type === 'movie' const { season, episode, tmdbId } = JSON.parse(id);
? `${baseUrl}/movie/${tmdbId}` const baseUrl = yield getBaseUrl('moviesapi');
: `${baseUrl}/tv/${tmdbId}-${season}-${episode}`; const link = type === 'movie'
const res = await fetch(link, { ? `${baseUrl}/movie/${tmdbId}`
headers: { : `${baseUrl}/tv/${tmdbId}-${season}-${episode}`;
referer: baseUrl, const res = yield fetch(link, {
},
});
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 = finalData?.subtitles?.map((sub) => ({
title: sub?.label || 'Unknown',
language: sub?.label,
type: sub?.file?.includes('.vtt')
? types_1.TextTrackType.VTT
: types_1.TextTrackType.SUBRIP,
uri: sub?.file,
}));
streams.push({
server: 'vidstreaming ',
type: 'm3u8',
subtitles: subtitle,
link: finalData?.videoUrl,
headers: { headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0', referer: baseUrl,
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',
}, },
}); });
const baseData = yield res.text();
const $ = cheerio.load(baseData);
const embededUrl = $('iframe').attr('src') || '';
const response = yield 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 = yield response.text();
// Extract the encrypted content
const contents = ((_b = data2.match(/const\s+Encrypted\s*=\s*['"]({.*})['"]/)) === null || _b === void 0 ? void 0 : _b[1]) || '';
if (embededUrl) {
const res2 = yield fetch('https://ext.8man.me/api/decrypt?passphrase==JV[t}{trEV=Ilh5', {
method: 'POST',
body: contents,
});
const finalData = yield res2.json();
const subtitle = (_c = finalData === null || finalData === void 0 ? void 0 : finalData.subtitles) === null || _c === void 0 ? void 0 : _c.map((sub) => {
var _a;
return ({
title: (sub === null || sub === void 0 ? void 0 : sub.label) || 'Unknown',
language: sub === null || sub === void 0 ? void 0 : sub.label,
type: ((_a = sub === null || sub === void 0 ? void 0 : sub.file) === null || _a === void 0 ? void 0 : _a.includes('.vtt'))
? types_1.TextTrackType.VTT
: types_1.TextTrackType.SUBRIP,
uri: sub === null || sub === void 0 ? void 0 : sub.file,
});
});
streams.push({
server: 'vidstreaming ',
type: 'm3u8',
subtitles: subtitle,
link: finalData === null || finalData === void 0 ? void 0 : 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;
} }
return streams; catch (err) {
} console.error(err);
catch (err) { return [];
console.error(err); }
return []; });
}
}; };
exports.mpGetStream = mpGetStream; exports.mpGetStream = mpGetStream;

141
dist/multi/meta.js vendored
View File

@@ -1,76 +1,87 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { axios, cheerio } = providerContext; try {
const url = link; const { axios, cheerio } = providerContext;
const res = await axios.get(url); const url = link;
const data = res.data; const res = yield axios.get(url);
const $ = cheerio.load(data); const data = res.data;
const type = url.includes("tvshows") ? "series" : "movie"; const $ = cheerio.load(data);
const imdbId = ""; const type = url.includes("tvshows") ? "series" : "movie";
const title = url.split("/")[4].replace(/-/g, " "); const imdbId = "";
const image = $(".g-item").find("a").attr("href") || ""; const title = url.split("/")[4].replace(/-/g, " ");
const synopsis = $(".wp-content").find("p").text() || ""; const image = $(".g-item").find("a").attr("href") || "";
// Links const synopsis = $(".wp-content").find("p").text() || "";
const links = []; // Links
if (type === "series") { const links = [];
$("#seasons") if (type === "series") {
.children() $("#seasons")
.map((i, element) => {
const title = $(element)
.find(".title")
.children()
.remove()
.end()
.text();
let episodesList = [];
$(element)
.find(".episodios")
.children() .children()
.map((i, element) => { .map((i, element) => {
const title = "Episode" + const title = $(element)
$(element).find(".numerando").text().trim().split("-")[1]; .find(".title")
const link = $(element).find("a").attr("href"); .children()
if (title && link) { .remove()
episodesList.push({ title, link }); .end()
.text();
let episodesList = [];
$(element)
.find(".episodios")
.children()
.map((i, element) => {
const title = "Episode" +
$(element).find(".numerando").text().trim().split("-")[1];
const link = $(element).find("a").attr("href");
if (title && link) {
episodesList.push({ title, link });
}
});
if (title && episodesList.length > 0) {
links.push({
title,
directLinks: episodesList,
});
} }
}); });
if (title && episodesList.length > 0) { }
links.push({ else {
title, links.push({
directLinks: episodesList, title: title,
}); directLinks: [{ title: title, link: url.slice(0, -1), type: "movie" }],
} });
}); }
// console.log('multi meta', links);
return {
title,
synopsis,
image,
imdbId,
type,
linkList: links,
};
} }
else { catch (err) {
links.push({ console.error(err);
title: title, return {
directLinks: [{ title: title, link: url.slice(0, -1), type: "movie" }], title: "",
}); synopsis: "",
image: "",
imdbId: "",
type: "movie",
linkList: [],
};
} }
// console.log('multi meta', links); });
return {
title,
synopsis,
image,
imdbId,
type,
linkList: links,
};
}
catch (err) {
console.error(err);
return {
title: "",
synopsis: "",
image: "",
imdbId: "",
type: "movie",
linkList: [],
};
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

89
dist/multi/posts.js vendored
View File

@@ -1,45 +1,60 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, page, signal, providerContext, }) { const getPosts = function (_a) {
const { getBaseUrl, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("multi"); const { getBaseUrl, cheerio } = providerContext;
const url = `${baseUrl + filter}page/${page}/`; const baseUrl = yield getBaseUrl("multi");
return posts({ url, signal, cheerio }); const url = `${baseUrl + filter}page/${page}/`;
return posts({ url, signal, cheerio });
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, signal, providerContext, }) { const getSearchPosts = function (_a) {
const { getBaseUrl, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ searchQuery, signal, providerContext, }) {
const baseUrl = await getBaseUrl("multi"); const { getBaseUrl, cheerio } = providerContext;
const url = `${baseUrl}/?s=${searchQuery}`; const baseUrl = yield getBaseUrl("multi");
return posts({ url, signal, cheerio }); const url = `${baseUrl}/?s=${searchQuery}`;
return posts({ url, signal, cheerio });
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts({ url, signal, cheerio, }) { function posts(_a) {
try { return __awaiter(this, arguments, void 0, function* ({ url, signal, cheerio, }) {
const res = await fetch(url, { signal }); try {
const data = await res.text(); const res = yield fetch(url, { signal });
const $ = cheerio.load(data); const data = yield res.text();
const catalog = []; const $ = cheerio.load(data);
$(".items.full") const catalog = [];
.children() $(".items.full")
.map((i, element) => { .children()
const title = $(element).find(".poster").find("img").attr("alt"); .map((i, element) => {
const link = $(element).find(".poster").find("a").attr("href"); const title = $(element).find(".poster").find("img").attr("alt");
const image = $(element).find(".poster").find("img").attr("data-src") || const link = $(element).find(".poster").find("a").attr("href");
$(element).find(".poster").find("img").attr("src"); const image = $(element).find(".poster").find("img").attr("data-src") ||
if (title && link && image) { $(element).find(".poster").find("img").attr("src");
catalog.push({ if (title && link && image) {
title: title, catalog.push({
link: link, title: title,
image: image, link: link,
}); image: image,
} });
}); }
return catalog; });
} return catalog;
catch (err) { }
console.error("multiGetPosts error ", err); catch (err) {
return []; console.error("multiGetPosts error ", err);
} return [];
}
});
} }

246
dist/multi/stream.js vendored
View File

@@ -1,134 +1,140 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const types_1 = require("../types"); const types_1 = require("../types");
const getStream = async function ({ link: url, providerContext, }) { const getStream = function (_a) {
const { axios, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ link: url, providerContext, }) {
const headers = { var _b, _c, _d, _e, _f, _g, _h, _j, _k;
"sec-ch-ua": '"Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"', const { axios, cheerio } = providerContext;
"sec-ch-ua-mobile": "?0", const headers = {
"sec-ch-ua-platform": '"Windows"', "sec-ch-ua": '"Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"',
Referer: "https://multimovies.online/", "sec-ch-ua-mobile": "?0",
"Sec-Fetch-User": "?1", "sec-ch-ua-platform": '"Windows"',
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0", Referer: "https://multimovies.online/",
}; "Sec-Fetch-User": "?1",
try { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",
const res = await axios.get(url, { headers }); };
const html = res.data; try {
const $ = cheerio.load(html); const res = yield axios.get(url, { headers });
const streamLinks = []; const html = res.data;
const postId = $("#player-option-1").attr("data-post"); const $ = cheerio.load(html);
const nume = $("#player-option-1").attr("data-nume"); const streamLinks = [];
const typeValue = $("#player-option-1").attr("data-type"); const postId = $("#player-option-1").attr("data-post");
const baseUrl = url.split("/").slice(0, 3).join("/"); const nume = $("#player-option-1").attr("data-nume");
console.log("baseUrl", baseUrl); const typeValue = $("#player-option-1").attr("data-type");
const formData = new FormData(); const baseUrl = url.split("/").slice(0, 3).join("/");
formData.append("action", "doo_player_ajax"); console.log("baseUrl", baseUrl);
formData.append("post", postId || ""); const formData = new FormData();
formData.append("nume", nume || ""); formData.append("action", "doo_player_ajax");
formData.append("type", typeValue || ""); formData.append("post", postId || "");
console.log("formData", formData); formData.append("nume", nume || "");
const playerRes = await fetch(`${baseUrl}/wp-admin/admin-ajax.php`, { formData.append("type", typeValue || "");
headers: headers, console.log("formData", formData);
body: formData, const playerRes = yield fetch(`${baseUrl}/wp-admin/admin-ajax.php`, {
method: "POST",
});
const playerData = await playerRes.json();
console.log("playerData", playerData);
let ifameUrl = playerData?.embed_url?.match(/<iframe[^>]+src="([^"]+)"[^>]*>/i)?.[1] ||
playerData?.embed_url;
console.log("ifameUrl", ifameUrl);
if (!ifameUrl.includes("multimovies")) {
let playerBaseUrl = ifameUrl.split("/").slice(0, 3).join("/");
const newPlayerBaseUrl = await axios.head(playerBaseUrl, { headers });
if (newPlayerBaseUrl) {
playerBaseUrl = newPlayerBaseUrl.request?.responseURL
?.split("/")
.slice(0, 3)
.join("/");
}
const playerId = ifameUrl.split("/").pop();
const NewformData = new FormData();
NewformData.append("sid", playerId);
console.log("NewformData", playerBaseUrl + "/embedhelper.php", NewformData);
const playerRes = await fetch(`${playerBaseUrl}/embedhelper.php`, {
headers: headers, headers: headers,
body: NewformData, body: formData,
method: "POST", method: "POST",
}); });
const playerData = await playerRes.json(); const playerData = yield playerRes.json();
// console.log('playerData', playerData); console.log("playerData", playerData);
const siteUrl = playerData?.siteUrls?.smwh; let ifameUrl = ((_c = (_b = playerData === null || playerData === void 0 ? void 0 : playerData.embed_url) === null || _b === void 0 ? void 0 : _b.match(/<iframe[^>]+src="([^"]+)"[^>]*>/i)) === null || _c === void 0 ? void 0 : _c[1]) ||
const siteId = JSON.parse(atob(playerData?.mresult))?.smwh || (playerData === null || playerData === void 0 ? void 0 : playerData.embed_url);
playerData?.mresult?.smwh; console.log("ifameUrl", ifameUrl);
const newIframeUrl = siteUrl + siteId; if (!ifameUrl.includes("multimovies")) {
console.log("newIframeUrl", newIframeUrl); let playerBaseUrl = ifameUrl.split("/").slice(0, 3).join("/");
if (newIframeUrl) { const newPlayerBaseUrl = yield axios.head(playerBaseUrl, { headers });
ifameUrl = newIframeUrl; if (newPlayerBaseUrl) {
} playerBaseUrl = (_e = (_d = newPlayerBaseUrl.request) === null || _d === void 0 ? void 0 : _d.responseURL) === null || _e === void 0 ? void 0 : _e.split("/").slice(0, 3).join("/");
} }
const iframeRes = await axios.get(ifameUrl, { const playerId = ifameUrl.split("/").pop();
headers: { const NewformData = new FormData();
...headers, NewformData.append("sid", playerId);
Referer: url, console.log("NewformData", playerBaseUrl + "/embedhelper.php", NewformData);
}, const playerRes = yield fetch(`${playerBaseUrl}/embedhelper.php`, {
}); headers: headers,
const iframeData = iframeRes.data; body: NewformData,
// Step 1: Extract the function parameters and the encoded string method: "POST",
var functionRegex = /eval\(function\((.*?)\)\{.*?return p\}.*?\('(.*?)'\.split/; });
var match = functionRegex.exec(iframeData); const playerData = yield playerRes.json();
let p = ""; // console.log('playerData', playerData);
if (match) { const siteUrl = (_f = playerData === null || playerData === void 0 ? void 0 : playerData.siteUrls) === null || _f === void 0 ? void 0 : _f.smwh;
// var params = match[1].split(',').map(param => param.trim()); const siteId = ((_g = JSON.parse(atob(playerData === null || playerData === void 0 ? void 0 : playerData.mresult))) === null || _g === void 0 ? void 0 : _g.smwh) ||
var encodedString = match[2]; ((_h = playerData === null || playerData === void 0 ? void 0 : playerData.mresult) === null || _h === void 0 ? void 0 : _h.smwh);
// console.log('Parameters:', params); const newIframeUrl = siteUrl + siteId;
// console.log('Encoded String:', encodedString.split("',36,")[0], '🔥🔥'); console.log("newIframeUrl", newIframeUrl);
p = encodedString.split("',36,")?.[0].trim(); if (newIframeUrl) {
let a = 36; ifameUrl = newIframeUrl;
let c = encodedString.split("',36,")[1].slice(2).split("|").length;
let k = encodedString.split("',36,")[1].slice(2).split("|");
while (c--) {
if (k[c]) {
var regex = new RegExp("\\b" + c.toString(a) + "\\b", "g");
p = p.replace(regex, k[c]);
} }
} }
// console.log('Decoded String:', p); const iframeRes = yield axios.get(ifameUrl, {
} headers: Object.assign(Object.assign({}, headers), { Referer: url }),
else { });
console.log("No match found"); const iframeData = iframeRes.data;
} // Step 1: Extract the function parameters and the encoded string
const streamUrl = p?.match(/https?:\/\/[^"]+?\.m3u8[^"]*/)?.[0]; var functionRegex = /eval\(function\((.*?)\)\{.*?return p\}.*?\('(.*?)'\.split/;
const subtitles = []; var match = functionRegex.exec(iframeData);
const subtitleMatch = p?.match(/https:\/\/[^\s"]+\.vtt/g); let p = "";
// console.log('subtitleMatch', subtitleMatch); if (match) {
// console.log('streamUrl', streamUrl); // var params = match[1].split(',').map(param => param.trim());
if (subtitleMatch?.length) { var encodedString = match[2];
subtitleMatch.forEach((sub) => { // console.log('Parameters:', params);
const lang = sub.match(/_([a-zA-Z]{3})\.vtt$/)[1]; // console.log('Encoded String:', encodedString.split("',36,")[0], '🔥🔥');
subtitles.push({ p = (_j = encodedString.split("',36,")) === null || _j === void 0 ? void 0 : _j[0].trim();
language: lang, let a = 36;
uri: sub, let c = encodedString.split("',36,")[1].slice(2).split("|").length;
type: types_1.TextTrackType.VTT, let k = encodedString.split("',36,")[1].slice(2).split("|");
title: lang, while (c--) {
if (k[c]) {
var regex = new RegExp("\\b" + c.toString(a) + "\\b", "g");
p = p.replace(regex, k[c]);
}
}
// console.log('Decoded String:', p);
}
else {
console.log("No match found");
}
const streamUrl = (_k = p === null || p === void 0 ? void 0 : p.match(/https?:\/\/[^"]+?\.m3u8[^"]*/)) === null || _k === void 0 ? void 0 : _k[0];
const subtitles = [];
const subtitleMatch = p === null || p === void 0 ? void 0 : p.match(/https:\/\/[^\s"]+\.vtt/g);
// console.log('subtitleMatch', subtitleMatch);
// console.log('streamUrl', streamUrl);
if (subtitleMatch === null || subtitleMatch === void 0 ? void 0 : subtitleMatch.length) {
subtitleMatch.forEach((sub) => {
const lang = sub.match(/_([a-zA-Z]{3})\.vtt$/)[1];
subtitles.push({
language: lang,
uri: sub,
type: types_1.TextTrackType.VTT,
title: lang,
});
}); });
}); }
console.log("streamUrl", streamUrl);
console.log("newUrl", streamUrl === null || streamUrl === void 0 ? void 0 : streamUrl.replace(/&i=\d+,'\.4&/, "&i=0.4&"));
if (streamUrl) {
streamLinks.push({
server: "Multi",
link: streamUrl.replace(/&i=\d+,'\.4&/, "&i=0.4&"),
type: "m3u8",
subtitles: subtitles,
});
}
return streamLinks;
} }
console.log("streamUrl", streamUrl); catch (err) {
console.log("newUrl", streamUrl?.replace(/&i=\d+,'\.4&/, "&i=0.4&")); console.error(err);
if (streamUrl) { return [];
streamLinks.push({
server: "Multi",
link: streamUrl.replace(/&i=\d+,'\.4&/, "&i=0.4&"),
type: "m3u8",
subtitles: subtitles,
});
} }
return streamLinks; });
}
catch (err) {
console.error(err);
return [];
}
}; };
exports.getStream = getStream; exports.getStream = getStream;

View File

@@ -1,39 +1,51 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getEpisodes = void 0; exports.getEpisodes = void 0;
const getEpisodes = async function ({ url: link, providerContext, }) { const getEpisodes = function (_a) {
const { getBaseUrl, axios } = providerContext; return __awaiter(this, arguments, void 0, function* ({ url: link, providerContext, }) {
let providerValue = "netflixMirror"; var _b;
try { const { getBaseUrl, axios } = providerContext;
const baseUrl = await getBaseUrl("nfMirror"); let providerValue = "netflixMirror";
const url = `${baseUrl}${providerValue === "netflixMirror" try {
? "/episodes.php?s=" const baseUrl = yield getBaseUrl("nfMirror");
: "/pv/episodes.php?s="}` + const url = `${baseUrl}${providerValue === "netflixMirror"
link + ? "/episodes.php?s="
"&t=" + : "/pv/episodes.php?s="}` +
Math.round(new Date().getTime() / 1000); link +
console.log("nfEpisodesUrl", url); "&t=" +
const res = await axios.get(url, { Math.round(new Date().getTime() / 1000);
headers: { console.log("nfEpisodesUrl", url);
"Content-Type": "application/json", const res = yield axios.get(url, {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36", headers: {
"Accept-Language": "en-US,en;q=0.9", "Content-Type": "application/json",
}, "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36",
}); "Accept-Language": "en-US,en;q=0.9",
const data = res.data; },
console.log("nfEpisodes", data);
const episodeList = [];
data?.episodes?.map((episode) => {
episodeList.push({
title: "Episode " + episode?.ep.replace("E", ""),
link: episode?.id,
}); });
}); const data = res.data;
return episodeList; console.log("nfEpisodes", data);
} const episodeList = [];
catch (err) { (_b = data === null || data === void 0 ? void 0 : data.episodes) === null || _b === void 0 ? void 0 : _b.map((episode) => {
console.error("nfGetEpisodes error", err); episodeList.push({
return []; title: "Episode " + (episode === null || episode === void 0 ? void 0 : episode.ep.replace("E", "")),
} link: episode === null || episode === void 0 ? void 0 : episode.id,
});
});
return episodeList;
}
catch (err) {
console.error("nfGetEpisodes error", err);
return [];
}
});
}; };
exports.getEpisodes = getEpisodes; exports.getEpisodes = getEpisodes;

View File

@@ -1,57 +1,66 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, }) { const getMeta = function (_a) {
let providerValue = "netflixMirror"; return __awaiter(this, arguments, void 0, function* ({ link, }) {
try { var _b, _c, _d, _e;
const isPrime = providerValue === "primeMirror" ? "isPrime=true" : "isPrime=false"; let providerValue = "netflixMirror";
const url = `https://netmirror.8man.me/api/net-proxy?${isPrime}&url=${encodeURIComponent(link)}`; try {
console.log("nfifo", url); const isPrime = providerValue === "primeMirror" ? "isPrime=true" : "isPrime=false";
const res = await fetch(url, { const url = `https://netmirror.8man.me/api/net-proxy?${isPrime}&url=${encodeURIComponent(link)}`;
credentials: "omit", console.log("nfifo", url);
}); const res = yield fetch(url, {
const data = await res.json(); credentials: "omit",
const id = link.split("id=")[1]?.split("&")[0]; });
const meta = { const data = yield res.json();
title: data.title, const id = (_b = link.split("id=")[1]) === null || _b === void 0 ? void 0 : _b.split("&")[0];
synopsis: data.desc, const meta = {
image: `https://img.nfmirrorcdn.top/poster/h/${id}.jpg`, title: data.title,
cast: data?.short_cast?.split(","), synopsis: data.desc,
tags: [data?.year, data?.hdsd, ...data?.thismovieis?.split(",")], image: `https://img.nfmirrorcdn.top/poster/h/${id}.jpg`,
imdbId: "", cast: (_c = data === null || data === void 0 ? void 0 : data.short_cast) === null || _c === void 0 ? void 0 : _c.split(","),
type: "series", tags: [data === null || data === void 0 ? void 0 : data.year, data === null || data === void 0 ? void 0 : data.hdsd, ...(_d = data === null || data === void 0 ? void 0 : data.thismovieis) === null || _d === void 0 ? void 0 : _d.split(",")],
}; imdbId: "",
console.log("nfinfo", meta); type: "series",
const linkList = []; };
if (data?.season?.length > 0) { console.log("nfinfo", meta);
data.season.map((season) => { const linkList = [];
linkList.push({ if (((_e = data === null || data === void 0 ? void 0 : data.season) === null || _e === void 0 ? void 0 : _e.length) > 0) {
title: "Season " + season?.s, data.season.map((season) => {
episodesLink: season?.id, linkList.push({
title: "Season " + (season === null || season === void 0 ? void 0 : season.s),
episodesLink: season === null || season === void 0 ? void 0 : season.id,
});
}); });
}); }
else {
linkList.push({
title: meta.title,
directLinks: [{ link: id, title: "Movie", type: "movie" }],
});
}
return Object.assign(Object.assign({}, meta), { linkList: linkList });
} }
else { catch (err) {
linkList.push({ console.error(err);
title: meta.title, return {
directLinks: [{ link: id, title: "Movie", type: "movie" }], title: "",
}); synopsis: "",
image: "",
imdbId: "",
type: "",
linkList: [],
};
} }
return { });
...meta,
linkList: linkList,
};
}
catch (err) {
console.error(err);
return {
title: "",
synopsis: "",
image: "",
imdbId: "",
type: "",
linkList: [],
};
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

View File

@@ -1,94 +1,108 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, page, providerValue, signal, providerContext, }) { const getPosts = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ filter, page, providerValue, signal, providerContext, }) {
const { getBaseUrl, cheerio } = providerContext; try {
const baseUrl = await getBaseUrl("nfMirror"); const { getBaseUrl, cheerio } = providerContext;
const catalog = []; const baseUrl = yield getBaseUrl("nfMirror");
if (page > 1) { const catalog = [];
if (page > 1) {
return [];
}
// console.log(filter);
const isPrime = providerValue === "primeMirror" ? "isPrime=true" : "isPrime=false";
const url = `https://netmirror.8man.me/api/net-proxy?${isPrime}&url=${baseUrl + filter}`;
const res = yield fetch(url, {
signal: signal,
method: "GET",
credentials: "omit",
});
const data = yield res.text();
// console.log('nfPost', data);
const $ = cheerio.load(data);
$("a.post-data").map((i, element) => {
const title = "";
const id = $(element).attr("data-post");
// console.log('id', id);
const image = $(element).find("img").attr("data-src") || "";
if (id) {
catalog.push({
title: title,
link: baseUrl +
`${providerValue === "netflixMirror"
? "/post.php?id="
: "/pv/post.php?id="}` +
id +
"&t=" +
Math.round(new Date().getTime() / 1000),
image: image,
});
}
});
// console.log(catalog);
return catalog;
}
catch (err) {
console.error("nf error ", err);
return []; return [];
} }
// console.log(filter); });
const isPrime = providerValue === "primeMirror" ? "isPrime=true" : "isPrime=false";
const url = `https://netmirror.8man.me/api/net-proxy?${isPrime}&url=${baseUrl + filter}`;
const res = await fetch(url, {
signal: signal,
method: "GET",
credentials: "omit",
});
const data = await res.text();
// console.log('nfPost', data);
const $ = cheerio.load(data);
$("a.post-data").map((i, element) => {
const title = "";
const id = $(element).attr("data-post");
// console.log('id', id);
const image = $(element).find("img").attr("data-src") || "";
if (id) {
catalog.push({
title: title,
link: baseUrl +
`${providerValue === "netflixMirror"
? "/post.php?id="
: "/pv/post.php?id="}` +
id +
"&t=" +
Math.round(new Date().getTime() / 1000),
image: image,
});
}
});
// console.log(catalog);
return catalog;
}
catch (err) {
console.error("nf error ", err);
return [];
}
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, providerValue, signal, providerContext, }) { const getSearchPosts = function (_a) {
const { getBaseUrl } = providerContext; return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, providerValue, signal, providerContext, }) {
try { var _b;
if (page > 1) { const { getBaseUrl } = providerContext;
try {
if (page > 1) {
return [];
}
const catalog = [];
const baseUrl = yield getBaseUrl("nfMirror");
const isPrime = providerValue === "primeMirror" ? "isPrime=true" : "isPrime=false";
const url = `https://netmirror.8man.me/api/net-proxy?${isPrime}&url=${baseUrl}${providerValue === "netflixMirror" ? "" : "/pv"}/search.php?s=${encodeURI(searchQuery)}`;
const res = yield fetch(url, {
signal: signal,
method: "GET",
credentials: "omit",
});
const data = yield res.json();
(_b = data === null || data === void 0 ? void 0 : data.searchResult) === null || _b === void 0 ? void 0 : _b.forEach((result) => {
const title = (result === null || result === void 0 ? void 0 : result.t) || "";
const id = result === null || result === void 0 ? void 0 : result.id;
const image = providerValue === "netflixMirror"
? `https://imgcdn.media/poster/v/${id}.jpg`
: "";
if (id) {
catalog.push({
title: title,
link: baseUrl +
`${providerValue === "netflixMirror"
? "/mobile/post.php?id="
: "/mobile/pv/post.php?id="}` +
id +
"&t=" +
Math.round(new Date().getTime() / 1000),
image: image,
});
}
});
return catalog;
}
catch (err) {
console.error("Search error:", err);
return []; return [];
} }
const catalog = []; });
const baseUrl = await getBaseUrl("nfMirror");
const isPrime = providerValue === "primeMirror" ? "isPrime=true" : "isPrime=false";
const url = `https://netmirror.8man.me/api/net-proxy?${isPrime}&url=${baseUrl}${providerValue === "netflixMirror" ? "" : "/pv"}/search.php?s=${encodeURI(searchQuery)}`;
const res = await fetch(url, {
signal: signal,
method: "GET",
credentials: "omit",
});
const data = await res.json();
data?.searchResult?.forEach((result) => {
const title = result?.t || "";
const id = result?.id;
const image = providerValue === "netflixMirror"
? `https://imgcdn.media/poster/v/${id}.jpg`
: "";
if (id) {
catalog.push({
title: title,
link: baseUrl +
`${providerValue === "netflixMirror"
? "/mobile/post.php?id="
: "/mobile/pv/post.php?id="}` +
id +
"&t=" +
Math.round(new Date().getTime() / 1000),
image: image,
});
}
});
return catalog;
}
catch (err) {
console.error("Search error:", err);
return [];
}
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;

View File

@@ -1,25 +1,35 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const getStream = async ({ link: id, providerContext, }) => { const getStream = (_a) => __awaiter(void 0, [_a], void 0, function* ({ link: id, providerContext, }) {
const { getBaseUrl } = providerContext; const { getBaseUrl } = providerContext;
try { try {
let providerValue = "netflixMirror"; let providerValue = "netflixMirror";
const baseUrl = await getBaseUrl("nfMirror"); const baseUrl = yield getBaseUrl("nfMirror");
const url = `https://netmirror.8man.me/api/net-proxy?url=${baseUrl}${providerValue === "netflixMirror" const url = `https://netmirror.8man.me/api/net-proxy?url=${baseUrl}${providerValue === "netflixMirror"
? "/mobile/playlist.php?id=" ? "/mobile/playlist.php?id="
: "/pv/playlist.php?id="}${id}&t=${Math.round(new Date().getTime() / 1000)}`; : "/pv/playlist.php?id="}${id}&t=${Math.round(new Date().getTime() / 1000)}`;
console.log("nfGetStream, url:", url); console.log("nfGetStream, url:", url);
const res = await fetch(url, { const res = yield fetch(url, {
credentials: "omit", credentials: "omit",
}); });
const resJson = await res.json(); const resJson = yield res.json();
const data = resJson?.[0]; const data = resJson === null || resJson === void 0 ? void 0 : resJson[0];
const streamLinks = []; const streamLinks = [];
data?.sources.forEach((source) => { data === null || data === void 0 ? void 0 : data.sources.forEach((source) => {
var _a;
streamLinks.push({ streamLinks.push({
server: source.label, server: source.label,
link: (baseUrl + source.file)?.replace(":su", ":ni"), link: (_a = (baseUrl + source.file)) === null || _a === void 0 ? void 0 : _a.replace(":su", ":ni"),
type: "m3u8", type: "m3u8",
headers: { headers: {
Referer: baseUrl, Referer: baseUrl,
@@ -35,5 +45,5 @@ const getStream = async ({ link: id, providerContext, }) => {
console.error(err); console.error(err);
return []; return [];
} }
}; });
exports.getStream = getStream; exports.getStream = getStream;

View File

@@ -1,39 +1,51 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getEpisodes = void 0; exports.getEpisodes = void 0;
const getEpisodes = async function ({ url: link, providerContext, }) { const getEpisodes = function (_a) {
const { getBaseUrl, axios } = providerContext; return __awaiter(this, arguments, void 0, function* ({ url: link, providerContext, }) {
let providerValue = "primeMirror"; var _b;
try { const { getBaseUrl, axios } = providerContext;
const baseUrl = await getBaseUrl("nfMirror"); let providerValue = "primeMirror";
const url = `${baseUrl}${providerValue === "netflixMirror" try {
? "/episodes.php?s=" const baseUrl = yield getBaseUrl("nfMirror");
: "/pv/episodes.php?s="}` + const url = `${baseUrl}${providerValue === "netflixMirror"
link + ? "/episodes.php?s="
"&t=" + : "/pv/episodes.php?s="}` +
Math.round(new Date().getTime() / 1000); link +
console.log("nfEpisodesUrl", url); "&t=" +
const res = await axios.get(url, { Math.round(new Date().getTime() / 1000);
headers: { console.log("nfEpisodesUrl", url);
"Content-Type": "application/json", const res = yield axios.get(url, {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36", headers: {
"Accept-Language": "en-US,en;q=0.9", "Content-Type": "application/json",
}, "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36",
}); "Accept-Language": "en-US,en;q=0.9",
const data = res.data; },
console.log("nfEpisodes", data);
const episodeList = [];
data?.episodes?.map((episode) => {
episodeList.push({
title: "Episode " + episode?.ep.replace("E", ""),
link: episode?.id,
}); });
}); const data = res.data;
return episodeList; console.log("nfEpisodes", data);
} const episodeList = [];
catch (err) { (_b = data === null || data === void 0 ? void 0 : data.episodes) === null || _b === void 0 ? void 0 : _b.map((episode) => {
console.error("nfGetEpisodes error", err); episodeList.push({
return []; title: "Episode " + (episode === null || episode === void 0 ? void 0 : episode.ep.replace("E", "")),
} link: episode === null || episode === void 0 ? void 0 : episode.id,
});
});
return episodeList;
}
catch (err) {
console.error("nfGetEpisodes error", err);
return [];
}
});
}; };
exports.getEpisodes = getEpisodes; exports.getEpisodes = getEpisodes;

View File

@@ -1,57 +1,66 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, }) { const getMeta = function (_a) {
let providerValue = "primeMirror"; return __awaiter(this, arguments, void 0, function* ({ link, }) {
try { var _b, _c, _d, _e;
const isPrime = providerValue === "primeMirror" ? "isPrime=true" : "isPrime=false"; let providerValue = "primeMirror";
const url = `https://netmirror.8man.me/api/net-proxy?${isPrime}&url=${encodeURIComponent(link)}`; try {
console.log("nfifo", url); const isPrime = providerValue === "primeMirror" ? "isPrime=true" : "isPrime=false";
const res = await fetch(url, { const url = `https://netmirror.8man.me/api/net-proxy?${isPrime}&url=${encodeURIComponent(link)}`;
credentials: "omit", console.log("nfifo", url);
}); const res = yield fetch(url, {
const data = await res.json(); credentials: "omit",
const id = link.split("id=")[1]?.split("&")[0]; });
const meta = { const data = yield res.json();
title: data.title, const id = (_b = link.split("id=")[1]) === null || _b === void 0 ? void 0 : _b.split("&")[0];
synopsis: data.desc, const meta = {
image: `https://img.nfmirrorcdn.top/poster/h/${id}.jpg`, title: data.title,
cast: data?.short_cast?.split(","), synopsis: data.desc,
tags: [data?.year, data?.hdsd, ...data?.thismovieis?.split(",")], image: `https://img.nfmirrorcdn.top/poster/h/${id}.jpg`,
imdbId: "", cast: (_c = data === null || data === void 0 ? void 0 : data.short_cast) === null || _c === void 0 ? void 0 : _c.split(","),
type: "series", tags: [data === null || data === void 0 ? void 0 : data.year, data === null || data === void 0 ? void 0 : data.hdsd, ...(_d = data === null || data === void 0 ? void 0 : data.thismovieis) === null || _d === void 0 ? void 0 : _d.split(",")],
}; imdbId: "",
console.log("nfinfo", meta); type: "series",
const linkList = []; };
if (data?.season?.length > 0) { console.log("nfinfo", meta);
data.season.map((season) => { const linkList = [];
linkList.push({ if (((_e = data === null || data === void 0 ? void 0 : data.season) === null || _e === void 0 ? void 0 : _e.length) > 0) {
title: "Season " + season?.s, data.season.map((season) => {
episodesLink: season?.id, linkList.push({
title: "Season " + (season === null || season === void 0 ? void 0 : season.s),
episodesLink: season === null || season === void 0 ? void 0 : season.id,
});
}); });
}); }
else {
linkList.push({
title: meta.title,
directLinks: [{ link: id, title: "Movie", type: "movie" }],
});
}
return Object.assign(Object.assign({}, meta), { linkList: linkList });
} }
else { catch (err) {
linkList.push({ console.error(err);
title: meta.title, return {
directLinks: [{ link: id, title: "Movie", type: "movie" }], title: "",
}); synopsis: "",
image: "",
imdbId: "",
type: "",
linkList: [],
};
} }
return { });
...meta,
linkList: linkList,
};
}
catch (err) {
console.error(err);
return {
title: "",
synopsis: "",
image: "",
imdbId: "",
type: "",
linkList: [],
};
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

View File

@@ -1,94 +1,108 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, page, providerValue, signal, providerContext, }) { const getPosts = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ filter, page, providerValue, signal, providerContext, }) {
const { getBaseUrl, cheerio } = providerContext; try {
const baseUrl = await getBaseUrl("nfMirror"); const { getBaseUrl, cheerio } = providerContext;
const catalog = []; const baseUrl = yield getBaseUrl("nfMirror");
if (page > 1) { const catalog = [];
if (page > 1) {
return [];
}
// console.log(filter);
const isPrime = providerValue === "primeMirror" ? "isPrime=true" : "isPrime=false";
const url = `https://netmirror.8man.me/api/net-proxy?${isPrime}&url=${baseUrl + filter}`;
const res = yield fetch(url, {
signal: signal,
method: "GET",
credentials: "omit",
});
const data = yield res.text();
// console.log('nfPost', data);
const $ = cheerio.load(data);
$("a.post-data").map((i, element) => {
const title = "";
const id = $(element).attr("data-post");
// console.log('id', id);
const image = $(element).find("img").attr("data-src") || "";
if (id) {
catalog.push({
title: title,
link: baseUrl +
`${providerValue === "netflixMirror"
? "/post.php?id="
: "/pv/post.php?id="}` +
id +
"&t=" +
Math.round(new Date().getTime() / 1000),
image: image,
});
}
});
// console.log(catalog);
return catalog;
}
catch (err) {
console.error("nf error ", err);
return []; return [];
} }
// console.log(filter); });
const isPrime = providerValue === "primeMirror" ? "isPrime=true" : "isPrime=false";
const url = `https://netmirror.8man.me/api/net-proxy?${isPrime}&url=${baseUrl + filter}`;
const res = await fetch(url, {
signal: signal,
method: "GET",
credentials: "omit",
});
const data = await res.text();
// console.log('nfPost', data);
const $ = cheerio.load(data);
$("a.post-data").map((i, element) => {
const title = "";
const id = $(element).attr("data-post");
// console.log('id', id);
const image = $(element).find("img").attr("data-src") || "";
if (id) {
catalog.push({
title: title,
link: baseUrl +
`${providerValue === "netflixMirror"
? "/post.php?id="
: "/pv/post.php?id="}` +
id +
"&t=" +
Math.round(new Date().getTime() / 1000),
image: image,
});
}
});
// console.log(catalog);
return catalog;
}
catch (err) {
console.error("nf error ", err);
return [];
}
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, providerValue, signal, providerContext, }) { const getSearchPosts = function (_a) {
const { getBaseUrl } = providerContext; return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, providerValue, signal, providerContext, }) {
try { var _b;
if (page > 1) { const { getBaseUrl } = providerContext;
try {
if (page > 1) {
return [];
}
const catalog = [];
const baseUrl = yield getBaseUrl("nfMirror");
const isPrime = providerValue === "primeMirror" ? "isPrime=true" : "isPrime=false";
const url = `https://netmirror.8man.me/api/net-proxy?${isPrime}&url=${baseUrl}${providerValue === "netflixMirror" ? "" : "/pv"}/search.php?s=${encodeURI(searchQuery)}`;
const res = yield fetch(url, {
signal: signal,
method: "GET",
credentials: "omit",
});
const data = yield res.json();
(_b = data === null || data === void 0 ? void 0 : data.searchResult) === null || _b === void 0 ? void 0 : _b.forEach((result) => {
const title = (result === null || result === void 0 ? void 0 : result.t) || "";
const id = result === null || result === void 0 ? void 0 : result.id;
const image = providerValue === "netflixMirror"
? `https://imgcdn.media/poster/v/${id}.jpg`
: "";
if (id) {
catalog.push({
title: title,
link: baseUrl +
`${providerValue === "netflixMirror"
? "/mobile/post.php?id="
: "/mobile/pv/post.php?id="}` +
id +
"&t=" +
Math.round(new Date().getTime() / 1000),
image: image,
});
}
});
return catalog;
}
catch (err) {
console.error("Search error:", err);
return []; return [];
} }
const catalog = []; });
const baseUrl = await getBaseUrl("nfMirror");
const isPrime = providerValue === "primeMirror" ? "isPrime=true" : "isPrime=false";
const url = `https://netmirror.8man.me/api/net-proxy?${isPrime}&url=${baseUrl}${providerValue === "netflixMirror" ? "" : "/pv"}/search.php?s=${encodeURI(searchQuery)}`;
const res = await fetch(url, {
signal: signal,
method: "GET",
credentials: "omit",
});
const data = await res.json();
data?.searchResult?.forEach((result) => {
const title = result?.t || "";
const id = result?.id;
const image = providerValue === "netflixMirror"
? `https://imgcdn.media/poster/v/${id}.jpg`
: "";
if (id) {
catalog.push({
title: title,
link: baseUrl +
`${providerValue === "netflixMirror"
? "/mobile/post.php?id="
: "/mobile/pv/post.php?id="}` +
id +
"&t=" +
Math.round(new Date().getTime() / 1000),
image: image,
});
}
});
return catalog;
}
catch (err) {
console.error("Search error:", err);
return [];
}
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;

View File

@@ -1,25 +1,35 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const getStream = async ({ link: id, providerContext, }) => { const getStream = (_a) => __awaiter(void 0, [_a], void 0, function* ({ link: id, providerContext, }) {
const { getBaseUrl } = providerContext; const { getBaseUrl } = providerContext;
try { try {
let providerValue = "primeMirror"; let providerValue = "primeMirror";
const baseUrl = await getBaseUrl("nfMirror"); const baseUrl = yield getBaseUrl("nfMirror");
const url = `https://netmirror.8man.me/api/net-proxy?url=${baseUrl}${providerValue === "netflixMirror" const url = `https://netmirror.8man.me/api/net-proxy?url=${baseUrl}${providerValue === "netflixMirror"
? "/mobile/playlist.php?id=" ? "/mobile/playlist.php?id="
: "/pv/playlist.php?id="}${id}&t=${Math.round(new Date().getTime() / 1000)}`; : "/pv/playlist.php?id="}${id}&t=${Math.round(new Date().getTime() / 1000)}`;
console.log("nfGetStream, url:", url); console.log("nfGetStream, url:", url);
const res = await fetch(url, { const res = yield fetch(url, {
credentials: "omit", credentials: "omit",
}); });
const resJson = await res.json(); const resJson = yield res.json();
const data = resJson?.[0]; const data = resJson === null || resJson === void 0 ? void 0 : resJson[0];
const streamLinks = []; const streamLinks = [];
data?.sources.forEach((source) => { data === null || data === void 0 ? void 0 : data.sources.forEach((source) => {
var _a;
streamLinks.push({ streamLinks.push({
server: source.label, server: source.label,
link: (baseUrl + source.file)?.replace(":su", ":ni"), link: (_a = (baseUrl + source.file)) === null || _a === void 0 ? void 0 : _a.replace(":su", ":ni"),
type: "m3u8", type: "m3u8",
headers: { headers: {
Referer: baseUrl, Referer: baseUrl,
@@ -35,5 +45,5 @@ const getStream = async ({ link: id, providerContext, }) => {
console.error(err); console.error(err);
return []; return [];
} }
}; });
exports.getStream = getStream; exports.getStream = getStream;

151
dist/primewire/meta.js vendored
View File

@@ -1,78 +1,89 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { axios, cheerio } = providerContext; var _b;
const url = link; try {
const baseUrl = link.split("/").slice(0, 3).join("/"); const { axios, cheerio } = providerContext;
const res = await axios.get(url); const url = link;
const html = await res.data; const baseUrl = link.split("/").slice(0, 3).join("/");
const $ = cheerio.load(html); const res = yield axios.get(url);
const imdbId = $(".movie_info") const html = yield res.data;
.find('a[href*="imdb.com/title/tt"]:not([href*="imdb.com/title/tt/"])') const $ = cheerio.load(html);
.attr("href") const imdbId = ((_b = $(".movie_info")
?.split("/")[4] || ""; .find('a[href*="imdb.com/title/tt"]:not([href*="imdb.com/title/tt/"])')
const type = $(".show_season").html() ? "series" : "movie"; .attr("href")) === null || _b === void 0 ? void 0 : _b.split("/")[4]) || "";
const linkList = []; const type = $(".show_season").html() ? "series" : "movie";
$(".show_season").each((i, element) => { const linkList = [];
const seasonTitle = "Season " + $(element).attr("data-id"); $(".show_season").each((i, element) => {
const episodes = []; const seasonTitle = "Season " + $(element).attr("data-id");
$(element) const episodes = [];
.children() $(element)
.each((i, element2) => {
const episodeTitle = $(element2)
.find("a")
.children() .children()
.remove() .each((i, element2) => {
.end() const episodeTitle = $(element2)
.text() .find("a")
.trim() .children()
.replace("E", "Epiosode "); .remove()
const episodeLink = baseUrl + $(element2).find("a").attr("href"); .end()
if (episodeTitle && episodeLink) { .text()
episodes.push({ .trim()
title: episodeTitle, .replace("E", "Epiosode ");
link: episodeLink, const episodeLink = baseUrl + $(element2).find("a").attr("href");
}); if (episodeTitle && episodeLink) {
} episodes.push({
}); title: episodeTitle,
linkList.push({ link: episodeLink,
title: seasonTitle, });
directLinks: episodes, }
}); });
}); linkList.push({
if (type === "movie") { title: seasonTitle,
linkList.push({ directLinks: episodes,
title: "Movie", });
directLinks: [
{
link: link,
title: "Movie",
type: "movie",
},
],
}); });
if (type === "movie") {
linkList.push({
title: "Movie",
directLinks: [
{
link: link,
title: "Movie",
type: "movie",
},
],
});
}
return {
title: "",
image: "",
imdbId: imdbId,
synopsis: "",
type: type,
linkList: linkList,
};
} }
return { catch (error) {
title: "", console.error(error);
image: "", return {
imdbId: imdbId, title: "",
synopsis: "", image: "",
type: type, imdbId: "",
linkList: linkList, synopsis: "",
}; linkList: [],
} type: "uhd",
catch (error) { };
console.error(error); }
return { });
title: "",
image: "",
imdbId: "",
synopsis: "",
linkList: [],
type: "uhd",
};
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

View File

@@ -1,46 +1,63 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, page, signal, providerContext, }) { const getPosts = function (_a) {
const { getBaseUrl, axios, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("primewire"); const { getBaseUrl, axios, cheerio } = providerContext;
const url = `${baseUrl + filter}&page=${page}`; const baseUrl = yield getBaseUrl("primewire");
return posts({ baseUrl, url, signal, axios, cheerio }); const url = `${baseUrl + filter}&page=${page}`;
return posts({ baseUrl, url, signal, axios, cheerio });
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, signal, providerContext, }) { const getSearchPosts = function (_a) {
const { getBaseUrl, axios, cheerio, Aes } = providerContext; return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) {
const getSHA256ofJSON = async function (input) { const { getBaseUrl, axios, cheerio, Aes } = providerContext;
return await Aes.sha1(input); const getSHA256ofJSON = function (input) {
}; return __awaiter(this, void 0, void 0, function* () {
const baseUrl = await getBaseUrl("primewire"); return yield Aes.sha1(input);
const hash = await getSHA256ofJSON(searchQuery + "JyjId97F9PVqUPuMO0"); });
const url = `${baseUrl}/filter?s=${searchQuery}&page=${page}&ds=${hash.slice(0, 10)}`; };
return posts({ baseUrl, url, signal, axios, cheerio }); const baseUrl = yield getBaseUrl("primewire");
const hash = yield getSHA256ofJSON(searchQuery + "JyjId97F9PVqUPuMO0");
const url = `${baseUrl}/filter?s=${searchQuery}&page=${page}&ds=${hash.slice(0, 10)}`;
return posts({ baseUrl, url, signal, axios, cheerio });
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts({ baseUrl, url, signal, axios, cheerio, }) { function posts(_a) {
try { return __awaiter(this, arguments, void 0, function* ({ baseUrl, url, signal, axios, cheerio, }) {
const res = await axios.get(url, { signal }); try {
const data = res.data; const res = yield axios.get(url, { signal });
const $ = cheerio.load(data); const data = res.data;
const catalog = []; const $ = cheerio.load(data);
$(".index_item.index_item_ie").map((i, element) => { const catalog = [];
const title = $(element).find("a").attr("title"); $(".index_item.index_item_ie").map((i, element) => {
const link = $(element).find("a").attr("href"); const title = $(element).find("a").attr("title");
const image = $(element).find("img").attr("src") || ""; const link = $(element).find("a").attr("href");
if (title && link) { const image = $(element).find("img").attr("src") || "";
catalog.push({ if (title && link) {
title: title, catalog.push({
link: baseUrl + link, title: title,
image: image, link: baseUrl + link,
}); image: image,
} });
}); }
return catalog; });
} return catalog;
catch (err) { }
console.error("primewire error ", err); catch (err) {
return []; console.error("primewire error ", err);
} return [];
}
});
} }

View File

@@ -1,102 +1,40 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const getStream = async function ({ link: url, type, providerContext, }) { const getStream = function (_a) {
const { axios, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ link: url, type, providerContext, }) {
try { var _b, _c, _d, _e, _f, _g;
console.log("pwGetStream", type, url); const { axios, cheerio } = providerContext;
const baseUrl = url.split("/").slice(0, 3).join("/"); try {
const streamLinks = []; console.log("pwGetStream", type, url);
const urls = []; const baseUrl = url.split("/").slice(0, 3).join("/");
const res = await axios.get(url); const streamLinks = [];
const data = res.data; const urls = [];
const $ = cheerio.load(data); const res = yield axios.get(url);
$('tr:contains("mixdrop")').map((i, element) => { const data = res.data;
const id = $(element).find(".wp-menu-btn").attr("data-wp-menu"); const $ = cheerio.load(data);
const size = $(element).find(".wp-menu-btn").next().text(); $('tr:contains("mixdrop")').map((i, element) => {
if (id) { const id = $(element).find(".wp-menu-btn").attr("data-wp-menu");
urls.push({ id: baseUrl + "/links/go/" + id, size }); const size = $(element).find(".wp-menu-btn").next().text();
} if (id) {
}); urls.push({ id: baseUrl + "/links/go/" + id, size });
console.log("urls", urls); }
for (const url of urls) {
const res2 = await axios.head(url.id);
const location = res2.request?.responseURL.replace("/f/", "/e/");
const res3 = await fetch(location, {
credentials: "include",
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",
"Upgrade-Insecure-Requests": "1",
"Sec-Fetch-Dest": "iframe",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "same-origin",
Pragma: "no-cache",
"Cache-Control": "no-cache",
referer: res2.request?.responseURL,
},
referrer: res2.request?.responseURL,
method: "GET",
mode: "cors",
}); });
const data3 = await res3.text(); console.log("urls", urls);
// let MDCore: any = {}; for (const url of urls) {
// Step 1: Extract the function parameters and the encoded string const res2 = yield axios.head(url.id);
var functionRegex = /eval\(function\((.*?)\)\{.*?return p\}.*?\('(.*?)'\.split/; const location = (_b = res2.request) === null || _b === void 0 ? void 0 : _b.responseURL.replace("/f/", "/e/");
var match = functionRegex.exec(data3); const res3 = yield fetch(location, {
let p = ""; credentials: "include",
if (match) {
// var params = match[1].split(',').map(param => param.trim());
var encodedString = match[2];
console.log("Encoded String:", encodedString);
// console.log('Parameters:', params);
// console.log('Encoded String:', encodedString.split("',36,")[0], '🔥🔥');
const base = Number(encodedString.split(",'|MDCore|")[0].split(",")[encodedString.split(",'|MDCore|")[0].split(",").length - 1]);
console.log("Base:", base);
p = encodedString.split(`',${base},`)?.[0].trim();
let a = base;
let c = encodedString.split(`',${base},`)[1].slice(2).split("|").length;
let k = encodedString.split(`',${base},`)[1].slice(2).split("|");
// console.log('p:', p);
// console.log('a:', a);
// console.log('c:', c);
// console.log('k:', k);
const decode = function (p, a, c, k, e, d) {
e = function (c) {
return c.toString(36);
};
if (!"".replace(/^/, String)) {
while (c--) {
d[c.toString(a)] = k[c] || c.toString(a);
}
k = [
function (e) {
return d[e];
},
];
e = function () {
return "\\w+";
};
c = 1;
}
while (c--) {
if (k[c]) {
p = p.replace(new RegExp("\\b" + e(c) + "\\b", "g"), k[c]);
}
}
return p;
};
const decoded = decode(p, a, c, k, 0, {});
// get MDCore.wurl=
const wurl = decoded.match(/MDCore\.wurl="([^"]+)"/)?.[1];
console.log("wurl:", wurl);
const streamUrl = "https:" + wurl;
console.log("streamUrl:", streamUrl);
streamLinks.push({
server: "Mixdrop " + url.size,
link: streamUrl,
type: "mp4",
headers: { headers: {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0", "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: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
@@ -107,19 +45,93 @@ const getStream = async function ({ link: url, type, providerContext, }) {
"Sec-Fetch-Site": "same-origin", "Sec-Fetch-Site": "same-origin",
Pragma: "no-cache", Pragma: "no-cache",
"Cache-Control": "no-cache", "Cache-Control": "no-cache",
referer: res2.request?.responseURL, referer: (_c = res2.request) === null || _c === void 0 ? void 0 : _c.responseURL,
}, },
referrer: (_d = res2.request) === null || _d === void 0 ? void 0 : _d.responseURL,
method: "GET",
mode: "cors",
}); });
const data3 = yield res3.text();
// let MDCore: any = {};
// Step 1: Extract the function parameters and the encoded string
var functionRegex = /eval\(function\((.*?)\)\{.*?return p\}.*?\('(.*?)'\.split/;
var match = functionRegex.exec(data3);
let p = "";
if (match) {
// var params = match[1].split(',').map(param => param.trim());
var encodedString = match[2];
console.log("Encoded String:", encodedString);
// console.log('Parameters:', params);
// console.log('Encoded String:', encodedString.split("',36,")[0], '🔥🔥');
const base = Number(encodedString.split(",'|MDCore|")[0].split(",")[encodedString.split(",'|MDCore|")[0].split(",").length - 1]);
console.log("Base:", base);
p = (_e = encodedString.split(`',${base},`)) === null || _e === void 0 ? void 0 : _e[0].trim();
let a = base;
let c = encodedString.split(`',${base},`)[1].slice(2).split("|").length;
let k = encodedString.split(`',${base},`)[1].slice(2).split("|");
// console.log('p:', p);
// console.log('a:', a);
// console.log('c:', c);
// console.log('k:', k);
const decode = function (p, a, c, k, e, d) {
e = function (c) {
return c.toString(36);
};
if (!"".replace(/^/, String)) {
while (c--) {
d[c.toString(a)] = k[c] || c.toString(a);
}
k = [
function (e) {
return d[e];
},
];
e = function () {
return "\\w+";
};
c = 1;
}
while (c--) {
if (k[c]) {
p = p.replace(new RegExp("\\b" + e(c) + "\\b", "g"), k[c]);
}
}
return p;
};
const decoded = decode(p, a, c, k, 0, {});
// get MDCore.wurl=
const wurl = (_f = decoded.match(/MDCore\.wurl="([^"]+)"/)) === null || _f === void 0 ? void 0 : _f[1];
console.log("wurl:", wurl);
const streamUrl = "https:" + wurl;
console.log("streamUrl:", streamUrl);
streamLinks.push({
server: "Mixdrop " + url.size,
link: streamUrl,
type: "mp4",
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",
"Upgrade-Insecure-Requests": "1",
"Sec-Fetch-Dest": "iframe",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "same-origin",
Pragma: "no-cache",
"Cache-Control": "no-cache",
referer: (_g = res2.request) === null || _g === void 0 ? void 0 : _g.responseURL,
},
});
}
else {
console.log("No match found");
}
} }
else { return streamLinks;
console.log("No match found");
}
} }
return streamLinks; catch (err) {
} console.error(err);
catch (err) { return [];
console.error(err); }
return []; });
}
}; };
exports.getStream = getStream; exports.getStream = getStream;

View File

@@ -1,93 +1,102 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { axios, cheerio, getBaseUrl } = providerContext; var _b, _c, _d, _e, _f;
console.log("all", link); try {
const res = await axios.get(link); const { axios, cheerio, getBaseUrl } = providerContext;
const data = res.data; console.log("all", link);
function decodeHtml(encodedArray) { const res = yield axios.get(link);
// Join array elements into a single string const data = res.data;
const joined = encodedArray.join(""); function decodeHtml(encodedArray) {
// Replace escaped quotes // Join array elements into a single string
const unescaped = joined.replace(/\\"/g, '"').replace(/\\'/g, "'"); const joined = encodedArray.join("");
// Remove remaining escape characters // Replace escaped quotes
const cleaned = unescaped const unescaped = joined.replace(/\\"/g, '"').replace(/\\'/g, "'");
.replace(/\\n/g, "\n") // Remove remaining escape characters
.replace(/\\t/g, "\t") const cleaned = unescaped
.replace(/\\r/g, "\r"); .replace(/\\n/g, "\n")
// Convert literal string representations back to characters .replace(/\\t/g, "\t")
const decoded = cleaned .replace(/\\r/g, "\r");
.replace(/&quot;/g, '"') // Convert literal string representations back to characters
.replace(/&lt;/g, "<") const decoded = cleaned
.replace(/&gt;/g, ">") .replace(/&quot;/g, '"')
.replace(/&amp;/g, "&"); .replace(/&lt;/g, "<")
return decoded; .replace(/&gt;/g, ">")
} .replace(/&amp;/g, "&");
const $$ = cheerio.load(data); return decoded;
const htmlArray = $$('script:contains("decodeURIComponent")') }
.text() const $$ = cheerio.load(data);
.split(" = ")?.[1] const htmlArray = (_f = (_e = (_d = (_c = (_b = $$('script:contains("decodeURIComponent")')
?.split("protomovies")?.[0] .text()
?.trim() .split(" = ")) === null || _b === void 0 ? void 0 : _b[1]) === null || _c === void 0 ? void 0 : _c.split("protomovies")) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.trim()) === null || _f === void 0 ? void 0 : _f.slice(0, -1); // remove the last character
?.slice(0, -1); // remove the last character // console.log('protonGetInfo', htmlArray);
// console.log('protonGetInfo', htmlArray); const html = decodeHtml(JSON.parse(htmlArray));
const html = decodeHtml(JSON.parse(htmlArray)); // console.log('all', html);
// console.log('all', html); const $ = cheerio.load(html);
const $ = cheerio.load(html); const title = $(".trending-text.fw-bold.texture-text.text-uppercase.my-0.fadeInLeft.animated.d-inline-block").text();
const title = $(".trending-text.fw-bold.texture-text.text-uppercase.my-0.fadeInLeft.animated.d-inline-block").text(); const image = $("#thumbnail").attr("src");
const image = $("#thumbnail").attr("src"); const type = link.includes("series") ? "series" : "movie";
const type = link.includes("series") ? "series" : "movie"; const synopsis = $(".col-12.iq-mb-30.animated.fadeIn").first().text() ||
const synopsis = $(".col-12.iq-mb-30.animated.fadeIn").first().text() || $(".description-content").text();
$(".description-content").text(); const tags = $(".p-0.mt-2.list-inline.d-flex.flex-wrap.movie-tag")
const tags = $(".p-0.mt-2.list-inline.d-flex.flex-wrap.movie-tag") .find("li")
.find("li") .map((i, el) => $(el).text())
.map((i, el) => $(el).text()) .slice(0, 3)
.slice(0, 3) .get();
.get(); const baseUrl = yield getBaseUrl("protonMovies");
const baseUrl = await getBaseUrl("protonMovies"); const links = [];
const links = []; if (type === "movie") {
if (type === "movie") { const directLinks = [];
const directLinks = []; directLinks.push({ title: "Movie", link: link });
directLinks.push({ title: "Movie", link: link }); links.push({ title: "Movie", directLinks: directLinks });
links.push({ title: "Movie", directLinks: directLinks }); }
} else {
else { $("#episodes")
$("#episodes") .children()
.children() .map((i, element) => {
.map((i, element) => { let directLinks = [];
let directLinks = []; $(element)
$(element) .find(".episode-block")
.find(".episode-block") .map((j, ep) => {
.map((j, ep) => { const link = baseUrl + $(ep).find("a").attr("href") || "";
const link = baseUrl + $(ep).find("a").attr("href") || ""; const title = "Episode " + $(ep).find(".episode-number").text().split("E")[1];
const title = "Episode " + $(ep).find(".episode-number").text().split("E")[1]; directLinks.push({ title, link });
directLinks.push({ title, link }); });
links.push({ title: "Season " + (i + 1), directLinks: directLinks });
}); });
links.push({ title: "Season " + (i + 1), directLinks: directLinks }); }
}); return {
image: image || "",
imdbId: "",
linkList: links,
title: title || "",
synopsis: synopsis,
tags: tags,
type: type,
};
} }
return { catch (err) {
image: image || "", console.error("prton", err);
imdbId: "", return {
linkList: links, title: "",
title: title || "", synopsis: "",
synopsis: synopsis, image: "",
tags: tags, imdbId: "",
type: type, type: "movie",
}; linkList: [],
} };
catch (err) { }
console.error("prton", err); });
return {
title: "",
synopsis: "",
image: "",
imdbId: "",
type: "movie",
linkList: [],
};
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

View File

@@ -1,70 +1,85 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, page, signal, providerContext, }) { const getPosts = function (_a) {
const { getBaseUrl, axios, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("protonMovies"); const { getBaseUrl, axios, cheerio } = providerContext;
const url = `${baseUrl + filter}/page/${page}/`; const baseUrl = yield getBaseUrl("protonMovies");
return posts({ url, baseUrl, signal, axios, cheerio }); const url = `${baseUrl + filter}/page/${page}/`;
return posts({ url, baseUrl, signal, axios, cheerio });
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, signal, providerContext, }) { const getSearchPosts = function (_a) {
const { getBaseUrl, axios, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("protonMovies"); const { getBaseUrl, axios, cheerio } = providerContext;
const url = `${baseUrl}/search/${searchQuery}/page/${page}/`; const baseUrl = yield getBaseUrl("protonMovies");
return posts({ url, baseUrl, signal, axios, cheerio }); const url = `${baseUrl}/search/${searchQuery}/page/${page}/`;
return posts({ url, baseUrl, signal, axios, cheerio });
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts({ url, baseUrl, signal, axios, cheerio, }) { function posts(_a) {
function decodeHtml(encodedArray) { return __awaiter(this, arguments, void 0, function* ({ url, baseUrl, signal, axios, cheerio, }) {
// Join array elements into a single string function decodeHtml(encodedArray) {
const joined = encodedArray.join(""); // Join array elements into a single string
// Replace escaped quotes const joined = encodedArray.join("");
const unescaped = joined.replace(/\\"/g, '"').replace(/\\'/g, "'"); // Replace escaped quotes
// Remove remaining escape characters const unescaped = joined.replace(/\\"/g, '"').replace(/\\'/g, "'");
const cleaned = unescaped // Remove remaining escape characters
.replace(/\\n/g, "\n") const cleaned = unescaped
.replace(/\\t/g, "\t") .replace(/\\n/g, "\n")
.replace(/\\r/g, "\r"); .replace(/\\t/g, "\t")
// Convert literal string representations back to characters .replace(/\\r/g, "\r");
const decoded = cleaned // Convert literal string representations back to characters
.replace(/&quot;/g, '"') const decoded = cleaned
.replace(/&lt;/g, "<") .replace(/&quot;/g, '"')
.replace(/&gt;/g, ">") .replace(/&lt;/g, "<")
.replace(/&amp;/g, "&"); .replace(/&gt;/g, ">")
return decoded; .replace(/&amp;/g, "&");
} return decoded;
try { }
const res = await axios.get(url, { try {
headers: { const res = yield axios.get(url, {
referer: baseUrl, headers: {
}, referer: baseUrl,
signal, },
}); signal,
const data = res.data; });
const regex = /\[(?=.*?"<div class")(.*?)\]/g; const data = res.data;
const htmlArray = data?.match(regex); const regex = /\[(?=.*?"<div class")(.*?)\]/g;
const html = decodeHtml(JSON.parse(htmlArray[htmlArray.length - 1])); const htmlArray = data === null || data === void 0 ? void 0 : data.match(regex);
const $ = cheerio.load(html); const html = decodeHtml(JSON.parse(htmlArray[htmlArray.length - 1]));
const catalog = []; const $ = cheerio.load(html);
$(".col.mb-4").map((i, element) => { const catalog = [];
const title = $(element).find("h5").text(); $(".col.mb-4").map((i, element) => {
const link = $(element).find("h5").find("a").attr("href"); const title = $(element).find("h5").text();
const image = $(element).find("img").attr("data-src") || const link = $(element).find("h5").find("a").attr("href");
$(element).find("img").attr("src") || const image = $(element).find("img").attr("data-src") ||
""; $(element).find("img").attr("src") ||
if (title && link && image) { "";
catalog.push({ if (title && link && image) {
title: title, catalog.push({
link: link, title: title,
image: image, link: link,
}); image: image,
} });
}); }
return catalog; });
} return catalog;
catch (err) { }
console.error("protonGetPosts error ", err); catch (err) {
return []; console.error("protonGetPosts error ", err);
} return [];
}
});
} }

View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
function LALLJLutmoZpvvbikjaWM(str) { function LALLJLutmoZpvvbikjaWM(str) {
@@ -13,153 +22,150 @@ function getOrCreateUID() {
const uid = "uid_" + Date.now() + "_" + Math.random().toString(36).substr(2, 9); const uid = "uid_" + Date.now() + "_" + Math.random().toString(36).substr(2, 9);
return uid; return uid;
} }
const getStream = async function ({ link, providerContext, }) { const getStream = function (_a) {
const { axios, cheerio, commonHeaders: headers, extractors, } = providerContext; return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { gofileExtracter } = extractors; var _b, _c, _d, _e, _f, _g, _h, _j;
function generateMessageToken(baseUrlL) { const { axios, cheerio, commonHeaders: headers, extractors, } = providerContext;
const hostname = baseUrlL?.replace(/https?:\/\//, "").split("/")[0]; const { gofileExtracter } = extractors;
console.log("generateMessageToken hostname", hostname); function generateMessageToken(baseUrlL) {
const NsmxUftCNibQ = `[hostname=${hostname}][agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0][tmz=India Standard Time][userTimezoneOffset=-330][{"url":"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js","type":"script","duration":253.30000000074506},{"url":"https://challenges.cloudflare.com/turnstile/v0/api.js?onload=onloadTurnstileCallback","type":"script","duration":397.19999999925494},{"url":"https://adoto.net/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js","type":"img","duration":225.90000000223517},{"url":"https://code.jquery.com/jquery-3.3.1.slim.min.js","type":"script","duration":65.30000000074506},{"url":"https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015","type":"script","duration":225.89999999850988},{"url":"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js","type":"script","duration":253.30000000074506},{"url":"https://challenges.cloudflare.com/turnstile/v0/api.js?onload=onloadTurnstileCallback","type":"script","duration":397.19999999925494},{"url":"https://adoto.net/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js","type":"img","duration":225.90000000223517},{"url":"https://code.jquery.com/jquery-3.3.1.slim.min.js","type":"script","duration":65.30000000074506},{"url":"https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015","type":"script","duration":225.89999999850988},{"url":"https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov2/av0/rcv/b3dhg/0x4AAAAAAAQDru7r64xT2ifD/auto/fbE/new/normal/auto/","type":"iframe","duration":2050.300000000745},{"url":"https://new19.gdtot.dad/favicon.ico","type":"img","duration":1003.6999999992549},{"url":"https://vikingfile.com/assets/favicon-64375c377b5df8304acbdad4f4430694.ico","type":"img","duration":183.19999999925494},{"url":"https://gofile.io/dist/img/favicon32.png","type":"img","duration":19177.199999999255},{"url":"https://pub.clickadu.com/assets/scripts/supported-browsers.js","type":"fetch","duration":18.799999997019768},{"url":"https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov2/av0/rcv/b3dhg/0x4AAAAAAAQDru7r64xT2ifD/auto/fbE/auto_expire/normal/auto/","type":"iframe","duration":1612.5999999977648},{"url":"https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov2/av0/rcv/b3dhg/0x4AAAAAAAQDru7r64xT2ifD/auto/fbE/auto_expire/normal/auto/","type":"iframe","duration":1154.0999999977648},{"url":"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js","type":"script","duration":253.30000000074506},{"url":"https://challenges.cloudflare.com/turnstile/v0/api.js?onload=onloadTurnstileCallback","type":"script","duration":397.19999999925494},{"url":"https://adoto.net/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js","type":"img","duration":225.90000000223517},{"url":"https://code.jquery.com/jquery-3.3.1.slim.min.js","type":"script","duration":65.30000000074506},{"url":"https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015","type":"script","duration":225.89999999850988},{"url":"https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov2/av0/rcv/b3dhg/0x4AAAAAAAQDru7r64xT2ifD/auto/fbE/new/normal/auto/","type":"iframe","duration":2050.300000000745},{"url":"https://new19.gdtot.dad/favicon.ico","type":"img","duration":1003.6999999992549},{"url":"https://vikingfile.com/assets/favicon-64375c377b5df8304acbdad4f4430694.ico","type":"img","duration":183.19999999925494},{"url":"https://gofile.io/dist/img/favicon32.png","type":"img","duration":19177.199999999255},{"url":"https://pub.clickadu.com/assets/scripts/supported-browsers.js","type":"fetch","duration":18.799999997019768},{"url":"https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov2/av0/rcv/b3dhg/0x4AAAAAAAQDru7r64xT2ifD/auto/fbE/auto_expire/normal/auto/","type":"iframe","duration":1612.5999999977648},{"url":"https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov2/av0/rcv/b3dhg/0x4AAAAAAAQDru7r64xT2ifD/auto/fbE/auto_expire/normal/auto/","type":"iframe","duration":1154.0999999977648},{"url":"https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov2/av0/rcv/b3dhg/0x4AAAAAAAQDru7r64xT2ifD/auto/fbE/auto_expire/normal/auto/","type":"iframe","duration":986}][{"elements":{"div":70,"span":68,"img":4,"iframe":0,"script":28,"link":20,"p":5,"a":213,"ul":28,"li":208,"button":9,"input":5},"hidden":{"div":13,"span":60,"img":1,"iframe":0,"script":28,"link":20,"p":0,"a":186,"ul":22,"li":184,"button":6,"input":2},"errors":{"network":0,"js":0},"eventListeners":0}]`; const hostname = baseUrlL === null || baseUrlL === void 0 ? void 0 : baseUrlL.replace(/https?:\/\//, "").split("/")[0];
var jRpeP = LALLJLutmoZpvvbikjaWM(NsmxUftCNibQ); console.log("generateMessageToken hostname", hostname);
var jzKEwqEAcWFMNwHZnCCqJQ = new Uint8Array(jRpeP); const NsmxUftCNibQ = `[hostname=${hostname}][agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0][tmz=India Standard Time][userTimezoneOffset=-330][{"url":"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js","type":"script","duration":253.30000000074506},{"url":"https://challenges.cloudflare.com/turnstile/v0/api.js?onload=onloadTurnstileCallback","type":"script","duration":397.19999999925494},{"url":"https://adoto.net/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js","type":"img","duration":225.90000000223517},{"url":"https://code.jquery.com/jquery-3.3.1.slim.min.js","type":"script","duration":65.30000000074506},{"url":"https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015","type":"script","duration":225.89999999850988},{"url":"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js","type":"script","duration":253.30000000074506},{"url":"https://challenges.cloudflare.com/turnstile/v0/api.js?onload=onloadTurnstileCallback","type":"script","duration":397.19999999925494},{"url":"https://adoto.net/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js","type":"img","duration":225.90000000223517},{"url":"https://code.jquery.com/jquery-3.3.1.slim.min.js","type":"script","duration":65.30000000074506},{"url":"https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015","type":"script","duration":225.89999999850988},{"url":"https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov2/av0/rcv/b3dhg/0x4AAAAAAAQDru7r64xT2ifD/auto/fbE/new/normal/auto/","type":"iframe","duration":2050.300000000745},{"url":"https://new19.gdtot.dad/favicon.ico","type":"img","duration":1003.6999999992549},{"url":"https://vikingfile.com/assets/favicon-64375c377b5df8304acbdad4f4430694.ico","type":"img","duration":183.19999999925494},{"url":"https://gofile.io/dist/img/favicon32.png","type":"img","duration":19177.199999999255},{"url":"https://pub.clickadu.com/assets/scripts/supported-browsers.js","type":"fetch","duration":18.799999997019768},{"url":"https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov2/av0/rcv/b3dhg/0x4AAAAAAAQDru7r64xT2ifD/auto/fbE/auto_expire/normal/auto/","type":"iframe","duration":1612.5999999977648},{"url":"https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov2/av0/rcv/b3dhg/0x4AAAAAAAQDru7r64xT2ifD/auto/fbE/auto_expire/normal/auto/","type":"iframe","duration":1154.0999999977648},{"url":"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js","type":"script","duration":253.30000000074506},{"url":"https://challenges.cloudflare.com/turnstile/v0/api.js?onload=onloadTurnstileCallback","type":"script","duration":397.19999999925494},{"url":"https://adoto.net/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js","type":"img","duration":225.90000000223517},{"url":"https://code.jquery.com/jquery-3.3.1.slim.min.js","type":"script","duration":65.30000000074506},{"url":"https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015","type":"script","duration":225.89999999850988},{"url":"https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov2/av0/rcv/b3dhg/0x4AAAAAAAQDru7r64xT2ifD/auto/fbE/new/normal/auto/","type":"iframe","duration":2050.300000000745},{"url":"https://new19.gdtot.dad/favicon.ico","type":"img","duration":1003.6999999992549},{"url":"https://vikingfile.com/assets/favicon-64375c377b5df8304acbdad4f4430694.ico","type":"img","duration":183.19999999925494},{"url":"https://gofile.io/dist/img/favicon32.png","type":"img","duration":19177.199999999255},{"url":"https://pub.clickadu.com/assets/scripts/supported-browsers.js","type":"fetch","duration":18.799999997019768},{"url":"https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov2/av0/rcv/b3dhg/0x4AAAAAAAQDru7r64xT2ifD/auto/fbE/auto_expire/normal/auto/","type":"iframe","duration":1612.5999999977648},{"url":"https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov2/av0/rcv/b3dhg/0x4AAAAAAAQDru7r64xT2ifD/auto/fbE/auto_expire/normal/auto/","type":"iframe","duration":1154.0999999977648},{"url":"https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov2/av0/rcv/b3dhg/0x4AAAAAAAQDru7r64xT2ifD/auto/fbE/auto_expire/normal/auto/","type":"iframe","duration":986}][{"elements":{"div":70,"span":68,"img":4,"iframe":0,"script":28,"link":20,"p":5,"a":213,"ul":28,"li":208,"button":9,"input":5},"hidden":{"div":13,"span":60,"img":1,"iframe":0,"script":28,"link":20,"p":0,"a":186,"ul":22,"li":184,"button":6,"input":2},"errors":{"network":0,"js":0},"eventListeners":0}]`;
var kyMXQUxoFYuZIBlKvlHa = jzKEwqEAcWFMNwHZnCCqJQ.toString(); var jRpeP = LALLJLutmoZpvvbikjaWM(NsmxUftCNibQ);
var kyMXQUxoFYuZIBlKvlHa = kyMXQUxoFYuZIBlKvlHa.replace(/2/g, "004"); var jzKEwqEAcWFMNwHZnCCqJQ = new Uint8Array(jRpeP);
var kyMXQUxoFYuZIBlKvlHa = kyMXQUxoFYuZIBlKvlHa.replace(/3/g, "005"); var kyMXQUxoFYuZIBlKvlHa = jzKEwqEAcWFMNwHZnCCqJQ.toString();
var kyMXQUxoFYuZIBlKvlHa = kyMXQUxoFYuZIBlKvlHa.replace(/7/g, "007"); var kyMXQUxoFYuZIBlKvlHa = kyMXQUxoFYuZIBlKvlHa.replace(/2/g, "004");
var kyMXQUxoFYuZIBlKvlHa = kyMXQUxoFYuZIBlKvlHa.replace(/,0,0,0/g, ""); var kyMXQUxoFYuZIBlKvlHa = kyMXQUxoFYuZIBlKvlHa.replace(/3/g, "005");
return kyMXQUxoFYuZIBlKvlHa; var kyMXQUxoFYuZIBlKvlHa = kyMXQUxoFYuZIBlKvlHa.replace(/7/g, "007");
} var kyMXQUxoFYuZIBlKvlHa = kyMXQUxoFYuZIBlKvlHa.replace(/,0,0,0/g, "");
function decodeHtml(encodedArray) { return kyMXQUxoFYuZIBlKvlHa;
// Join array elements into a single string
const joined = encodedArray.join("");
// Replace escaped quotes
const unescaped = joined.replace(/\\"/g, '"').replace(/\\'/g, "'");
// Remove remaining escape characters
const cleaned = unescaped
.replace(/\\n/g, "\n")
.replace(/\\t/g, "\t")
.replace(/\\r/g, "\r");
// Convert literal string representations back to characters
const decoded = cleaned
.replace(/&quot;/g, '"')
.replace(/&lt;/g, "<")
.replace(/&gt;/g, ">")
.replace(/&amp;/g, "&");
return decoded;
}
try {
const streamLinks = [];
const res = await axios.get(link, { headers });
const data = res.data;
// const regex = /\[(?=.*?"<div class")(.*?)\]/g;
// const htmlArray = data?.match(regex);
// new code
const $$ = cheerio.load(data);
const htmlArray = $$('script:contains("decodeURIComponent")')
.text()
.split(" = ")?.[1]
?.split("protomovies")?.[0]
?.trim()
?.slice(0, -1); // remove the last character
// console.log('protonGetInfo', htmlArray);
// const html = decodeHtml(JSON.parse(htmlArray[htmlArray.length - 1]));
const html = decodeHtml(JSON.parse(htmlArray));
// console.log('protonGetInfo', htmlArray[htmlArray.length - 1]);
// console.log('all', html);
const $ = cheerio.load(html);
const idList = [];
const id1080 = $('tr:contains("1080p")')
.find('button:contains("Info")')
.attr("id")
?.split("-")[1];
if (id1080) {
idList.push({
id: id1080,
quality: "1080p",
});
} }
const id720 = $('tr:contains("720p")') function decodeHtml(encodedArray) {
.find('button:contains("Info")') // Join array elements into a single string
.attr("id") const joined = encodedArray.join("");
?.split("-")[1]; // Replace escaped quotes
if (id720) { const unescaped = joined.replace(/\\"/g, '"').replace(/\\'/g, "'");
idList.push({ // Remove remaining escape characters
id: id720, const cleaned = unescaped
quality: "720p", .replace(/\\n/g, "\n")
}); .replace(/\\t/g, "\t")
.replace(/\\r/g, "\r");
// Convert literal string representations back to characters
const decoded = cleaned
.replace(/&quot;/g, '"')
.replace(/&lt;/g, "<")
.replace(/&gt;/g, ">")
.replace(/&amp;/g, "&");
return decoded;
} }
const id480 = $('tr:contains("480p")') try {
.find('button:contains("Info")') const streamLinks = [];
.attr("id") const res = yield axios.get(link, { headers });
?.split("-")[1]; const data = res.data;
if (id480) { // const regex = /\[(?=.*?"<div class")(.*?)\]/g;
idList.push({ // const htmlArray = data?.match(regex);
id: id480, // new code
quality: "480p", const $$ = cheerio.load(data);
}); const htmlArray = (_f = (_e = (_d = (_c = (_b = $$('script:contains("decodeURIComponent")')
} .text()
// console.log('idList', idList); .split(" = ")) === null || _b === void 0 ? void 0 : _b[1]) === null || _c === void 0 ? void 0 : _c.split("protomovies")) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.trim()) === null || _f === void 0 ? void 0 : _f.slice(0, -1); // remove the last character
const baseUrl = link.split("/").slice(0, 3).join("/"); // console.log('protonGetInfo', htmlArray);
const secondIdList = []; // const html = decodeHtml(JSON.parse(htmlArray[htmlArray.length - 1]));
await Promise.all(idList.slice(0, 2).map(async (id) => { const html = decodeHtml(JSON.parse(htmlArray));
const formData = new URLSearchParams(); // console.log('protonGetInfo', htmlArray[htmlArray.length - 1]);
formData.append("downloadid", id.id); // console.log('all', html);
formData.append("token", "ok"); const $ = cheerio.load(html);
const messageToken = generateMessageToken(baseUrl); const idList = [];
const uid = getOrCreateUID(); const id1080 = (_g = $('tr:contains("1080p")')
const idRes = await fetch(`${baseUrl}/ppd.php`, { .find('button:contains("Info")')
headers: { .attr("id")) === null || _g === void 0 ? void 0 : _g.split("-")[1];
accept: "*/*", if (id1080) {
"accept-language": "en-US,en;q=0.9,en-IN;q=0.8", idList.push({
"cache-control": "no-cache", id: id1080,
"content-type": "application/x-www-form-urlencoded", quality: "1080p",
pragma: "no-cache", });
priority: "u=1, i",
"sec-ch-ua": '"Chromium";v="136", "Microsoft Edge";v="136", "Not.A/Brand";v="99"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": '"Windows"',
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
cookie: "ext_name=ojplmecpdpgccookcobabopnaifgidhf; tgInvite222=true; cf_clearance=3ynJv2B6lHMj3FCOqtfQaL7lTN4KC3xmPRMgcNtddAc-1748787867-1.2.1.1-SEIhLbWR3ehfib5Y3P5pjzj1Qu9wipc52Icv4AmNkztXn2pTXhjKgxXnvTuA2bNscgHuc1juXujAHteqY_vaMmy2C3djMWnJGzjje_XvXZXKht8rwHZt6sviq7KAYvrYZPTrATqENuopzmqmK6dDFS.CAnWHt0VDn8q06iLm5rYj1AXUo3qkV5p1Idx_25elWHYGG8yengBrQV1MYVM9LMdQqv44PXu69FZvNkgv.d6blCKyneJnoLkw4LHAccu.QRPbFwWqqTDyO9YTLRQW9w29bKghD3_JVxkz.qxpg5FbocJ3i6tJJy74SvROpYdpVUOn0fW1YgQ7RxYwhNoHpdTKy8pvmQJGRuSVW1GjO_k",
Referer: "https://m3.protonmovies.top/download/",
"Referrer-Policy": "strict-origin-when-cross-origin",
},
body: `downloadid=${id.id}&msg=${messageToken}&uid=${uid}&token=ok`,
method: "POST",
});
const idData = await idRes.text();
secondIdList.push({
quality: id.quality,
id: idData,
});
console.log("idData", idData);
}));
await Promise.all(secondIdList.map(async (id) => {
const idRes = await axios.post(`${baseUrl}/tmp/${id.id}`);
if (idRes.data.ppd["gofile.io"]) {
const goRes = await gofileExtracter(idRes.data.ppd["gofile.io"].link.split("/").pop());
console.log("link", goRes.link);
if (goRes.link) {
streamLinks.push({
link: goRes.link,
server: "gofile " + id.quality,
type: "mkv",
headers: {
referer: "https://gofile.io",
connection: "keep-alive",
contentType: "video/x-matroska",
cookie: "accountToken=" + goRes.token,
},
});
}
} }
})); const id720 = (_h = $('tr:contains("720p")')
return streamLinks; .find('button:contains("Info")')
} .attr("id")) === null || _h === void 0 ? void 0 : _h.split("-")[1];
catch (e) { if (id720) {
console.log("proton get stream err", e); idList.push({
return []; id: id720,
} quality: "720p",
});
}
const id480 = (_j = $('tr:contains("480p")')
.find('button:contains("Info")')
.attr("id")) === null || _j === void 0 ? void 0 : _j.split("-")[1];
if (id480) {
idList.push({
id: id480,
quality: "480p",
});
}
// console.log('idList', idList);
const baseUrl = link.split("/").slice(0, 3).join("/");
const secondIdList = [];
yield Promise.all(idList.slice(0, 2).map((id) => __awaiter(this, void 0, void 0, function* () {
const formData = new URLSearchParams();
formData.append("downloadid", id.id);
formData.append("token", "ok");
const messageToken = generateMessageToken(baseUrl);
const uid = getOrCreateUID();
const idRes = yield fetch(`${baseUrl}/ppd.php`, {
headers: {
accept: "*/*",
"accept-language": "en-US,en;q=0.9,en-IN;q=0.8",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded",
pragma: "no-cache",
priority: "u=1, i",
"sec-ch-ua": '"Chromium";v="136", "Microsoft Edge";v="136", "Not.A/Brand";v="99"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": '"Windows"',
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
cookie: "ext_name=ojplmecpdpgccookcobabopnaifgidhf; tgInvite222=true; cf_clearance=3ynJv2B6lHMj3FCOqtfQaL7lTN4KC3xmPRMgcNtddAc-1748787867-1.2.1.1-SEIhLbWR3ehfib5Y3P5pjzj1Qu9wipc52Icv4AmNkztXn2pTXhjKgxXnvTuA2bNscgHuc1juXujAHteqY_vaMmy2C3djMWnJGzjje_XvXZXKht8rwHZt6sviq7KAYvrYZPTrATqENuopzmqmK6dDFS.CAnWHt0VDn8q06iLm5rYj1AXUo3qkV5p1Idx_25elWHYGG8yengBrQV1MYVM9LMdQqv44PXu69FZvNkgv.d6blCKyneJnoLkw4LHAccu.QRPbFwWqqTDyO9YTLRQW9w29bKghD3_JVxkz.qxpg5FbocJ3i6tJJy74SvROpYdpVUOn0fW1YgQ7RxYwhNoHpdTKy8pvmQJGRuSVW1GjO_k",
Referer: "https://m3.protonmovies.top/download/",
"Referrer-Policy": "strict-origin-when-cross-origin",
},
body: `downloadid=${id.id}&msg=${messageToken}&uid=${uid}&token=ok`,
method: "POST",
});
const idData = yield idRes.text();
secondIdList.push({
quality: id.quality,
id: idData,
});
console.log("idData", idData);
})));
yield Promise.all(secondIdList.map((id) => __awaiter(this, void 0, void 0, function* () {
const idRes = yield axios.post(`${baseUrl}/tmp/${id.id}`);
if (idRes.data.ppd["gofile.io"]) {
const goRes = yield gofileExtracter(idRes.data.ppd["gofile.io"].link.split("/").pop());
console.log("link", goRes.link);
if (goRes.link) {
streamLinks.push({
link: goRes.link,
server: "gofile " + id.quality,
type: "mkv",
headers: {
referer: "https://gofile.io",
connection: "keep-alive",
contentType: "video/x-matroska",
cookie: "accountToken=" + goRes.token,
},
});
}
}
})));
return streamLinks;
}
catch (e) {
console.log("proton get stream err", e);
return [];
}
});
}; };
exports.getStream = getStream; exports.getStream = getStream;

View File

@@ -1,85 +1,94 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { getBaseUrl, axios } = providerContext; var _b, _c, _d, _e, _f, _g, _h;
const res = await axios.get(link);
const data = res.data;
const meta = {
title: "",
synopsis: "",
image: "",
imdbId: data?.meta?.imdb_id || "",
type: data?.meta?.type || "movie",
};
const baseUrl = await getBaseUrl("ridomovies");
let slug = "";
try { try {
const res2 = await axios.get(baseUrl + "/core/api/search?q=" + meta.imdbId); const { getBaseUrl, axios } = providerContext;
const data2 = res2.data; const res = yield axios.get(link);
slug = data2?.data?.items[0]?.fullSlug; const data = res.data;
if (!slug || meta?.type === "series") { const meta = {
title: "",
synopsis: "",
image: "",
imdbId: ((_b = data === null || data === void 0 ? void 0 : data.meta) === null || _b === void 0 ? void 0 : _b.imdb_id) || "",
type: ((_c = data === null || data === void 0 ? void 0 : data.meta) === null || _c === void 0 ? void 0 : _c.type) || "movie",
};
const baseUrl = yield getBaseUrl("ridomovies");
let slug = "";
try {
const res2 = yield axios.get(baseUrl + "/core/api/search?q=" + meta.imdbId);
const data2 = res2.data;
slug = (_e = (_d = data2 === null || data2 === void 0 ? void 0 : data2.data) === null || _d === void 0 ? void 0 : _d.items[0]) === null || _e === void 0 ? void 0 : _e.fullSlug;
if (!slug || (meta === null || meta === void 0 ? void 0 : meta.type) === "series") {
return {
title: "",
synopsis: "",
image: "",
imdbId: ((_f = data === null || data === void 0 ? void 0 : data.meta) === null || _f === void 0 ? void 0 : _f.imdb_id) || "",
type: (meta === null || meta === void 0 ? void 0 : meta.type) || "movie",
linkList: [],
};
}
}
catch (err) {
return { return {
title: "", title: "",
synopsis: "", synopsis: "",
image: "", image: "",
imdbId: data?.meta?.imdb_id || "", imdbId: (meta === null || meta === void 0 ? void 0 : meta.imdbId) || "",
type: meta?.type || "movie", type: (meta === null || meta === void 0 ? void 0 : meta.type) || "movie",
linkList: [], linkList: [],
}; };
} }
const links = [];
let directLinks = [];
let season = new Map();
if (meta.type === "series") {
(_h = (_g = data === null || data === void 0 ? void 0 : data.meta) === null || _g === void 0 ? void 0 : _g.videos) === null || _h === void 0 ? void 0 : _h.map((video) => {
if ((video === null || video === void 0 ? void 0 : video.season) <= 0)
return;
if (!season.has(video === null || video === void 0 ? void 0 : video.season)) {
season.set(video === null || video === void 0 ? void 0 : video.season, []);
}
season.get(video === null || video === void 0 ? void 0 : video.season).push({
title: "Episode " + (video === null || video === void 0 ? void 0 : video.episode),
link: "",
});
});
for (const [seasonNum, episodes] of season.entries()) {
links.push({
title: "Season " + seasonNum,
directLinks: episodes,
});
}
}
else {
directLinks.push({ title: "Movie", link: link });
links.push({ title: "Movie", directLinks: directLinks });
}
return Object.assign(Object.assign({}, meta), { linkList: links });
} }
catch (err) { catch (err) {
return { return {
title: "", title: "",
synopsis: "", synopsis: "",
image: "", image: "",
imdbId: meta?.imdbId || "", imdbId: "",
type: meta?.type || "movie", type: "movie",
linkList: [], linkList: [],
}; };
} }
const links = []; });
let directLinks = [];
let season = new Map();
if (meta.type === "series") {
data?.meta?.videos?.map((video) => {
if (video?.season <= 0)
return;
if (!season.has(video?.season)) {
season.set(video?.season, []);
}
season.get(video?.season).push({
title: "Episode " + video?.episode,
link: "",
});
});
for (const [seasonNum, episodes] of season.entries()) {
links.push({
title: "Season " + seasonNum,
directLinks: episodes,
});
}
}
else {
directLinks.push({ title: "Movie", link: link });
links.push({ title: "Movie", directLinks: directLinks });
}
return {
...meta,
linkList: links,
};
}
catch (err) {
return {
title: "",
synopsis: "",
image: "",
imdbId: "",
type: "movie",
linkList: [],
};
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

View File

@@ -1,66 +1,79 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, signal, providerContext, }) { const getPosts = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ filter, signal, providerContext, }) {
const catalog = []; try {
const url = "https://cinemeta-catalogs.strem.io" + filter; const catalog = [];
console.log("allGetPostUrl", url); const url = "https://cinemeta-catalogs.strem.io" + filter;
const res = await providerContext.axios.get(url, { console.log("allGetPostUrl", url);
headers: providerContext.commonHeaders, const res = yield providerContext.axios.get(url, {
signal, headers: providerContext.commonHeaders,
}); signal,
const data = res.data; });
data?.metas.map((result) => { const data = res.data;
const title = result?.name; data === null || data === void 0 ? void 0 : data.metas.map((result) => {
const id = result?.imdb_id || result?.id; const title = result === null || result === void 0 ? void 0 : result.name;
const type = result?.type; const id = (result === null || result === void 0 ? void 0 : result.imdb_id) || (result === null || result === void 0 ? void 0 : result.id);
const image = result?.poster; const type = result === null || result === void 0 ? void 0 : result.type;
if (id) { const image = result === null || result === void 0 ? void 0 : result.poster;
catalog.push({ if (id) {
title: title, catalog.push({
link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`, title: title,
image: image, link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`,
}); image: image,
} });
}); }
console.log("catalog", catalog.length); });
return catalog; console.log("catalog", catalog.length);
} return catalog;
catch (err) { }
console.error("AutoEmbed error ", err); catch (err) {
return []; console.error("AutoEmbed error ", err);
}
};
exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, signal, providerContext, }) {
try {
const { axios, commonHeaders: headers } = providerContext;
if (page > 1) {
return []; return [];
} }
const catalog = []; });
const url2 = `https://v3-cinemeta.strem.io/catalog/movie/top/search=${encodeURI(searchQuery)}.json`; };
const res2 = await axios.get(url2, { headers, signal }); exports.getPosts = getPosts;
const data2 = res2.data; const getSearchPosts = function (_a) {
data2?.metas.map((result) => { return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) {
const title = result?.name || ""; try {
const id = result?.imdb_id || result?.id; const { axios, commonHeaders: headers } = providerContext;
const image = result?.poster; if (page > 1) {
const type = result?.type; return [];
if (id) {
catalog.push({
title: title,
link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`,
image: image,
});
} }
}); const catalog = [];
return catalog; const url2 = `https://v3-cinemeta.strem.io/catalog/movie/top/search=${encodeURI(searchQuery)}.json`;
} const res2 = yield axios.get(url2, { headers, signal });
catch (err) { const data2 = res2.data;
console.error("AutoEmbed error ", err); data2 === null || data2 === void 0 ? void 0 : data2.metas.map((result) => {
return []; const title = (result === null || result === void 0 ? void 0 : result.name) || "";
} const id = (result === null || result === void 0 ? void 0 : result.imdb_id) || (result === null || result === void 0 ? void 0 : result.id);
const image = result === null || result === void 0 ? void 0 : result.poster;
const type = result === null || result === void 0 ? void 0 : result.type;
if (id) {
catalog.push({
title: title,
link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`,
image: image,
});
}
});
return catalog;
}
catch (err) {
console.error("AutoEmbed error ", err);
return [];
}
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;

View File

@@ -1,7 +1,17 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const getStream = async ({ link: data, providerContext, }) => { const getStream = (_a) => __awaiter(void 0, [_a], void 0, function* ({ link: data, providerContext, }) {
var _b, _c;
try { try {
const { cheerio, commonHeaders: headers, axios } = providerContext; const { cheerio, commonHeaders: headers, axios } = providerContext;
const streamData = JSON.parse(data); const streamData = JSON.parse(data);
@@ -15,18 +25,15 @@ const getStream = async ({ link: data, providerContext, }) => {
// const res = await axios.get(url, {headers}); // const res = await axios.get(url, {headers});
// const postId = res.data.split('\\"postid\\":\\"')[1].split('\\"')[0]; // const postId = res.data.split('\\"postid\\":\\"')[1].split('\\"')[0];
// console.log('rido post id', postId); // console.log('rido post id', postId);
const url = streamData?.baseUrl + "/api/" + streamData?.slug; const url = (streamData === null || streamData === void 0 ? void 0 : streamData.baseUrl) + "/api/" + (streamData === null || streamData === void 0 ? void 0 : streamData.slug);
console.log("rido url", url); console.log("rido url", url);
const res = await axios.get(url, { headers }); const res = yield axios.get(url, { headers });
const iframe = res.data.data?.[0]?.url; const iframe = (_c = (_b = res.data.data) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.url;
console.log("rido data", iframe); console.log("rido data", iframe);
const iframeUrl = iframe.split('src="')[1].split('"')[0]; const iframeUrl = iframe.split('src="')[1].split('"')[0];
console.log("rido iframeUrl", iframeUrl); console.log("rido iframeUrl", iframeUrl);
const iframeRes = await axios.get(iframeUrl, { const iframeRes = yield axios.get(iframeUrl, {
headers: { headers: Object.assign(Object.assign({}, headers), { Referer: streamData === null || streamData === void 0 ? void 0 : streamData.baseUrl }),
...headers,
Referer: streamData?.baseUrl,
},
}); });
const $ = cheerio.load(iframeRes.data); const $ = cheerio.load(iframeRes.data);
const script = $('script:contains("eval")').html(); const script = $('script:contains("eval")').html();
@@ -50,7 +57,7 @@ const getStream = async ({ link: data, providerContext, }) => {
console.log("rido get stream err", e); console.log("rido get stream err", e);
return []; return [];
} }
}; });
exports.getStream = getStream; exports.getStream = getStream;
function unpackJavaScript(packedCode) { function unpackJavaScript(packedCode) {
const encodedString = packedCode.split("|aHR")[1].split("|")[0]; const encodedString = packedCode.split("|aHR")[1].split("|")[0];

154
dist/ringz/meta.js vendored
View File

@@ -1,85 +1,95 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link: data, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link: data, }) {
const dataJson = JSON.parse(data); var _b, _c;
const title = dataJson?.kn || dataJson?.mn; try {
const image = dataJson?.IH || dataJson?.IV; const dataJson = JSON.parse(data);
const tags = dataJson?.gn const title = (dataJson === null || dataJson === void 0 ? void 0 : dataJson.kn) || (dataJson === null || dataJson === void 0 ? void 0 : dataJson.mn);
.split(",") const image = (dataJson === null || dataJson === void 0 ? void 0 : dataJson.IH) || (dataJson === null || dataJson === void 0 ? void 0 : dataJson.IV);
.slice(0, 3) const tags = dataJson === null || dataJson === void 0 ? void 0 : dataJson.gn.split(",").slice(0, 3).map((tag) => tag.trim());
.map((tag) => tag.trim()); const type = (dataJson === null || dataJson === void 0 ? void 0 : dataJson.cg) === "webSeries" ? "series" : "movie";
const type = dataJson?.cg === "webSeries" ? "series" : "movie"; const linkList = [];
const linkList = []; if ((dataJson === null || dataJson === void 0 ? void 0 : dataJson.cg) === "webSeries") {
if (dataJson?.cg === "webSeries") { (_b = ["1", "2", "3", "4"]) === null || _b === void 0 ? void 0 : _b.forEach((item) => {
["1", "2", "3", "4"]?.forEach((item) => { var _a;
const directLinks = [];
if (typeof (dataJson === null || dataJson === void 0 ? void 0 : dataJson["eServer" + item]) === "object" &&
((_a = Object === null || Object === void 0 ? void 0 : Object.keys(dataJson === null || dataJson === void 0 ? void 0 : dataJson["eServer" + item])) === null || _a === void 0 ? void 0 : _a.length) > 0) {
Object.keys(dataJson === null || dataJson === void 0 ? void 0 : dataJson["eServer" + item]).forEach((key) => {
directLinks.push({
title: "Episode " + key,
link: JSON.stringify({
url: dataJson === null || dataJson === void 0 ? void 0 : dataJson["eServer" + item][key],
server: "Server " + item,
}),
});
});
linkList.push({
title: (dataJson === null || dataJson === void 0 ? void 0 : dataJson.pn) + " (Server " + item + ")",
directLinks,
});
}
});
}
else {
const directLinks = []; const directLinks = [];
if (typeof dataJson?.["eServer" + item] === "object" && (_c = ["1", "2", "3", "4"]) === null || _c === void 0 ? void 0 : _c.forEach((item) => {
Object?.keys(dataJson?.["eServer" + item])?.length > 0) { if (dataJson === null || dataJson === void 0 ? void 0 : dataJson["s" + item]) {
Object.keys(dataJson?.["eServer" + item]).forEach((key) => {
directLinks.push({ directLinks.push({
title: "Episode " + key, title: "Server " + item + " (HD)",
link: JSON.stringify({ link: JSON.stringify({
url: dataJson?.["eServer" + item][key], url: dataJson === null || dataJson === void 0 ? void 0 : dataJson.s1,
server: "Server " + item, server: "Server " + item,
}), }),
}); });
}); }
linkList.push({ if (dataJson === null || dataJson === void 0 ? void 0 : dataJson["4s" + item]) {
title: dataJson?.pn + " (Server " + item + ")", directLinks.push({
directLinks, title: "Server " + item + " (480p)",
}); link: JSON.stringify({
} url: dataJson === null || dataJson === void 0 ? void 0 : dataJson["4s" + item],
}); server: "Server " + item,
}),
});
}
});
linkList.push({
title: dataJson === null || dataJson === void 0 ? void 0 : dataJson.pn,
directLinks,
});
}
return {
title,
image,
imdbId: "",
synopsis: "",
type,
linkList,
tags,
};
} }
else { catch (err) {
const directLinks = []; return {
["1", "2", "3", "4"]?.forEach((item) => { title: "",
if (dataJson?.["s" + item]) { image: "",
directLinks.push({ imdbId: "",
title: "Server " + item + " (HD)", synopsis: "",
link: JSON.stringify({ type: "movie",
url: dataJson?.s1, linkList: [],
server: "Server " + item, tags: [],
}), };
});
}
if (dataJson?.["4s" + item]) {
directLinks.push({
title: "Server " + item + " (480p)",
link: JSON.stringify({
url: dataJson?.["4s" + item],
server: "Server " + item,
}),
});
}
});
linkList.push({
title: dataJson?.pn,
directLinks,
});
} }
return { });
title,
image,
imdbId: "",
synopsis: "",
type,
linkList,
tags,
};
}
catch (err) {
return {
title: "",
image: "",
imdbId: "",
synopsis: "",
type: "movie",
linkList: [],
tags: [],
};
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

249
dist/ringz/posts.js vendored
View File

@@ -1,38 +1,88 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.ringzData = exports.headers = exports.getSearchPosts = exports.getPosts = void 0; exports.ringzData = exports.headers = exports.getSearchPosts = exports.getPosts = void 0;
exports.getRingzMovies = getRingzMovies; exports.getRingzMovies = getRingzMovies;
exports.getRingzShows = getRingzShows; exports.getRingzShows = getRingzShows;
exports.getRingzAnime = getRingzAnime; exports.getRingzAnime = getRingzAnime;
exports.getRingzAdult = getRingzAdult; exports.getRingzAdult = getRingzAdult;
const getPosts = async function ({ filter, signal, providerContext, }) { const getPosts = function (_a) {
return posts({ filter, signal, providerContext }); return __awaiter(this, arguments, void 0, function* ({ filter, signal, providerContext, }) {
return posts({ filter, signal, providerContext });
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, // providerContext, const getSearchPosts = function (_a) {
}) { return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, // providerContext,
if (page > 1) }) {
return []; if (page > 1)
function searchData(data, query) { return [];
// Convert query to lowercase for case-insensitive search function searchData(data, query) {
const searchQuery = query.toLowerCase(); // Convert query to lowercase for case-insensitive search
// Filter movies based on movie name (mn) const searchQuery = query.toLowerCase();
return data.filter((movie) => { // Filter movies based on movie name (mn)
// Convert movie name to lowercase and check if it includes the search query return data.filter((movie) => {
const movieName = movie.mn.toLowerCase(); // Convert movie name to lowercase and check if it includes the search query
return movieName.includes(searchQuery); const movieName = movie.mn.toLowerCase();
}); return movieName.includes(searchQuery);
} });
try { }
const catalog = []; try {
const promises = [getRingzMovies(), getRingzShows(), getRingzAnime()]; const catalog = [];
const responses = await Promise.all(promises); const promises = [getRingzMovies(), getRingzShows(), getRingzAnime()];
responses.map((response) => { const responses = yield Promise.all(promises);
const searchResults = searchData(response, searchQuery); responses.map((response) => {
searchResults.map((element) => { const searchResults = searchData(response, searchQuery);
const title = element?.kn || element?.mn; searchResults.map((element) => {
const title = (element === null || element === void 0 ? void 0 : element.kn) || (element === null || element === void 0 ? void 0 : element.mn);
const link = JSON.stringify(element);
const image = element === null || element === void 0 ? void 0 : element.IV;
if (title && link) {
catalog.push({
title: title,
link: link,
image: image,
});
}
});
});
return catalog;
}
catch (err) {
console.error("ringz error ", err);
return [];
}
});
};
exports.getSearchPosts = getSearchPosts;
function posts(_a) {
return __awaiter(this, arguments, void 0, function* ({ filter, // signal,
}) {
try {
let response;
if (filter === "MOVIES") {
response = getRingzMovies();
}
if (filter === "SERIES") {
response = getRingzShows();
}
if (filter === "ANIME") {
response = getRingzAnime();
}
const data = yield response;
const catalog = [];
data.map((element) => {
const title = (element === null || element === void 0 ? void 0 : element.kn) || (element === null || element === void 0 ? void 0 : element.mn);
const link = JSON.stringify(element); const link = JSON.stringify(element);
const image = element?.IV; const image = element === null || element === void 0 ? void 0 : element.IV;
if (title && link) { if (title && link) {
catalog.push({ catalog.push({
title: title, title: title,
@@ -41,109 +91,74 @@ const getSearchPosts = async function ({ searchQuery, page, // providerContext,
}); });
} }
}); });
}); return catalog;
return catalog;
}
catch (err) {
console.error("ringz error ", err);
return [];
}
};
exports.getSearchPosts = getSearchPosts;
async function posts({ filter, // signal,
}) {
try {
let response;
if (filter === "MOVIES") {
response = getRingzMovies();
} }
if (filter === "SERIES") { catch (err) {
response = getRingzShows(); console.error("ringz error ", err);
return [];
} }
if (filter === "ANIME") { });
response = getRingzAnime();
}
const data = await response;
const catalog = [];
data.map((element) => {
const title = element?.kn || element?.mn;
const link = JSON.stringify(element);
const image = element?.IV;
if (title && link) {
catalog.push({
title: title,
link: link,
image: image,
});
}
});
return catalog;
}
catch (err) {
console.error("ringz error ", err);
return [];
}
} }
exports.headers = { exports.headers = {
"cf-access-client-id": "833049b087acf6e787cedfd85d1ccdb8.access", "cf-access-client-id": "833049b087acf6e787cedfd85d1ccdb8.access",
"cf-access-client-secret": "02db296a961d7513c3102d7785df4113eff036b2d57d060ffcc2ba3ba820c6aa", "cf-access-client-secret": "02db296a961d7513c3102d7785df4113eff036b2d57d060ffcc2ba3ba820c6aa",
}; };
const BASE_URL = "https://privatereporz.pages.dev"; const BASE_URL = "https://privatereporz.pages.dev";
async function getRingzMovies() { function getRingzMovies() {
try { return __awaiter(this, void 0, void 0, function* () {
const response = await fetch(`${BASE_URL}/test.json`, { try {
headers: { const response = yield fetch(`${BASE_URL}/test.json`, {
...exports.headers, headers: Object.assign({}, exports.headers),
}, });
}); const data = yield response.json();
const data = await response.json(); return data.AllMovieDataList;
return data.AllMovieDataList; }
} catch (error) {
catch (error) { console.error(error);
console.error(error); }
} });
} }
async function getRingzShows() { function getRingzShows() {
try { return __awaiter(this, void 0, void 0, function* () {
const response = await fetch(`${BASE_URL}/srs.json`, { try {
headers: { const response = yield fetch(`${BASE_URL}/srs.json`, {
...exports.headers, headers: Object.assign({}, exports.headers),
}, });
}); const data = yield response.json();
const data = await response.json(); return data.webSeriesDataList;
return data.webSeriesDataList; }
} catch (error) {
catch (error) { console.error(error);
console.error(error); }
} });
} }
async function getRingzAnime() { function getRingzAnime() {
try { return __awaiter(this, void 0, void 0, function* () {
const response = await fetch(`${BASE_URL}/anime.json`, { try {
headers: { const response = yield fetch(`${BASE_URL}/anime.json`, {
...exports.headers, headers: Object.assign({}, exports.headers),
}, });
}); const data = yield response.json();
const data = await response.json(); return data.webSeriesDataList;
return data.webSeriesDataList; }
} catch (error) {
catch (error) { console.error(error);
console.error(error); }
} });
} }
async function getRingzAdult() { function getRingzAdult() {
try { return __awaiter(this, void 0, void 0, function* () {
const response = await fetch(`${BASE_URL}/desihub.json`, { try {
headers: { const response = yield fetch(`${BASE_URL}/desihub.json`, {
...exports.headers, headers: Object.assign({}, exports.headers),
}, });
}); const data = yield response.json();
const data = await response.json(); return data.webSeriesDataList;
return data.webSeriesDataList; }
} catch (error) {
catch (error) { console.error(error);
console.error(error); }
} });
} }
exports.ringzData = { exports.ringzData = {
getRingzMovies, getRingzMovies,

27
dist/ringz/stream.js vendored
View File

@@ -1,14 +1,25 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const getStream = async function ({ link: data, }) { const getStream = function (_a) {
const streamLinks = []; return __awaiter(this, arguments, void 0, function* ({ link: data, }) {
const dataJson = JSON.parse(data); const streamLinks = [];
streamLinks.push({ const dataJson = JSON.parse(data);
link: dataJson.url, streamLinks.push({
server: dataJson.server, link: dataJson.url,
type: "mkv", server: dataJson.server,
type: "mkv",
});
return streamLinks;
}); });
return streamLinks;
}; };
exports.getStream = getStream; exports.getStream = getStream;

View File

@@ -1,32 +1,43 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getEpisodes = void 0; exports.getEpisodes = void 0;
const getEpisodes = async function ({ url: id, providerContext, }) { const getEpisodes = function (_a) {
const { axios } = providerContext; return __awaiter(this, arguments, void 0, function* ({ url: id, providerContext, }) {
try { const { axios } = providerContext;
const [fileId, febboxId] = id.split("&"); try {
const febLink = febboxId const [fileId, febboxId] = id.split("&");
? `https://www.febbox.com/file/file_share_list?share_key=${fileId}&pwd=&parent_id=${febboxId}&is_html=0` const febLink = febboxId
: `https://www.febbox.com/file/file_share_list?share_key=${fileId}&pwd=&is_html=0`; ? `https://www.febbox.com/file/file_share_list?share_key=${fileId}&pwd=&parent_id=${febboxId}&is_html=0`
const res = await axios.get(febLink); : `https://www.febbox.com/file/file_share_list?share_key=${fileId}&pwd=&is_html=0`;
const data = res.data; const res = yield axios.get(febLink);
const fileList = data.data.file_list; const data = res.data;
const episodeLinks = []; const fileList = data.data.file_list;
fileList?.map((file) => { const episodeLinks = [];
const fileName = formatEpisodeName(file.file_name); fileList === null || fileList === void 0 ? void 0 : fileList.map((file) => {
const epId = file?.fid; const fileName = formatEpisodeName(file.file_name);
if (!file.is_dir && fileName && epId) { const epId = file === null || file === void 0 ? void 0 : file.fid;
episodeLinks.push({ if (!file.is_dir && fileName && epId) {
title: fileName, episodeLinks.push({
link: `${fileId}&${epId}`, title: fileName,
}); link: `${fileId}&${epId}`,
} });
}); }
return episodeLinks; });
} return episodeLinks;
catch (err) { }
return []; catch (err) {
} return [];
}
});
}; };
exports.getEpisodes = getEpisodes; exports.getEpisodes = getEpisodes;
function formatEpisodeName(title) { function formatEpisodeName(title) {

125
dist/showbox/meata.js vendored
View File

@@ -1,65 +1,74 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { axios, cheerio } = providerContext; var _b, _c, _d, _e, _f, _g, _h, _j, _k;
const url = link; try {
const res = await axios.get(url); const { axios, cheerio } = providerContext;
const data = res.data; const url = link;
const $ = cheerio.load(data); const res = yield axios.get(url);
const type = url.includes("tv") ? "series" : "movie"; const data = res.data;
const imdbId = ""; const $ = cheerio.load(data);
const title = $(".heading-name").text(); const type = url.includes("tv") ? "series" : "movie";
const rating = $(".btn-imdb") const imdbId = "";
.text() const title = $(".heading-name").text();
?.match(/\d+(\.\d+)?/g)?.[0] || ""; const rating = ((_c = (_b = $(".btn-imdb")
const image = $(".cover_follow").attr("style")?.split("url(")[1]?.split(")")[0] || ""; .text()) === null || _b === void 0 ? void 0 : _b.match(/\d+(\.\d+)?/g)) === null || _c === void 0 ? void 0 : _c[0]) || "";
const synopsis = $(".description") const image = ((_e = (_d = $(".cover_follow").attr("style")) === null || _d === void 0 ? void 0 : _d.split("url(")[1]) === null || _e === void 0 ? void 0 : _e.split(")")[0]) || "";
.text() const synopsis = (_g = (_f = $(".description")
?.replace(/[\n\t]/g, "") .text()) === null || _f === void 0 ? void 0 : _f.replace(/[\n\t]/g, "")) === null || _g === void 0 ? void 0 : _g.trim();
?.trim(); const febID = (_j = (_h = $(".heading-name").find("a").attr("href")) === null || _h === void 0 ? void 0 : _h.split("/")) === null || _j === void 0 ? void 0 : _j.pop();
const febID = $(".heading-name").find("a").attr("href")?.split("/")?.pop(); const baseUrl = url.split("/").slice(0, 3).join("/");
const baseUrl = url.split("/").slice(0, 3).join("/"); const indexUrl = `${baseUrl}/index/share_link?id=${febID}&type=${type === "movie" ? "1" : "2"}`;
const indexUrl = `${baseUrl}/index/share_link?id=${febID}&type=${type === "movie" ? "1" : "2"}`; const indexRes = yield axios.get(indexUrl);
const indexRes = await axios.get(indexUrl); const indexData = indexRes.data;
const indexData = indexRes.data; const febKey = indexData.data.link.split("/").pop();
const febKey = indexData.data.link.split("/").pop(); const febLink = `https://www.febbox.com/file/file_share_list?share_key=${febKey}&is_html=0`;
const febLink = `https://www.febbox.com/file/file_share_list?share_key=${febKey}&is_html=0`; const febRes = yield axios.get(febLink);
const febRes = await axios.get(febLink); const febData = febRes.data;
const febData = febRes.data; const fileList = (_k = febData === null || febData === void 0 ? void 0 : febData.data) === null || _k === void 0 ? void 0 : _k.file_list;
const fileList = febData?.data?.file_list; const links = [];
const links = []; if (fileList) {
if (fileList) { fileList.map((file) => {
fileList.map((file) => { const fileName = `${file.file_name} (${file.file_size})`;
const fileName = `${file.file_name} (${file.file_size})`; const fileId = file.fid;
const fileId = file.fid; links.push({
links.push({ title: fileName,
title: fileName, episodesLink: file.is_dir ? `${febKey}&${fileId}` : `${febKey}&`,
episodesLink: file.is_dir ? `${febKey}&${fileId}` : `${febKey}&`, });
}); });
}); }
return {
title,
rating,
synopsis,
image,
imdbId,
type,
linkList: links,
};
} }
return { catch (err) {
title, return {
rating, title: "",
synopsis, rating: "",
image, synopsis: "",
imdbId, image: "",
type, imdbId: "",
linkList: links, type: "",
}; linkList: [],
} };
catch (err) { }
return { });
title: "",
rating: "",
synopsis: "",
image: "",
imdbId: "",
type: "",
linkList: [],
};
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

93
dist/showbox/posts.js vendored
View File

@@ -1,47 +1,62 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, page, const getPosts = function (_a) {
// providerValue, return __awaiter(this, arguments, void 0, function* ({ filter, page,
signal, providerContext, }) { // providerValue,
const { getBaseUrl, axios, cheerio } = providerContext; signal, providerContext, }) {
const baseUrl = await getBaseUrl("showbox"); const { getBaseUrl, axios, cheerio } = providerContext;
const url = `${baseUrl + filter}?page=${page}/`; const baseUrl = yield getBaseUrl("showbox");
return posts({ url, signal, baseUrl, axios, cheerio }); const url = `${baseUrl + filter}?page=${page}/`;
return posts({ url, signal, baseUrl, axios, cheerio });
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, const getSearchPosts = function (_a) {
// providerValue, return __awaiter(this, arguments, void 0, function* ({ searchQuery, page,
signal, providerContext, }) { // providerValue,
const { getBaseUrl, axios, cheerio } = providerContext; signal, providerContext, }) {
const baseUrl = await getBaseUrl("showbox"); const { getBaseUrl, axios, cheerio } = providerContext;
const url = `${baseUrl}/search?keyword=${searchQuery}&page=${page}`; const baseUrl = yield getBaseUrl("showbox");
return posts({ url, signal, baseUrl, axios, cheerio }); const url = `${baseUrl}/search?keyword=${searchQuery}&page=${page}`;
return posts({ url, signal, baseUrl, axios, cheerio });
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts({ url, signal, function posts(_a) {
// baseUrl, return __awaiter(this, arguments, void 0, function* ({ url, signal,
axios, cheerio, }) { // baseUrl,
try { axios, cheerio, }) {
const res = await axios.get(url, { signal }); try {
const data = res.data; const res = yield axios.get(url, { signal });
const $ = cheerio.load(data); const data = res.data;
const catalog = []; const $ = cheerio.load(data);
$(".movie-item").map((i, element) => { const catalog = [];
const title = $(element).find(".movie-title").text(); $(".movie-item").map((i, element) => {
const link = $(element).find("a").attr("href"); const title = $(element).find(".movie-title").text();
const image = $(element).find("img").attr("src"); const link = $(element).find("a").attr("href");
if (title && link && image) { const image = $(element).find("img").attr("src");
catalog.push({ if (title && link && image) {
title: title, catalog.push({
link: link, title: title,
image: image, link: link,
}); image: image,
} });
}); }
return catalog; });
} return catalog;
catch (err) { }
return []; catch (err) {
} return [];
}
});
} }

View File

@@ -32,39 +32,50 @@ var __importStar = (this && this.__importStar) || (function () {
return result; return result;
}; };
})(); })();
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const cheerio = __importStar(require("cheerio")); const cheerio = __importStar(require("cheerio"));
const getStream = async function ({ link: id, const getStream = function (_a) {
// type, return __awaiter(this, arguments, void 0, function* ({ link: id,
signal, providerContext, }) { // type,
try { signal, providerContext, }) {
const { axios } = providerContext; try {
const stream = []; const { axios } = providerContext;
const [, epId] = id.split("&"); const stream = [];
const url = `https://febbox.vercel.app/api/video-quality?fid=${epId}`; const [, epId] = id.split("&");
const res = await axios.get(url, { signal }); const url = `https://febbox.vercel.app/api/video-quality?fid=${epId}`;
const data = res.data; const res = yield axios.get(url, { signal });
const $ = cheerio.load(data.html); const data = res.data;
$(".file_quality").each((i, el) => { const $ = cheerio.load(data.html);
const server = $(el).find("p.name").text() + $(".file_quality").each((i, el) => {
" - " + const server = $(el).find("p.name").text() +
$(el).find("p.size").text() + " - " +
" - " + $(el).find("p.size").text() +
$(el).find("p.speed").text(); " - " +
const link = $(el).attr("data-url"); $(el).find("p.speed").text();
if (link) { const link = $(el).attr("data-url");
stream.push({ if (link) {
server: server, stream.push({
type: "mkv", server: server,
link: link, type: "mkv",
}); link: link,
} });
}); }
return stream; });
} return stream;
catch (err) { }
return []; catch (err) {
} return [];
}
});
}; };
exports.getStream = getStream; exports.getStream = getStream;

View File

@@ -1,38 +1,50 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.superVideoExtractor = superVideoExtractor; exports.superVideoExtractor = superVideoExtractor;
async function superVideoExtractor(data) { function superVideoExtractor(data) {
try { return __awaiter(this, void 0, void 0, function* () {
// Step 1: Extract the function parameters and the encoded string var _a, _b;
var functionRegex = /eval\(function\((.*?)\)\{.*?return p\}.*?\('(.*?)'\.split/; try {
var match = functionRegex.exec(data); // Step 1: Extract the function parameters and the encoded string
let p = ''; var functionRegex = /eval\(function\((.*?)\)\{.*?return p\}.*?\('(.*?)'\.split/;
if (match) { var match = functionRegex.exec(data);
// var params = match[1].split(',').map(param => param.trim()); let p = '';
var encodedString = match[2]; if (match) {
// console.log('Parameters:', params); // var params = match[1].split(',').map(param => param.trim());
// console.log('Encoded String:', encodedString.split("',36,")[0], '🔥🔥'); var encodedString = match[2];
p = encodedString.split("',36,")?.[0].trim(); // console.log('Parameters:', params);
let a = 36; // console.log('Encoded String:', encodedString.split("',36,")[0], '🔥🔥');
let c = encodedString.split("',36,")[1].slice(2).split('|').length; p = (_a = encodedString.split("',36,")) === null || _a === void 0 ? void 0 : _a[0].trim();
let k = encodedString.split("',36,")[1].slice(2).split('|'); let a = 36;
while (c--) { let c = encodedString.split("',36,")[1].slice(2).split('|').length;
if (k[c]) { let k = encodedString.split("',36,")[1].slice(2).split('|');
var regex = new RegExp('\\b' + c.toString(a) + '\\b', 'g'); while (c--) {
p = p.replace(regex, k[c]); if (k[c]) {
var regex = new RegExp('\\b' + c.toString(a) + '\\b', 'g');
p = p.replace(regex, k[c]);
}
} }
// console.log('Decoded String:', p);
} }
// console.log('Decoded String:', p); else {
console.log('No match found');
}
const streamUrl = (_b = p === null || p === void 0 ? void 0 : p.match(/file:\s*"([^"]+\.m3u8[^"]*)"/)) === null || _b === void 0 ? void 0 : _b[1];
console.log('streamUrl:', streamUrl);
return streamUrl || '';
} }
else { catch (err) {
console.log('No match found'); console.error('SuperVideoExtractor Error:', err);
return '';
} }
const streamUrl = p?.match(/file:\s*"([^"]+\.m3u8[^"]*)"/)?.[1]; });
console.log('streamUrl:', streamUrl);
return streamUrl || '';
}
catch (err) {
console.error('SuperVideoExtractor Error:', err);
return '';
}
} }

View File

@@ -1,60 +1,68 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { cheerio } = providerContext; try {
const url = link; const { cheerio } = providerContext;
const res = await fetch(url); const url = link;
const data = await res.text(); const res = yield fetch(url);
const $ = cheerio.load(data); const data = yield res.text();
const meta = { const $ = cheerio.load(data);
title: $('.c_h2:contains("Title(s):")') const meta = {
.text() title: $('.c_h2:contains("Title(s):")')
.replace("Title(s):", "") .text()
.trim() .replace("Title(s):", "")
.split("\n")[0], .trim()
synopsis: $('.c_h2b:contains("Summary:"),.c_h2:contains("Summary:")') .split("\n")[0],
.text() synopsis: $('.c_h2b:contains("Summary:"),.c_h2:contains("Summary:")')
.replace("Summary:", "") .text()
.trim(), .replace("Summary:", "")
image: $(".a_img").attr("src") || "", .trim(),
imdbId: "", image: $(".a_img").attr("src") || "",
type: "series", imdbId: "",
}; type: "series",
const episodesList = []; };
$(".episode").map((i, element) => { const episodesList = [];
const link = "https://www.tokyoinsider.com" + $(element).find("a").attr("href") || $(".episode").map((i, element) => {
$(".download-link").attr("href"); const link = "https://www.tokyoinsider.com" + $(element).find("a").attr("href") ||
let title = $(element).find("a").find("em").text() + $(".download-link").attr("href");
" " + let title = $(element).find("a").find("em").text() +
$(element).find("a").find("strong").text(); " " +
if (!title.trim()) { $(element).find("a").find("strong").text();
title = $(".download-link").text(); if (!title.trim()) {
} title = $(".download-link").text();
if (link && title.trim()) { }
episodesList.push({ title, link }); if (link && title.trim()) {
} episodesList.push({ title, link });
}); }
return { });
...meta, return Object.assign(Object.assign({}, meta), { linkList: [
linkList: [ {
{ title: meta.title,
title: meta.title, directLinks: episodesList,
directLinks: episodesList, },
}, ] });
], }
}; catch (err) {
} return {
catch (err) { title: "",
return { synopsis: "",
title: "", image: "",
synopsis: "", imdbId: "",
image: "", type: "series",
imdbId: "", linkList: [],
type: "series", };
linkList: [], }
}; });
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

View File

@@ -1,50 +1,65 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, page, const getPosts = function (_a) {
// providerValue, return __awaiter(this, arguments, void 0, function* ({ filter, page,
signal, providerContext, }) { // providerValue,
const { getBaseUrl, axios, cheerio } = providerContext; signal, providerContext, }) {
const baseURL = await getBaseUrl("tokyoinsider"); const { getBaseUrl, axios, cheerio } = providerContext;
const start = page < 2 ? 0 : (page - 1) * 20; const baseURL = yield getBaseUrl("tokyoinsider");
const url = `${baseURL}/${filter}&start=${start}`; const start = page < 2 ? 0 : (page - 1) * 20;
return posts({ baseURL, url, signal, axios, cheerio }); const url = `${baseURL}/${filter}&start=${start}`;
return posts({ baseURL, url, signal, axios, cheerio });
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, const getSearchPosts = function (_a) {
// providerValue, return __awaiter(this, arguments, void 0, function* ({ searchQuery, page,
signal, providerContext, }) { // providerValue,
const { getBaseUrl, axios, cheerio } = providerContext; signal, providerContext, }) {
const baseURL = await getBaseUrl("tokyoinsider"); const { getBaseUrl, axios, cheerio } = providerContext;
const start = page < 2 ? 0 : (page - 1) * 20; const baseURL = yield getBaseUrl("tokyoinsider");
const url = `${baseURL}/anime/search?k=${searchQuery}&start=${start}`; const start = page < 2 ? 0 : (page - 1) * 20;
return posts({ baseURL, url, signal, axios, cheerio }); const url = `${baseURL}/anime/search?k=${searchQuery}&start=${start}`;
return posts({ baseURL, url, signal, axios, cheerio });
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts({ baseURL, url, signal, axios, cheerio, }) { function posts(_a) {
try { return __awaiter(this, arguments, void 0, function* ({ baseURL, url, signal, axios, cheerio, }) {
const res = await axios.get(url, { signal }); try {
const data = res.data; const res = yield axios.get(url, { signal });
const $ = cheerio.load(data); const data = res.data;
const catalog = []; const $ = cheerio.load(data);
$('td.c_h2[width="40"]').map((i, element) => { const catalog = [];
const image = $(element) $('td.c_h2[width="40"]').map((i, element) => {
.find(".a_img") var _a;
.attr("src") const image = (_a = $(element)
?.replace("small", "default"); .find(".a_img")
const title = $(element).find("a").attr("title"); .attr("src")) === null || _a === void 0 ? void 0 : _a.replace("small", "default");
const link = baseURL + $(element).find("a").attr("href"); const title = $(element).find("a").attr("title");
if (title && link && image) { const link = baseURL + $(element).find("a").attr("href");
catalog.push({ if (title && link && image) {
title: title, catalog.push({
link: link, title: title,
image: image, link: link,
}); image: image,
} });
}); }
return catalog; });
} return catalog;
catch (err) { }
return []; catch (err) {
} return [];
}
});
} }

View File

@@ -1,30 +1,41 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const getStream = async function ({ link, providerContext, }) { const getStream = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { cheerio } = providerContext; try {
const url = link; const { cheerio } = providerContext;
const res = await fetch(url); const url = link;
const data = await res.text(); const res = yield fetch(url);
const $ = cheerio.load(data); const data = yield res.text();
const streamLinks = []; const $ = cheerio.load(data);
$(".c_h1,.c_h2").map((i, element) => { const streamLinks = [];
$(element).find("span").remove(); $(".c_h1,.c_h2").map((i, element) => {
const title = $(element).find("a").text() || ""; $(element).find("span").remove();
const link = $(element).find("a").attr("href") || ""; const title = $(element).find("a").text() || "";
if (title && link.includes("media")) { const link = $(element).find("a").attr("href") || "";
streamLinks.push({ if (title && link.includes("media")) {
server: title, streamLinks.push({
link, server: title,
type: link.split(".").pop() || "mkv", link,
}); type: link.split(".").pop() || "mkv",
} });
}); }
return streamLinks; });
} return streamLinks;
catch (err) { }
return []; catch (err) {
} return [];
}
});
}; };
exports.getStream = getStream; exports.getStream = getStream;

View File

@@ -1,49 +1,60 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getEpisodes = void 0; exports.getEpisodes = void 0;
const getEpisodes = async function ({ url, providerContext, }) { const getEpisodes = function (_a) {
const { axios, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) {
try { var _b;
if (url.includes("url=")) { const { axios, cheerio } = providerContext;
url = atob(url.split("url=")[1]); try {
} if (url.includes("url=")) {
const res = await axios.get(url); url = atob(url.split("url=")[1]);
const html = res.data;
let $ = cheerio.load(html);
if (url.includes("url=")) {
const newUrl = $("meta[http-equiv='refresh']")
.attr("content")
?.split("url=")[1];
const res2 = await axios.get(newUrl || url);
const html2 = res2.data;
$ = cheerio.load(html2);
}
const episodeLinks = [];
$("h3,h4").map((i, element) => {
const seriesTitle = $(element).text();
const episodesLink = $(element).find("a").attr("href");
if (episodesLink && episodesLink !== "#") {
episodeLinks.push({
title: seriesTitle.trim() || "No title found",
link: episodesLink || "",
});
} }
}); const res = yield axios.get(url);
$("a.maxbutton").map((i, element) => { const html = res.data;
const seriesTitle = $(element).children("span").text(); let $ = cheerio.load(html);
const episodesLink = $(element).attr("href"); if (url.includes("url=")) {
if (episodesLink && episodesLink !== "#") { const newUrl = (_b = $("meta[http-equiv='refresh']")
episodeLinks.push({ .attr("content")) === null || _b === void 0 ? void 0 : _b.split("url=")[1];
title: seriesTitle.trim() || "No title found", const res2 = yield axios.get(newUrl || url);
link: episodesLink || "", const html2 = res2.data;
}); $ = cheerio.load(html2);
} }
}); const episodeLinks = [];
return episodeLinks; $("h3,h4").map((i, element) => {
} const seriesTitle = $(element).text();
catch (err) { const episodesLink = $(element).find("a").attr("href");
console.error(err); if (episodesLink && episodesLink !== "#") {
return []; episodeLinks.push({
} title: seriesTitle.trim() || "No title found",
link: episodesLink || "",
});
}
});
$("a.maxbutton").map((i, element) => {
const seriesTitle = $(element).children("span").text();
const episodesLink = $(element).attr("href");
if (episodesLink && episodesLink !== "#") {
episodeLinks.push({
title: seriesTitle.trim() || "No title found",
link: episodesLink || "",
});
}
});
return episodeLinks;
}
catch (err) {
console.error(err);
return [];
}
});
}; };
exports.getEpisodes = getEpisodes; exports.getEpisodes = getEpisodes;

127
dist/topmovies/meta.js vendored
View File

@@ -1,62 +1,75 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { axios, cheerio } = providerContext; var _b;
const url = link; try {
const res = await axios.get(url); const { axios, cheerio } = providerContext;
const data = res.data; const url = link;
const $ = cheerio.load(data); const res = yield axios.get(url);
const meta = { const data = res.data;
title: $(".imdbwp__title").text(), const $ = cheerio.load(data);
synopsis: $(".imdbwp__teaser").text(), const meta = {
image: $(".imdbwp__thumb").find("img").attr("src") || "", title: $(".imdbwp__title").text(),
imdbId: $(".imdbwp__link").attr("href")?.split("/")[4] || "", synopsis: $(".imdbwp__teaser").text(),
type: $(".thecontent").text().toLocaleLowerCase().includes("season") image: $(".imdbwp__thumb").find("img").attr("src") || "",
? "series" imdbId: ((_b = $(".imdbwp__link").attr("href")) === null || _b === void 0 ? void 0 : _b.split("/")[4]) || "",
: "movie", type: $(".thecontent").text().toLocaleLowerCase().includes("season")
}; ? "series"
const links = []; : "movie",
$("h3,h4").map((i, element) => { };
const seriesTitle = $(element).text(); const links = [];
// const batchZipLink = $(element) $("h3,h4").map((i, element) => {
// .next("p") var _a;
// .find(".maxbutton-batch-zip,.maxbutton-zip-download") const seriesTitle = $(element).text();
// .attr("href"); // const batchZipLink = $(element)
const episodesLink = $(element) // .next("p")
.next("p") // .find(".maxbutton-batch-zip,.maxbutton-zip-download")
.find(".maxbutton-episode-links,.maxbutton-g-drive,.maxbutton-af-download") // .attr("href");
.attr("href"); const episodesLink = $(element)
const movieLink = $(element) .next("p")
.next("p") .find(".maxbutton-episode-links,.maxbutton-g-drive,.maxbutton-af-download")
.find(".maxbutton-download-links") .attr("href");
.attr("href"); const movieLink = $(element)
if (movieLink || .next("p")
(episodesLink && episodesLink !== "javascript:void(0);")) { .find(".maxbutton-download-links")
links.push({ .attr("href");
title: seriesTitle.replace("Download ", "").trim() || "Download", if (movieLink ||
episodesLink: episodesLink || "", (episodesLink && episodesLink !== "javascript:void(0);")) {
directLinks: movieLink links.push({
? [{ link: movieLink, title: "Movie", type: "movie" }] title: seriesTitle.replace("Download ", "").trim() || "Download",
: [], episodesLink: episodesLink || "",
quality: seriesTitle?.match(/\d+p\b/)?.[0] || "", directLinks: movieLink
}); ? [{ link: movieLink, title: "Movie", type: "movie" }]
} : [],
}); quality: ((_a = seriesTitle === null || seriesTitle === void 0 ? void 0 : seriesTitle.match(/\d+p\b/)) === null || _a === void 0 ? void 0 : _a[0]) || "",
// console.log('mod meta', links); });
return { ...meta, linkList: links }; }
} });
catch (err) { // console.log('mod meta', links);
console.error(err); return Object.assign(Object.assign({}, meta), { linkList: links });
return { }
title: "", catch (err) {
synopsis: "", console.error(err);
image: "", return {
imdbId: "", title: "",
type: "movie", synopsis: "",
linkList: [], image: "",
}; imdbId: "",
} type: "movie",
linkList: [],
};
}
});
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const headers = { const headers = {
@@ -17,48 +26,54 @@ const headers = {
"Upgrade-Insecure-Requests": "1", "Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",
}; };
const getPosts = async function ({ filter, page, signal, providerContext, }) { const getPosts = function (_a) {
const { getBaseUrl } = providerContext; return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("Topmovies"); const { getBaseUrl } = providerContext;
const url = `${baseUrl + filter}/page/${page}/`; const baseUrl = yield getBaseUrl("Topmovies");
return posts(url, signal, providerContext); const url = `${baseUrl + filter}/page/${page}/`;
return posts(url, signal, providerContext);
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, signal, providerContext, }) { const getSearchPosts = function (_a) {
const { getBaseUrl } = providerContext; return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) {
const baseUrl = await getBaseUrl("Topmovies"); const { getBaseUrl } = providerContext;
const url = `${baseUrl}/search/${searchQuery}/page/${page}/`; const baseUrl = yield getBaseUrl("Topmovies");
return posts(url, signal, providerContext); const url = `${baseUrl}/search/${searchQuery}/page/${page}/`;
return posts(url, signal, providerContext);
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts(url, signal, providerContext) { function posts(url, signal, providerContext) {
try { return __awaiter(this, void 0, void 0, function* () {
const { axios, cheerio } = providerContext; try {
const res = await axios.get(url, { headers, signal }); const { axios, cheerio } = providerContext;
const data = res.data; const res = yield axios.get(url, { headers, signal });
const $ = cheerio.load(data); const data = res.data;
const catalog = []; const $ = cheerio.load(data);
$(".post-cards") const catalog = [];
.find("article") $(".post-cards")
.map((i, element) => { .find("article")
const title = $(element).find("a").attr("title"); .map((i, element) => {
const link = $(element).find("a").attr("href"); const title = $(element).find("a").attr("title");
const image = $(element).find("img").attr("data-src") || const link = $(element).find("a").attr("href");
$(element).find("img").attr("src") || const image = $(element).find("img").attr("data-src") ||
""; $(element).find("img").attr("src") ||
if (title && link) { "";
catalog.push({ if (title && link) {
title: title.replace("Download", "").trim(), catalog.push({
link: link, title: title.replace("Download", "").trim(),
image: image, link: link,
}); image: image,
} });
}); }
// console.log(catalog); });
return catalog; // console.log(catalog);
} return catalog;
catch (err) { }
console.error("mod error ", err); catch (err) {
return []; console.error("mod error ", err);
} return [];
}
});
} }

View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const headers = { const headers = {
@@ -17,192 +26,199 @@ const headers = {
"Upgrade-Insecure-Requests": "1", "Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",
}; };
const getStream = async function ({ link: url, type, providerContext, }) { const getStream = function (_a) {
const { axios, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ link: url, type, providerContext, }) {
try { var _b, _c;
const modGetEpisodeLinks = async function ({ url, providerContext, }) { const { axios, cheerio } = providerContext;
const { axios, cheerio } = providerContext; try {
const modGetEpisodeLinks = function (_a) {
return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) {
var _b;
const { axios, cheerio } = providerContext;
try {
if (url.includes("url=")) {
url = atob(url.split("url=")[1]);
}
const res = yield axios.get(url);
const html = res.data;
let $ = cheerio.load(html);
if (url.includes("url=")) {
const newUrl = (_b = $("meta[http-equiv='refresh']")
.attr("content")) === null || _b === void 0 ? void 0 : _b.split("url=")[1];
const res2 = yield axios.get(newUrl || url);
const html2 = res2.data;
$ = cheerio.load(html2);
}
const episodeLinks = [];
$("h3,h4").map((i, element) => {
const seriesTitle = $(element).text();
const episodesLink = $(element).find("a").attr("href");
if (episodesLink && episodesLink !== "#") {
episodeLinks.push({
title: seriesTitle.trim() || "No title found",
link: episodesLink || "",
});
}
});
$("a.maxbutton").map((i, element) => {
const seriesTitle = $(element).children("span").text();
const episodesLink = $(element).attr("href");
if (episodesLink && episodesLink !== "#") {
episodeLinks.push({
title: seriesTitle.trim() || "No title found",
link: episodesLink || "",
});
}
});
return episodeLinks;
}
catch (err) {
console.error(err);
return [];
}
});
};
console.log("modGetStream", type, url);
if (type === "movie") {
const servers = yield modGetEpisodeLinks({ url, providerContext });
url = servers[0].link || url;
}
let downloadLink = yield modExtractor(url, providerContext);
// console.log(downloadLink.data);
const ddl = ((_c = (_b = downloadLink === null || downloadLink === void 0 ? void 0 : downloadLink.data) === null || _b === void 0 ? void 0 : _b.match(/content="0;url=(.*?)"/)) === null || _c === void 0 ? void 0 : _c[1]) || url;
// console.log('ddl', url);
// console.log(ddl);
// console.log(ddl);
const servers = [];
const driveLink = yield isDriveLink(ddl);
const driveRes = yield axios.get(driveLink, { headers });
const driveHtml = driveRes.data;
const $drive = cheerio.load(driveHtml);
try { try {
if (url.includes("url=")) { const resumeBot = $drive(".btn.btn-light").attr("href") || "";
url = atob(url.split("url=")[1]); const resumeBotRes = yield axios.get(resumeBot, { headers });
} const resumeBotToken = resumeBotRes.data.match(/formData\.append\('token', '([a-f0-9]+)'\)/)[1];
const res = await axios.get(url); const resumeBotBody = new FormData();
const html = res.data; resumeBotBody.append("token", resumeBotToken);
let $ = cheerio.load(html); const resumeBotPath = resumeBotRes.data.match(/fetch\('\/download\?id=([a-zA-Z0-9\/+]+)'/)[1];
if (url.includes("url=")) { const resumeBotBaseUrl = resumeBot.split("/download")[0];
const newUrl = $("meta[http-equiv='refresh']") // console.log(
.attr("content") // 'resumeBotPath',
?.split("url=")[1]; // resumeBotBaseUrl + '/download?id=' + resumeBotPath,
const res2 = await axios.get(newUrl || url); // );
const html2 = res2.data; // console.log('resumeBotBody', resumeBotToken);
$ = cheerio.load(html2); const resumeBotDownload = yield fetch(resumeBotBaseUrl + "/download?id=" + resumeBotPath, {
} method: "POST",
const episodeLinks = []; body: resumeBotBody,
$("h3,h4").map((i, element) => { headers: {
const seriesTitle = $(element).text(); Referer: resumeBot,
const episodesLink = $(element).find("a").attr("href"); Cookie: "PHPSESSID=7e9658ce7c805dab5bbcea9046f7f308",
if (episodesLink && episodesLink !== "#") { },
episodeLinks.push({
title: seriesTitle.trim() || "No title found",
link: episodesLink || "",
});
}
}); });
$("a.maxbutton").map((i, element) => { const resumeBotDownloadData = yield resumeBotDownload.json();
const seriesTitle = $(element).children("span").text(); console.log("resumeBotDownloadData", resumeBotDownloadData.url);
const episodesLink = $(element).attr("href");
if (episodesLink && episodesLink !== "#") {
episodeLinks.push({
title: seriesTitle.trim() || "No title found",
link: episodesLink || "",
});
}
});
return episodeLinks;
}
catch (err) {
console.error(err);
return [];
}
};
console.log("modGetStream", type, url);
if (type === "movie") {
const servers = await modGetEpisodeLinks({ url, providerContext });
url = servers[0].link || url;
}
let downloadLink = await modExtractor(url, providerContext);
// console.log(downloadLink.data);
const ddl = downloadLink?.data?.match(/content="0;url=(.*?)"/)?.[1] || url;
// console.log('ddl', url);
// console.log(ddl);
// console.log(ddl);
const servers = [];
const driveLink = await isDriveLink(ddl);
const driveRes = await axios.get(driveLink, { headers });
const driveHtml = driveRes.data;
const $drive = cheerio.load(driveHtml);
try {
const resumeBot = $drive(".btn.btn-light").attr("href") || "";
const resumeBotRes = await axios.get(resumeBot, { headers });
const resumeBotToken = resumeBotRes.data.match(/formData\.append\('token', '([a-f0-9]+)'\)/)[1];
const resumeBotBody = new FormData();
resumeBotBody.append("token", resumeBotToken);
const resumeBotPath = resumeBotRes.data.match(/fetch\('\/download\?id=([a-zA-Z0-9\/+]+)'/)[1];
const resumeBotBaseUrl = resumeBot.split("/download")[0];
// console.log(
// 'resumeBotPath',
// resumeBotBaseUrl + '/download?id=' + resumeBotPath,
// );
// console.log('resumeBotBody', resumeBotToken);
const resumeBotDownload = await fetch(resumeBotBaseUrl + "/download?id=" + resumeBotPath, {
method: "POST",
body: resumeBotBody,
headers: {
Referer: resumeBot,
Cookie: "PHPSESSID=7e9658ce7c805dab5bbcea9046f7f308",
},
});
const resumeBotDownloadData = await resumeBotDownload.json();
console.log("resumeBotDownloadData", resumeBotDownloadData.url);
servers.push({
server: "ResumeBot",
link: resumeBotDownloadData.url,
type: "mkv",
});
}
catch (err) {
console.log("ResumeBot link not found", err);
}
// CF workers type 1
try {
const cfWorkersLink = driveLink.replace("/file", "/wfile") + "?type=1";
const cfWorkersRes = await axios.get(cfWorkersLink, { headers });
const cfWorkersHtml = cfWorkersRes.data;
const $cfWorkers = cheerio.load(cfWorkersHtml);
const cfWorkersStream = $cfWorkers(".btn-success");
cfWorkersStream.each((i, el) => {
const link = el.attribs?.href;
if (link) {
servers.push({
server: "Cf Worker 1." + i,
link: link,
type: "mkv",
});
}
});
}
catch (err) {
console.log("CF workers link not found", err);
}
// CF workers type 2
try {
const cfWorkersLink = driveLink.replace("/file", "/wfile") + "?type=2";
const cfWorkersRes = await axios.get(cfWorkersLink, { headers });
const cfWorkersHtml = cfWorkersRes.data;
const $cfWorkers = cheerio.load(cfWorkersHtml);
const cfWorkersStream = $cfWorkers(".btn-success");
cfWorkersStream.each((i, el) => {
const link = el.attribs?.href;
if (link) {
servers.push({
server: "Cf Worker 2." + i,
link: link,
type: "mkv",
});
}
});
}
catch (err) {
console.log("CF workers link not found", err);
}
// gdrive
//instant link
try {
const seed = $drive(".btn-danger").attr("href") || "";
const instantToken = seed.split("=")[1];
// console.log('InstantToken', instantToken);
const InstantFromData = new FormData();
InstantFromData.append("keys", instantToken);
const videoSeedUrl = seed.split("/").slice(0, 3).join("/") + "/api";
// console.log('videoSeedUrl', videoSeedUrl);
const instantLinkRes = await fetch(videoSeedUrl, {
method: "POST",
body: InstantFromData,
headers: {
"x-token": videoSeedUrl,
},
});
const instantLinkData = await instantLinkRes.json();
// console.log('instantLinkData', instantLinkData);
if (instantLinkData.error === false) {
const instantLink = instantLinkData.url;
servers.push({ servers.push({
server: "Gdrive-Instant", server: "ResumeBot",
link: instantLink, link: resumeBotDownloadData.url,
type: "mkv", type: "mkv",
}); });
} }
else { catch (err) {
console.log("Instant link not found", instantLinkData); console.log("ResumeBot link not found", err);
} }
// CF workers type 1
try {
const cfWorkersLink = driveLink.replace("/file", "/wfile") + "?type=1";
const cfWorkersRes = yield axios.get(cfWorkersLink, { headers });
const cfWorkersHtml = cfWorkersRes.data;
const $cfWorkers = cheerio.load(cfWorkersHtml);
const cfWorkersStream = $cfWorkers(".btn-success");
cfWorkersStream.each((i, el) => {
var _a;
const link = (_a = el.attribs) === null || _a === void 0 ? void 0 : _a.href;
if (link) {
servers.push({
server: "Cf Worker 1." + i,
link: link,
type: "mkv",
});
}
});
}
catch (err) {
console.log("CF workers link not found", err);
}
// CF workers type 2
try {
const cfWorkersLink = driveLink.replace("/file", "/wfile") + "?type=2";
const cfWorkersRes = yield axios.get(cfWorkersLink, { headers });
const cfWorkersHtml = cfWorkersRes.data;
const $cfWorkers = cheerio.load(cfWorkersHtml);
const cfWorkersStream = $cfWorkers(".btn-success");
cfWorkersStream.each((i, el) => {
var _a;
const link = (_a = el.attribs) === null || _a === void 0 ? void 0 : _a.href;
if (link) {
servers.push({
server: "Cf Worker 2." + i,
link: link,
type: "mkv",
});
}
});
}
catch (err) {
console.log("CF workers link not found", err);
}
// gdrive
//instant link
try {
const seed = $drive(".btn-danger").attr("href") || "";
const instantToken = seed.split("=")[1];
// console.log('InstantToken', instantToken);
const InstantFromData = new FormData();
InstantFromData.append("keys", instantToken);
const videoSeedUrl = seed.split("/").slice(0, 3).join("/") + "/api";
// console.log('videoSeedUrl', videoSeedUrl);
const instantLinkRes = yield fetch(videoSeedUrl, {
method: "POST",
body: InstantFromData,
headers: {
"x-token": videoSeedUrl,
},
});
const instantLinkData = yield instantLinkRes.json();
// console.log('instantLinkData', instantLinkData);
if (instantLinkData.error === false) {
const instantLink = instantLinkData.url;
servers.push({
server: "Gdrive-Instant",
link: instantLink,
type: "mkv",
});
}
else {
console.log("Instant link not found", instantLinkData);
}
}
catch (err) {
console.log("Instant link not found", err);
}
return servers;
} }
catch (err) { catch (err) {
console.log("Instant link not found", err); console.log("getStream error", err);
return [];
} }
return servers; });
}
catch (err) {
console.log("getStream error", err);
return [];
}
}; };
exports.getStream = getStream; exports.getStream = getStream;
const isDriveLink = async (ddl) => { const isDriveLink = (ddl) => __awaiter(void 0, void 0, void 0, function* () {
if (ddl.includes("drive")) { if (ddl.includes("drive")) {
const driveLeach = await fetch(ddl); const driveLeach = yield fetch(ddl);
const driveLeachData = await driveLeach.text(); const driveLeachData = yield driveLeach.text();
const pathMatch = driveLeachData.match(/window\.location\.replace\("([^"]+)"\)/); const pathMatch = driveLeachData.match(/window\.location\.replace\("([^"]+)"\)/);
const path = pathMatch?.[1]; const path = pathMatch === null || pathMatch === void 0 ? void 0 : pathMatch[1];
const mainUrl = ddl.split("/")[2]; const mainUrl = ddl.split("/")[2];
console.log(`driveUrl = https://${mainUrl}${path}`); console.log(`driveUrl = https://${mainUrl}${path}`);
return `https://${mainUrl}${path}`; return `https://${mainUrl}${path}`;
@@ -210,47 +226,49 @@ const isDriveLink = async (ddl) => {
else { else {
return ddl; return ddl;
} }
}; });
async function modExtractor(url, providerContext) { function modExtractor(url, providerContext) {
const { axios, cheerio } = providerContext; return __awaiter(this, void 0, void 0, function* () {
try { const { axios, cheerio } = providerContext;
const wpHttp = url.split("sid=")[1]; try {
var bodyFormData0 = new FormData(); const wpHttp = url.split("sid=")[1];
bodyFormData0.append("_wp_http", wpHttp); var bodyFormData0 = new FormData();
const res = await fetch(url.split("?")[0], { bodyFormData0.append("_wp_http", wpHttp);
method: "POST", const res = yield fetch(url.split("?")[0], {
body: bodyFormData0, method: "POST",
}); body: bodyFormData0,
const data = await res.text(); });
// console.log('', data); const data = yield res.text();
const html = data; // console.log('', data);
const $ = cheerio.load(html); const html = data;
// find input with name="_wp_http2" const $ = cheerio.load(html);
const wpHttp2 = $("input").attr("name", "_wp_http2").val(); // find input with name="_wp_http2"
// console.log('wpHttp2', wpHttp2); const wpHttp2 = $("input").attr("name", "_wp_http2").val();
// form data // console.log('wpHttp2', wpHttp2);
var bodyFormData = new FormData(); // form data
bodyFormData.append("_wp_http2", wpHttp2); var bodyFormData = new FormData();
const formUrl1 = $("form").attr("action"); bodyFormData.append("_wp_http2", wpHttp2);
const formUrl = formUrl1 || url.split("?")[0]; const formUrl1 = $("form").attr("action");
const res2 = await fetch(formUrl, { const formUrl = formUrl1 || url.split("?")[0];
method: "POST", const res2 = yield fetch(formUrl, {
body: bodyFormData, method: "POST",
}); body: bodyFormData,
const html2 = await res2.text(); });
const link = html2.match(/setAttribute\("href",\s*"(.*?)"/)[1]; const html2 = yield res2.text();
console.log(link); const link = html2.match(/setAttribute\("href",\s*"(.*?)"/)[1];
const cookie = link.split("=")[1]; console.log(link);
console.log("cookie", cookie); const cookie = link.split("=")[1];
const downloadLink = await axios.get(link, { console.log("cookie", cookie);
headers: { const downloadLink = yield axios.get(link, {
Referer: formUrl, headers: {
Cookie: `${cookie}=${wpHttp2}`, Referer: formUrl,
}, Cookie: `${cookie}=${wpHttp2}`,
}); },
return downloadLink; });
} return downloadLink;
catch (err) { }
console.log("modGetStream error", err); catch (err) {
} console.log("modGetStream error", err);
}
});
} }

164
dist/uhd/meta.js vendored
View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const headers = { const headers = {
@@ -16,93 +25,96 @@ const headers = {
"Upgrade-Insecure-Requests": "1", "Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",
}; };
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { axios, cheerio } = providerContext; var _b;
const url = link; try {
const res = await axios.get(url, { headers }); const { axios, cheerio } = providerContext;
const html = await res.data; const url = link;
const $ = cheerio.load(html); const res = yield axios.get(url, { headers });
const title = $("h2:first").text() || ""; const html = yield res.data;
const image = $("h2").siblings().find("img").attr("src") || ""; const $ = cheerio.load(html);
// const trailer = $('iframe').attr('src') || ''; const title = $("h2:first").text() || "";
// console.log({ title, image, trailer }); const image = $("h2").siblings().find("img").attr("src") || "";
// Links // const trailer = $('iframe').attr('src') || '';
const episodes = []; // console.log({ title, image, trailer });
// new structure // Links
$(".mks_separator").each((index, element) => { const episodes = [];
$(element) // new structure
.nextUntil(".mks_separator") $(".mks_separator").each((index, element) => {
.each((index, element) => {
const title = $(element).text();
const episodesList = [];
$(element) $(element)
.next("p") .nextUntil(".mks_separator")
.find("a")
.each((index, element) => { .each((index, element) => {
const title = $(element).text(); const title = $(element).text();
const link = $(element).attr("href"); const episodesList = [];
if (title && link && !title.toLocaleLowerCase().includes("zip")) { $(element)
episodesList.push({ title, link }); .next("p")
// console.log({ title, link }); .find("a")
.each((index, element) => {
const title = $(element).text();
const link = $(element).attr("href");
if (title && link && !title.toLocaleLowerCase().includes("zip")) {
episodesList.push({ title, link });
// console.log({ title, link });
}
});
if (title && episodesList.length > 0) {
episodes.push({
title,
directLinks: episodesList,
});
} }
}); });
if (title && episodesList.length > 0) {
episodes.push({
title,
directLinks: episodesList,
});
}
}); });
}); // old structure
// old structure $("hr").each((index, element) => {
$("hr").each((index, element) => {
$(element)
.nextUntil("hr")
.each((index, element) => {
const title = $(element).text();
const episodesList = [];
$(element) $(element)
.next("p") .nextUntil("hr")
.find("a")
.each((index, element) => { .each((index, element) => {
const title = $(element).text(); const title = $(element).text();
const link = $(element).attr("href"); const episodesList = [];
if (title && link && !title.toLocaleLowerCase().includes("zip")) { $(element)
episodesList.push({ title, link }); .next("p")
// console.log({ title, link }); .find("a")
.each((index, element) => {
const title = $(element).text();
const link = $(element).attr("href");
if (title && link && !title.toLocaleLowerCase().includes("zip")) {
episodesList.push({ title, link });
// console.log({ title, link });
}
});
if (title && episodesList.length > 0) {
episodes.push({
title,
directLinks: episodesList,
});
} }
}); });
if (title && episodesList.length > 0) {
episodes.push({
title,
directLinks: episodesList,
});
}
}); });
}); // console.log(episodes);
// console.log(episodes); return {
return { title: title.match(/^Download\s+([^(\[]+)/i)
title: title.match(/^Download\s+([^(\[]+)/i) ? ((_b = title === null || title === void 0 ? void 0 : title.match(/^Download\s+([^(\[]+)/i)) === null || _b === void 0 ? void 0 : _b[1]) || ""
? title?.match(/^Download\s+([^(\[]+)/i)?.[1] || "" : title.replace("Download", "") || "",
: title.replace("Download", "") || "", image,
image, imdbId: "",
imdbId: "", synopsis: title,
synopsis: title, type: "",
type: "", linkList: episodes,
linkList: episodes, };
}; }
} catch (error) {
catch (error) { console.error(error);
console.error(error); return {
return { title: "",
title: "", image: "",
image: "", imdbId: "",
imdbId: "", synopsis: "",
synopsis: "", linkList: [],
linkList: [], type: "uhd",
type: "uhd", };
}; }
} });
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

81
dist/uhd/posts.js vendored
View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const headers = { const headers = {
@@ -16,50 +25,52 @@ const headers = {
"Upgrade-Insecure-Requests": "1", "Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",
}; };
const getPosts = async ({ filter, page, const getPosts = (_a) => __awaiter(void 0, [_a], void 0, function* ({ filter, page,
// providerValue, // providerValue,
signal, providerContext, }) => { signal, providerContext, }) {
const { getBaseUrl } = providerContext; const { getBaseUrl } = providerContext;
const baseUrl = await getBaseUrl("UhdMovies"); const baseUrl = yield getBaseUrl("UhdMovies");
const url = page === 1 ? `${baseUrl}/${filter}/` : `${baseUrl + filter}/page/${page}/`; const url = page === 1 ? `${baseUrl}/${filter}/` : `${baseUrl + filter}/page/${page}/`;
console.log("url", url); console.log("url", url);
return posts(baseUrl, url, signal, providerContext); return posts(baseUrl, url, signal, providerContext);
}; });
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async ({ searchQuery, page, const getSearchPosts = (_a) => __awaiter(void 0, [_a], void 0, function* ({ searchQuery, page,
// providerValue, // providerValue,
signal, providerContext, }) => { signal, providerContext, }) {
const { getBaseUrl } = providerContext; const { getBaseUrl } = providerContext;
const baseUrl = await getBaseUrl("UhdMovies"); const baseUrl = yield getBaseUrl("UhdMovies");
const url = `${baseUrl}/search/${searchQuery}/page/${page}/`; const url = `${baseUrl}/search/${searchQuery}/page/${page}/`;
return posts(baseUrl, url, signal, providerContext); return posts(baseUrl, url, signal, providerContext);
}; });
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts(baseURL, url, signal, providerContext) { function posts(baseURL, url, signal, providerContext) {
try { return __awaiter(this, void 0, void 0, function* () {
const { axios, cheerio } = providerContext; try {
const res = await axios.get(url, { headers, signal }); const { axios, cheerio } = providerContext;
const html = res.data; const res = yield axios.get(url, { headers, signal });
const $ = cheerio.load(html); const html = res.data;
const uhdCatalog = []; const $ = cheerio.load(html);
$(".gridlove-posts") const uhdCatalog = [];
.find(".layout-masonry") $(".gridlove-posts")
.each((index, element) => { .find(".layout-masonry")
const title = $(element).find("a").attr("title"); .each((index, element) => {
const link = $(element).find("a").attr("href"); const title = $(element).find("a").attr("title");
const image = $(element).find("a").find("img").attr("src"); const link = $(element).find("a").attr("href");
if (title && link && image) { const image = $(element).find("a").find("img").attr("src");
uhdCatalog.push({ if (title && link && image) {
title: title.replace("Download", "").trim(), uhdCatalog.push({
link: link, title: title.replace("Download", "").trim(),
image: image, link: link,
}); image: image,
} });
}); }
return uhdCatalog; });
} return uhdCatalog;
catch (err) { }
console.error("uhd error ", err); catch (err) {
return []; console.error("uhd error ", err);
} return [];
}
});
} }

134
dist/uhd/stream.js vendored
View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const headers = { const headers = {
@@ -16,17 +25,18 @@ const headers = {
"Upgrade-Insecure-Requests": "1", "Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",
}; };
const getStream = async ({ link: url, providerContext, }) => { const getStream = (_a) => __awaiter(void 0, [_a], void 0, function* ({ link: url, providerContext, }) {
var _b, _c;
try { try {
const { axios, cheerio } = providerContext; const { axios, cheerio } = providerContext;
let downloadLink = await modExtractor(url, providerContext); let downloadLink = yield modExtractor(url, providerContext);
// console.log(downloadLink.data); // console.log(downloadLink.data);
const ddl = downloadLink?.data?.match(/content="0;url=(.*?)"/)?.[1] || url; const ddl = ((_c = (_b = downloadLink === null || downloadLink === void 0 ? void 0 : downloadLink.data) === null || _b === void 0 ? void 0 : _b.match(/content="0;url=(.*?)"/)) === null || _c === void 0 ? void 0 : _c[1]) || url;
console.log("ddl", ddl); console.log("ddl", ddl);
// console.log(ddl); // console.log(ddl);
const driveLink = await isDriveLink(ddl); const driveLink = yield isDriveLink(ddl);
const ServerLinks = []; const ServerLinks = [];
const driveRes = await axios.get(driveLink, { headers }); const driveRes = yield axios.get(driveLink, { headers });
const driveHtml = driveRes.data; const driveHtml = driveRes.data;
const $drive = cheerio.load(driveHtml); const $drive = cheerio.load(driveHtml);
//instant link //instant link
@@ -38,14 +48,14 @@ const getStream = async ({ link: url, providerContext, }) => {
InstantFromData.append("keys", instantToken); InstantFromData.append("keys", instantToken);
const videoSeedUrl = seed.split("/").slice(0, 3).join("/") + "/api"; const videoSeedUrl = seed.split("/").slice(0, 3).join("/") + "/api";
// console.log('videoSeedUrl', videoSeedUrl); // console.log('videoSeedUrl', videoSeedUrl);
const instantLinkRes = await fetch(videoSeedUrl, { const instantLinkRes = yield fetch(videoSeedUrl, {
method: "POST", method: "POST",
body: InstantFromData, body: InstantFromData,
headers: { headers: {
"x-token": videoSeedUrl, "x-token": videoSeedUrl,
}, },
}); });
const instantLinkData = await instantLinkRes.json(); const instantLinkData = yield instantLinkRes.json();
// console.log('instantLinkData', instantLinkData); // console.log('instantLinkData', instantLinkData);
if (instantLinkData.error === false) { if (instantLinkData.error === false) {
const instantLink = instantLinkData.url; const instantLink = instantLinkData.url;
@@ -66,7 +76,7 @@ const getStream = async ({ link: url, providerContext, }) => {
try { try {
const resumeDrive = driveLink.replace("/file", "/zfile"); const resumeDrive = driveLink.replace("/file", "/zfile");
// console.log('resumeDrive', resumeDrive); // console.log('resumeDrive', resumeDrive);
const resumeDriveRes = await axios.get(resumeDrive, { headers }); const resumeDriveRes = yield axios.get(resumeDrive, { headers });
const resumeDriveHtml = resumeDriveRes.data; const resumeDriveHtml = resumeDriveRes.data;
const $resumeDrive = cheerio.load(resumeDriveHtml); const $resumeDrive = cheerio.load(resumeDriveHtml);
const resumeLink = $resumeDrive(".btn-success").attr("href"); const resumeLink = $resumeDrive(".btn-success").attr("href");
@@ -85,12 +95,13 @@ const getStream = async ({ link: url, providerContext, }) => {
// CF workers type 1 // CF workers type 1
try { try {
const cfWorkersLink = driveLink.replace("/file", "/wfile") + "?type=1"; const cfWorkersLink = driveLink.replace("/file", "/wfile") + "?type=1";
const cfWorkersRes = await axios.get(cfWorkersLink, { headers }); const cfWorkersRes = yield axios.get(cfWorkersLink, { headers });
const cfWorkersHtml = cfWorkersRes.data; const cfWorkersHtml = cfWorkersRes.data;
const $cfWorkers = cheerio.load(cfWorkersHtml); const $cfWorkers = cheerio.load(cfWorkersHtml);
const cfWorkersStream = $cfWorkers(".btn-success"); const cfWorkersStream = $cfWorkers(".btn-success");
cfWorkersStream.each((i, el) => { cfWorkersStream.each((i, el) => {
const link = el.attribs?.href; var _a;
const link = (_a = el.attribs) === null || _a === void 0 ? void 0 : _a.href;
if (link) { if (link) {
ServerLinks.push({ ServerLinks.push({
server: "Cf Worker 1." + i, server: "Cf Worker 1." + i,
@@ -106,12 +117,13 @@ const getStream = async ({ link: url, providerContext, }) => {
// CF workers type 2 // CF workers type 2
try { try {
const cfWorkersLink = driveLink.replace("/file", "/wfile") + "?type=2"; const cfWorkersLink = driveLink.replace("/file", "/wfile") + "?type=2";
const cfWorkersRes = await axios.get(cfWorkersLink, { headers }); const cfWorkersRes = yield axios.get(cfWorkersLink, { headers });
const cfWorkersHtml = cfWorkersRes.data; const cfWorkersHtml = cfWorkersRes.data;
const $cfWorkers = cheerio.load(cfWorkersHtml); const $cfWorkers = cheerio.load(cfWorkersHtml);
const cfWorkersStream = $cfWorkers(".btn-success"); const cfWorkersStream = $cfWorkers(".btn-success");
cfWorkersStream.each((i, el) => { cfWorkersStream.each((i, el) => {
const link = el.attribs?.href; var _a;
const link = (_a = el.attribs) === null || _a === void 0 ? void 0 : _a.href;
if (link) { if (link) {
ServerLinks.push({ ServerLinks.push({
server: "Cf Worker 2." + i, server: "Cf Worker 2." + i,
@@ -131,14 +143,14 @@ const getStream = async ({ link: url, providerContext, }) => {
console.log("getStream error", err); console.log("getStream error", err);
return []; return [];
} }
}; });
exports.getStream = getStream; exports.getStream = getStream;
const isDriveLink = async (ddl) => { const isDriveLink = (ddl) => __awaiter(void 0, void 0, void 0, function* () {
if (ddl.includes("drive")) { if (ddl.includes("drive")) {
const driveLeach = await fetch(ddl); const driveLeach = yield fetch(ddl);
const driveLeachData = await driveLeach.text(); const driveLeachData = yield driveLeach.text();
const pathMatch = driveLeachData.match(/window\.location\.replace\("([^"]+)"\)/); const pathMatch = driveLeachData.match(/window\.location\.replace\("([^"]+)"\)/);
const path = pathMatch?.[1]; const path = pathMatch === null || pathMatch === void 0 ? void 0 : pathMatch[1];
const mainUrl = ddl.split("/")[2]; const mainUrl = ddl.split("/")[2];
console.log(`driveUrl = https://${mainUrl}${path}`); console.log(`driveUrl = https://${mainUrl}${path}`);
return `https://${mainUrl}${path}`; return `https://${mainUrl}${path}`;
@@ -146,47 +158,49 @@ const isDriveLink = async (ddl) => {
else { else {
return ddl; return ddl;
} }
}; });
async function modExtractor(url, providerContext) { function modExtractor(url, providerContext) {
const { axios, cheerio } = providerContext; return __awaiter(this, void 0, void 0, function* () {
try { const { axios, cheerio } = providerContext;
const wpHttp = url.split("sid=")[1]; try {
var bodyFormData0 = new FormData(); const wpHttp = url.split("sid=")[1];
bodyFormData0.append("_wp_http", wpHttp); var bodyFormData0 = new FormData();
const res = await fetch(url.split("?")[0], { bodyFormData0.append("_wp_http", wpHttp);
method: "POST", const res = yield fetch(url.split("?")[0], {
body: bodyFormData0, method: "POST",
}); body: bodyFormData0,
const data = await res.text(); });
// console.log('', data); const data = yield res.text();
const html = data; // console.log('', data);
const $ = cheerio.load(html); const html = data;
// find input with name="_wp_http2" const $ = cheerio.load(html);
const wpHttp2 = $("input").attr("name", "_wp_http2").val(); // find input with name="_wp_http2"
// console.log('wpHttp2', wpHttp2); const wpHttp2 = $("input").attr("name", "_wp_http2").val();
// form data // console.log('wpHttp2', wpHttp2);
var bodyFormData = new FormData(); // form data
bodyFormData.append("_wp_http2", wpHttp2); var bodyFormData = new FormData();
const formUrl1 = $("form").attr("action"); bodyFormData.append("_wp_http2", wpHttp2);
const formUrl = formUrl1 || url.split("?")[0]; const formUrl1 = $("form").attr("action");
const res2 = await fetch(formUrl, { const formUrl = formUrl1 || url.split("?")[0];
method: "POST", const res2 = yield fetch(formUrl, {
body: bodyFormData, method: "POST",
}); body: bodyFormData,
const html2 = await res2.text(); });
const link = html2.match(/setAttribute\("href",\s*"(.*?)"/)[1]; const html2 = yield res2.text();
console.log(link); const link = html2.match(/setAttribute\("href",\s*"(.*?)"/)[1];
const cookie = link.split("=")[1]; console.log(link);
console.log("cookie", cookie); const cookie = link.split("=")[1];
const downloadLink = await axios.get(link, { console.log("cookie", cookie);
headers: { const downloadLink = yield axios.get(link, {
Referer: formUrl, headers: {
Cookie: `${cookie}=${wpHttp2}`, Referer: formUrl,
}, Cookie: `${cookie}=${wpHttp2}`,
}); },
return downloadLink; });
} return downloadLink;
catch (err) { }
console.log("modGetStream error", err); catch (err) {
} console.log("modGetStream error", err);
}
});
} }

View File

@@ -1,30 +1,42 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getEpisodes = void 0; exports.getEpisodes = void 0;
const getEpisodes = async function ({ url, providerContext, }) { const getEpisodes = function (_a) {
const { axios, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) {
try { const { axios, cheerio } = providerContext;
const baseUrl = url?.split("/").slice(0, 3).join("/"); try {
const res = await axios.get(url); const baseUrl = url === null || url === void 0 ? void 0 : url.split("/").slice(0, 3).join("/");
const html = res.data; const res = yield axios.get(url);
let $ = cheerio.load(html); const html = res.data;
const episodeLinks = []; let $ = cheerio.load(html);
$('.file-entry:not(:contains("Parent Directory"))').map((i, element) => { const episodeLinks = [];
const link = $(element).attr("href"); $('.file-entry:not(:contains("Parent Directory"))').map((i, element) => {
if (link && var _a, _b, _c, _d, _e, _f;
($(element).text()?.includes(".mp4") || const link = $(element).attr("href");
$(element).text()?.includes(".mkv"))) { if (link &&
episodeLinks.push({ (((_a = $(element).text()) === null || _a === void 0 ? void 0 : _a.includes(".mp4")) ||
title: $(element).text()?.match(/E\d+/)?.[0]?.replace("E", "Episode ") || ((_b = $(element).text()) === null || _b === void 0 ? void 0 : _b.includes(".mkv")))) {
i + 1 + ". " + $(element).text()?.replace(".mkv", ""), episodeLinks.push({
link: baseUrl + link, title: ((_e = (_d = (_c = $(element).text()) === null || _c === void 0 ? void 0 : _c.match(/E\d+/)) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.replace("E", "Episode ")) ||
}); i + 1 + ". " + ((_f = $(element).text()) === null || _f === void 0 ? void 0 : _f.replace(".mkv", "")),
} link: baseUrl + link,
}); });
return episodeLinks; }
} });
catch (err) { return episodeLinks;
return []; }
} catch (err) {
return [];
}
});
}; };
exports.getEpisodes = getEpisodes; exports.getEpisodes = getEpisodes;

132
dist/vadapav/meta.js vendored
View File

@@ -1,68 +1,78 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { axios, cheerio } = providerContext; var _b, _c;
const baseUrl = link?.split("/").slice(0, 3).join("/"); try {
const url = link; const { axios, cheerio } = providerContext;
const res = await axios.get(url); const baseUrl = link === null || link === void 0 ? void 0 : link.split("/").slice(0, 3).join("/");
const data = res.data; const url = link;
const $ = cheerio.load(data); const res = yield axios.get(url);
const title = $(".directory") const data = res.data;
.children() const $ = cheerio.load(data);
.first() const title = ((_c = (_b = $(".directory")
.text() .children()
.trim() .first()
?.split("/") .text()
.pop() .trim()) === null || _b === void 0 ? void 0 : _b.split("/").pop()) === null || _c === void 0 ? void 0 : _c.trim()) || "";
?.trim() || ""; const links = [];
const links = []; $('.directory-entry:not(:contains("Parent Directory"))').map((i, element) => {
$('.directory-entry:not(:contains("Parent Directory"))').map((i, element) => { const link = $(element).attr("href");
const link = $(element).attr("href"); if (link) {
if (link) { links.push({
links.push({ episodesLink: baseUrl + link,
episodesLink: baseUrl + link, title: $(element).text(),
title: $(element).text(), });
}); }
}
});
const directLinks = [];
$('.file-entry:not(:contains("Parent Directory"))').map((i, element) => {
const link = $(element).attr("href");
if (link &&
($(element).text()?.includes(".mp4") ||
$(element).text()?.includes(".mkv"))) {
directLinks.push({
title: i + 1 + ". " + $(element).text(),
link: baseUrl + link,
});
}
});
if (directLinks.length > 0) {
links.push({
title: title + " DL",
directLinks: directLinks,
}); });
const directLinks = [];
$('.file-entry:not(:contains("Parent Directory"))').map((i, element) => {
var _a, _b;
const link = $(element).attr("href");
if (link &&
(((_a = $(element).text()) === null || _a === void 0 ? void 0 : _a.includes(".mp4")) ||
((_b = $(element).text()) === null || _b === void 0 ? void 0 : _b.includes(".mkv")))) {
directLinks.push({
title: i + 1 + ". " + $(element).text(),
link: baseUrl + link,
});
}
});
if (directLinks.length > 0) {
links.push({
title: title + " DL",
directLinks: directLinks,
});
}
return {
title: title,
synopsis: "",
image: "",
imdbId: "",
type: "movie",
linkList: links,
};
} }
return { catch (err) {
title: title, return {
synopsis: "", title: "",
image: "", synopsis: "",
imdbId: "", image: "",
type: "movie", imdbId: "",
linkList: links, type: "movie",
}; linkList: [],
} };
catch (err) { }
return { });
title: "",
synopsis: "",
image: "",
imdbId: "",
type: "movie",
linkList: [],
};
}
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

112
dist/vadapav/posts.js vendored
View File

@@ -1,56 +1,72 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, page, const getPosts = function (_a) {
// providerValue, return __awaiter(this, arguments, void 0, function* ({ filter, page,
signal, providerContext, }) { // providerValue,
const { getBaseUrl, axios, cheerio } = providerContext; signal, providerContext, }) {
const baseUrl = await getBaseUrl("vadapav"); const { getBaseUrl, axios, cheerio } = providerContext;
if (page > 1) { const baseUrl = yield getBaseUrl("vadapav");
return []; if (page > 1) {
} return [];
const url = `${baseUrl + filter}`; }
return posts({ baseUrl, url, signal, axios, cheerio }); const url = `${baseUrl + filter}`;
return posts({ baseUrl, url, signal, axios, cheerio });
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, const getSearchPosts = function (_a) {
// providerValue, return __awaiter(this, arguments, void 0, function* ({ searchQuery, page,
signal, providerContext, }) { // providerValue,
const { getBaseUrl, axios, cheerio } = providerContext; signal, providerContext, }) {
const baseUrl = await getBaseUrl("vadapav"); const { getBaseUrl, axios, cheerio } = providerContext;
if (page > 1) { const baseUrl = yield getBaseUrl("vadapav");
return []; if (page > 1) {
} return [];
const url = `${baseUrl}/s/${searchQuery}`; }
return posts({ baseUrl, url, signal, axios, cheerio }); const url = `${baseUrl}/s/${searchQuery}`;
return posts({ baseUrl, url, signal, axios, cheerio });
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts({ function posts(_a) {
// baseUrl, return __awaiter(this, arguments, void 0, function* ({
url, signal, axios, cheerio, }) { // baseUrl,
try { url, signal, axios, cheerio, }) {
const res = await axios.get(url, { signal }); try {
const data = res.data; const res = yield axios.get(url, { signal });
const $ = cheerio.load(data); const data = res.data;
const catalog = []; const $ = cheerio.load(data);
$('.directory-entry:not(:contains("Parent Directory"))').map((i, element) => { const catalog = [];
const title = $(element).text(); $('.directory-entry:not(:contains("Parent Directory"))').map((i, element) => {
const link = $(element).attr("href"); var _a;
const imageTitle = title?.length > 30 const title = $(element).text();
? title?.slice(0, 30)?.replace(/\./g, " ") const link = $(element).attr("href");
: title?.replace(/\./g, " "); const imageTitle = (title === null || title === void 0 ? void 0 : title.length) > 30
const image = `https://placehold.jp/23/000000/ffffff/200x400.png?text=${encodeURIComponent(imageTitle)}&css=%7B%22background%22%3A%22%20-webkit-gradient(linear%2C%20left%20bottom%2C%20left%20top%2C%20from(%233f3b3b)%2C%20to(%23000000))%22%2C%22text-transform%22%3A%22%20capitalize%22%7D`; ? (_a = title === null || title === void 0 ? void 0 : title.slice(0, 30)) === null || _a === void 0 ? void 0 : _a.replace(/\./g, " ")
if (title && link) { : title === null || title === void 0 ? void 0 : title.replace(/\./g, " ");
catalog.push({ const image = `https://placehold.jp/23/000000/ffffff/200x400.png?text=${encodeURIComponent(imageTitle)}&css=%7B%22background%22%3A%22%20-webkit-gradient(linear%2C%20left%20bottom%2C%20left%20top%2C%20from(%233f3b3b)%2C%20to(%23000000))%22%2C%22text-transform%22%3A%22%20capitalize%22%7D`;
title: title, if (title && link) {
link: link, catalog.push({
image: image, title: title,
}); link: link,
} image: image,
}); });
return catalog; }
} });
catch (err) { return catalog;
return []; }
} catch (err) {
return [];
}
});
} }

View File

@@ -1,19 +1,30 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const getStream = async function ({ link: url, // type, // providerContext, const getStream = function (_a) {
}) { return __awaiter(this, arguments, void 0, function* ({ link: url, // type, // providerContext,
try { }) {
const stream = []; try {
stream.push({ const stream = [];
server: "vadapav", stream.push({
link: url, server: "vadapav",
type: url?.split(".").pop() || "mkv", link: url,
}); type: (url === null || url === void 0 ? void 0 : url.split(".").pop()) || "mkv",
return stream; });
} return stream;
catch (err) { }
return []; catch (err) {
} return [];
}
});
}; };
exports.getStream = getStream; exports.getStream = getStream;

69
dist/vega/episodes.js vendored
View File

@@ -1,34 +1,45 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getEpisodes = void 0; exports.getEpisodes = void 0;
const getEpisodes = async function ({ url, providerContext, }) { const getEpisodes = function (_a) {
const { axios, cheerio, commonHeaders: headers } = providerContext; return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) {
console.log("getEpisodeLinks", url); const { axios, cheerio, commonHeaders: headers } = providerContext;
try { console.log("getEpisodeLinks", url);
const res = await axios.get(url, { headers }); try {
const $ = cheerio.load(res.data); const res = yield axios.get(url, { headers });
const container = $(".entry-content,.entry-inner"); const $ = cheerio.load(res.data);
$(".unili-content,.code-block-1").remove(); const container = $(".entry-content,.entry-inner");
const episodes = []; $(".unili-content,.code-block-1").remove();
container.find("h4").each((index, element) => { const episodes = [];
const el = $(element); container.find("h4").each((index, element) => {
const title = el.text().replaceAll("-", "").replaceAll(":", ""); const el = $(element);
const link = el const title = el.text().replaceAll("-", "").replaceAll(":", "");
.next("p") const link = el
.find('.btn-outline[style="background:linear-gradient(135deg,#ed0b0b,#f2d152); color: white;"]') .next("p")
.parent() .find('.btn-outline[style="background:linear-gradient(135deg,#ed0b0b,#f2d152); color: white;"]')
.attr("href"); .parent()
if (title && link) { .attr("href");
episodes.push({ title, link }); if (title && link) {
} episodes.push({ title, link });
}); }
// console.log(episodes); });
return episodes; // console.log(episodes);
} return episodes;
catch (err) { }
console.log("getEpisodeLinks error: "); catch (err) {
// console.error(err); console.log("getEpisodeLinks error: ");
return []; // console.error(err);
} return [];
}
});
}; };
exports.getEpisodes = getEpisodes; exports.getEpisodes = getEpisodes;

74
dist/vega/meta.js vendored
View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const headers = { const headers = {
@@ -17,88 +26,69 @@ const headers = {
"Upgrade-Insecure-Requests": "1", "Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0",
}; };
const getMeta = async ({ link, providerContext, }) => { const getMeta = (_a) => __awaiter(void 0, [_a], void 0, function* ({ link, providerContext, }) {
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
try { try {
const { axios, cheerio } = providerContext; const { axios, cheerio } = providerContext;
const url = link; const url = link;
console.log("url", url); console.log("url", url);
const baseUrl = url.split("/").slice(0, 3).join("/"); const baseUrl = url.split("/").slice(0, 3).join("/");
const response = await axios.get(url, { const response = yield axios.get(url, {
headers: { headers: Object.assign(Object.assign({}, headers), { Referer: baseUrl }),
...headers,
Referer: baseUrl,
},
}); });
const $ = cheerio.load(response.data); const $ = cheerio.load(response.data);
const infoContainer = $(".entry-content,.post-inner"); const infoContainer = $(".entry-content,.post-inner");
const heading = infoContainer?.find("h3"); const heading = infoContainer === null || infoContainer === void 0 ? void 0 : infoContainer.find("h3");
const imdbId = const imdbId =
//@ts-ignore //@ts-ignore
heading?.next("p")?.find("a")?.[0]?.attribs?.href?.match(/tt\d+/g)?.[0] || ((_g = (_f = (_e = (_d = (_c = (_b = heading === null || heading === void 0 ? void 0 : heading.next("p")) === null || _b === void 0 ? void 0 : _b.find("a")) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.attribs) === null || _e === void 0 ? void 0 : _e.href) === null || _f === void 0 ? void 0 : _f.match(/tt\d+/g)) === null || _g === void 0 ? void 0 : _g[0]) ||
infoContainer.text().match(/tt\d+/g)?.[0] || ((_h = infoContainer.text().match(/tt\d+/g)) === null || _h === void 0 ? void 0 : _h[0]) ||
""; "";
// console.log(imdbId) // console.log(imdbId)
const type = heading?.next("p")?.text()?.includes("Series Name") const type = ((_k = (_j = heading === null || heading === void 0 ? void 0 : heading.next("p")) === null || _j === void 0 ? void 0 : _j.text()) === null || _k === void 0 ? void 0 : _k.includes("Series Name"))
? "series" ? "series"
: "movie"; : "movie";
// console.log(type); // console.log(type);
// title // title
const titleRegex = /Name: (.+)/; const titleRegex = /Name: (.+)/;
const title = heading?.next("p")?.text()?.match(titleRegex)?.[1] || ""; const title = ((_o = (_m = (_l = heading === null || heading === void 0 ? void 0 : heading.next("p")) === null || _l === void 0 ? void 0 : _l.text()) === null || _m === void 0 ? void 0 : _m.match(titleRegex)) === null || _o === void 0 ? void 0 : _o[1]) || "";
// console.log(title); // console.log(title);
// synopsis // synopsis
const synopsisNode = //@ts-ignore const synopsisNode = //@ts-ignore
infoContainer?.find("p")?.next("h3,h4")?.next("p")?.[0]?.children?.[0]; (_t = (_s = (_r = (_q = (_p = infoContainer === null || infoContainer === void 0 ? void 0 : infoContainer.find("p")) === null || _p === void 0 ? void 0 : _p.next("h3,h4")) === null || _q === void 0 ? void 0 : _q.next("p")) === null || _r === void 0 ? void 0 : _r[0]) === null || _s === void 0 ? void 0 : _s.children) === null || _t === void 0 ? void 0 : _t[0];
const synopsis = synopsisNode && "data" in synopsisNode ? synopsisNode.data : ""; const synopsis = synopsisNode && "data" in synopsisNode ? synopsisNode.data : "";
// console.log(synopsis); // console.log(synopsis);
// image // image
let image = infoContainer?.find("img[data-lazy-src]")?.attr("data-lazy-src") || ""; let image = ((_u = infoContainer === null || infoContainer === void 0 ? void 0 : infoContainer.find("img[data-lazy-src]")) === null || _u === void 0 ? void 0 : _u.attr("data-lazy-src")) || "";
if (image.startsWith("//")) { if (image.startsWith("//")) {
image = "https:" + image; image = "https:" + image;
} }
// console.log(image); // console.log(image);
// console.log({title, synopsis, image, imdbId, type}); // console.log({title, synopsis, image, imdbId, type});
/// Links /// Links
const hr = infoContainer?.first()?.find("hr"); const hr = (_v = infoContainer === null || infoContainer === void 0 ? void 0 : infoContainer.first()) === null || _v === void 0 ? void 0 : _v.find("hr");
const list = hr?.nextUntil("hr"); const list = hr === null || hr === void 0 ? void 0 : hr.nextUntil("hr");
const links = []; const links = [];
list.each((index, element) => { list.each((index, element) => {
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
element = $(element); element = $(element);
// title // title
const title = element?.text() || ""; const title = (element === null || element === void 0 ? void 0 : element.text()) || "";
const quality = element?.text().match(/\d+p\b/)?.[0] || ""; const quality = ((_a = element === null || element === void 0 ? void 0 : element.text().match(/\d+p\b/)) === null || _a === void 0 ? void 0 : _a[0]) || "";
// console.log(title); // console.log(title);
// movieLinks // movieLinks
const movieLinks = element const movieLinks = (element === null || element === void 0 ? void 0 : element.next().find(".dwd-button").text().toLowerCase().includes("download"))
?.next() ? (_c = (_b = element === null || element === void 0 ? void 0 : element.next().find(".dwd-button")) === null || _b === void 0 ? void 0 : _b.parent()) === null || _c === void 0 ? void 0 : _c.attr("href")
.find(".dwd-button")
.text()
.toLowerCase()
.includes("download")
? element?.next().find(".dwd-button")?.parent()?.attr("href")
: ""; : "";
// episode links // episode links
const vcloudLinks = element const vcloudLinks = (_e = (_d = element === null || element === void 0 ? void 0 : element.next().find(".btn-outline[style='background:linear-gradient(135deg,#ed0b0b,#f2d152); color: white;'],.btn-outline[style='background:linear-gradient(135deg,#ed0b0b,#f2d152); color: #fdf8f2;']")) === null || _d === void 0 ? void 0 : _d.parent()) === null || _e === void 0 ? void 0 : _e.attr("href");
?.next()
.find(".btn-outline[style='background:linear-gradient(135deg,#ed0b0b,#f2d152); color: white;'],.btn-outline[style='background:linear-gradient(135deg,#ed0b0b,#f2d152); color: #fdf8f2;']")
?.parent()
?.attr("href");
console.log(title); console.log(title);
const episodesLink = (vcloudLinks const episodesLink = (vcloudLinks
? vcloudLinks ? vcloudLinks
: element : (element === null || element === void 0 ? void 0 : element.next().find(".dwd-button").text().toLowerCase().includes("episode"))
?.next() ? (_g = (_f = element === null || element === void 0 ? void 0 : element.next().find(".dwd-button")) === null || _f === void 0 ? void 0 : _f.parent()) === null || _g === void 0 ? void 0 : _g.attr("href")
.find(".dwd-button")
.text()
.toLowerCase()
.includes("episode")
? element?.next().find(".dwd-button")?.parent()?.attr("href")
: "") || : "") ||
element ((_j = (_h = element === null || element === void 0 ? void 0 : element.next().find(".btn-outline[style='background:linear-gradient(135deg,#0ebac3,#09d261); color: white;']")) === null || _h === void 0 ? void 0 : _h.parent()) === null || _j === void 0 ? void 0 : _j.attr("href"));
?.next()
.find(".btn-outline[style='background:linear-gradient(135deg,#0ebac3,#09d261); color: white;']")
?.parent()
?.attr("href");
if (movieLinks || episodesLink) { if (movieLinks || episodesLink) {
links.push({ links.push({
title, title,
@@ -133,5 +123,5 @@ const getMeta = async ({ link, providerContext, }) => {
linkList: [], linkList: [],
}; };
} }
}; });
exports.getMeta = getMeta; exports.getMeta = getMeta;

98
dist/vega/posts.js vendored
View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const headers = { const headers = {
@@ -17,63 +26,58 @@ const headers = {
"Upgrade-Insecure-Requests": "1", "Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0",
}; };
const getPosts = async ({ filter, page, providerValue, signal, providerContext, }) => { const getPosts = (_a) => __awaiter(void 0, [_a], void 0, function* ({ filter, page, providerValue, signal, providerContext, }) {
const { getBaseUrl, axios, cheerio } = providerContext; const { getBaseUrl, axios, cheerio } = providerContext;
const baseUrl = await getBaseUrl("Vega"); const baseUrl = yield getBaseUrl("Vega");
console.log("vegaGetPosts baseUrl:", providerValue, baseUrl); console.log("vegaGetPosts baseUrl:", providerValue, baseUrl);
const url = `${baseUrl}/${filter}/page/${page}/`; const url = `${baseUrl}/${filter}/page/${page}/`;
console.log("vegaGetPosts url:", url); console.log("vegaGetPosts url:", url);
return posts(baseUrl, url, signal, headers, axios, cheerio); return posts(baseUrl, url, signal, headers, axios, cheerio);
}; });
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async ({ searchQuery, page, providerValue, signal, providerContext, }) => { const getSearchPosts = (_a) => __awaiter(void 0, [_a], void 0, function* ({ searchQuery, page, providerValue, signal, providerContext, }) {
const { getBaseUrl, axios, commonHeaders, cheerio } = providerContext; const { getBaseUrl, axios, commonHeaders, cheerio } = providerContext;
const baseUrl = await getBaseUrl("Vega"); const baseUrl = yield getBaseUrl("Vega");
console.log("vegaGetPosts baseUrl:", providerValue, baseUrl); console.log("vegaGetPosts baseUrl:", providerValue, baseUrl);
const url = `${baseUrl}/page/${page}/?s=${searchQuery}`; const url = `${baseUrl}/page/${page}/?s=${searchQuery}`;
console.log("vegaGetPosts url:", url); console.log("vegaGetPosts url:", url);
return posts(baseUrl, url, signal, commonHeaders, axios, cheerio); return posts(baseUrl, url, signal, commonHeaders, axios, cheerio);
}; });
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts(baseUrl, url, signal, headers = {}, axios, cheerio) { function posts(baseUrl_1, url_1, signal_1) {
try { return __awaiter(this, arguments, void 0, function* (baseUrl, url, signal, headers = {}, axios, cheerio) {
const urlRes = await axios.get(url, { var _a, _b;
headers: { try {
...headers, const urlRes = yield axios.get(url, {
Referer: baseUrl, headers: Object.assign(Object.assign({}, headers), { Referer: baseUrl }),
}, signal,
signal, });
}); const $ = cheerio.load(urlRes.data);
const $ = cheerio.load(urlRes.data); const posts = [];
const posts = []; (_b = (_a = $(".blog-items,.post-list")) === null || _a === void 0 ? void 0 : _a.children("article")) === null || _b === void 0 ? void 0 : _b.each((index, element) => {
$(".blog-items,.post-list") var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
?.children("article") const post = {
?.each((index, element) => { title: (((_e = (_d = (_c = (_b = (_a = $(element)) === null || _a === void 0 ? void 0 : _a.find("a")) === null || _b === void 0 ? void 0 : _b.attr("title")) === null || _c === void 0 ? void 0 : _c.replace("Download", "")) === null || _d === void 0 ? void 0 : _d.match(/^(.*?)\s*\((\d{4})\)|^(.*?)\s*\((Season \d+)\)/)) === null || _e === void 0 ? void 0 : _e[0]) ||
const post = { ((_h = (_g = (_f = $(element)) === null || _f === void 0 ? void 0 : _f.find("a")) === null || _g === void 0 ? void 0 : _g.attr("title")) === null || _h === void 0 ? void 0 : _h.replace("Download", "")) ||
title: ($(element) ((_k = (_j = $(element)) === null || _j === void 0 ? void 0 : _j.find(".post-title").text()) === null || _k === void 0 ? void 0 : _k.replace("Download", "")) ||
?.find("a") "").trim(),
?.attr("title") link: ((_m = (_l = $(element)) === null || _l === void 0 ? void 0 : _l.find("a")) === null || _m === void 0 ? void 0 : _m.attr("href")) || "",
?.replace("Download", "") image: $(element).find("a").find("img").attr("data-lazy-src") ||
?.match(/^(.*?)\s*\((\d{4})\)|^(.*?)\s*\((Season \d+)\)/)?.[0] || $(element).find("a").find("img").attr("data-src") ||
$(element)?.find("a")?.attr("title")?.replace("Download", "") || $(element).find("a").find("img").attr("src") ||
$(element)?.find(".post-title").text()?.replace("Download", "") || "",
"").trim(), };
link: $(element)?.find("a")?.attr("href") || "", if (post.image.startsWith("//")) {
image: $(element).find("a").find("img").attr("data-lazy-src") || post.image = "https:" + post.image;
$(element).find("a").find("img").attr("data-src") || }
$(element).find("a").find("img").attr("src") || posts.push(post);
"", });
}; // console.log(posts);
if (post.image.startsWith("//")) { return posts;
post.image = "https:" + post.image; }
} catch (error) {
posts.push(post); console.error("vegaGetPosts error:", error);
}); return [];
// console.log(posts); }
return posts; });
}
catch (error) {
console.error("vegaGetPosts error:", error);
return [];
}
} }

133
dist/vega/stream.js vendored
View File

@@ -1,4 +1,13 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = getStream; exports.getStream = getStream;
const headers = { const headers = {
@@ -17,49 +26,35 @@ const headers = {
"Upgrade-Insecure-Requests": "1", "Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0",
}; };
async function getStream({ link, type, signal, providerContext, }) { function getStream(_a) {
const { axios, cheerio, extractors } = providerContext; return __awaiter(this, arguments, void 0, function* ({ link, type, signal, providerContext, }) {
const { hubcloudExtracter } = extractors; var _b, _c, _d, _e;
try { const { axios, cheerio, extractors } = providerContext;
const streamLinks = []; const { hubcloudExtracter } = extractors;
console.log("dotlink", link); try {
if (type === "movie") { const streamLinks = [];
// vlink console.log("dotlink", link);
const dotlinkRes = await axios(`${link}`, { headers }); if (type === "movie") {
const dotlinkText = dotlinkRes.data; // vlink
// console.log('dotlinkText', dotlinkText); const dotlinkRes = yield axios(`${link}`, { headers });
const vlink = dotlinkText.match(/<a\s+href="([^"]*cloud\.[^"]*)"/i) || []; const dotlinkText = dotlinkRes.data;
// console.log('vLink', vlink[1]); // console.log('dotlinkText', dotlinkText);
link = vlink[1]; const vlink = dotlinkText.match(/<a\s+href="([^"]*cloud\.[^"]*)"/i) || [];
// filepress link // console.log('vLink', vlink[1]);
try { link = vlink[1];
const $ = cheerio.load(dotlinkText); // filepress link
const filepressLink = $('.btn.btn-sm.btn-outline[style="background:linear-gradient(135deg,rgb(252,185,0) 0%,rgb(0,0,0)); color: #fdf8f2;"]') try {
.parent() const $ = cheerio.load(dotlinkText);
.attr("href"); const filepressLink = $('.btn.btn-sm.btn-outline[style="background:linear-gradient(135deg,rgb(252,185,0) 0%,rgb(0,0,0)); color: #fdf8f2;"]')
// console.log('filepressLink', filepressLink); .parent()
const filepressID = filepressLink?.split("/").pop(); .attr("href");
const filepressBaseUrl = filepressLink // console.log('filepressLink', filepressLink);
?.split("/") const filepressID = filepressLink === null || filepressLink === void 0 ? void 0 : filepressLink.split("/").pop();
.slice(0, -2) const filepressBaseUrl = filepressLink === null || filepressLink === void 0 ? void 0 : filepressLink.split("/").slice(0, -2).join("/");
.join("/"); // console.log('filepressID', filepressID);
// console.log('filepressID', filepressID); // console.log('filepressBaseUrl', filepressBaseUrl);
// console.log('filepressBaseUrl', filepressBaseUrl); const filepressTokenRes = yield axios.post(filepressBaseUrl + "/api/file/downlaod/", {
const filepressTokenRes = await axios.post(filepressBaseUrl + "/api/file/downlaod/", { id: filepressID,
id: filepressID,
method: "indexDownlaod",
captchaValue: null,
}, {
headers: {
"Content-Type": "application/json",
Referer: filepressBaseUrl,
},
});
// console.log('filepressTokenRes', filepressTokenRes.data);
if (filepressTokenRes.data?.status) {
const filepressToken = filepressTokenRes.data?.data;
const filepressStreamLink = await axios.post(filepressBaseUrl + "/api/file/downlaod2/", {
id: filepressToken,
method: "indexDownlaod", method: "indexDownlaod",
captchaValue: null, captchaValue: null,
}, { }, {
@@ -68,27 +63,41 @@ async function getStream({ link, type, signal, providerContext, }) {
Referer: filepressBaseUrl, Referer: filepressBaseUrl,
}, },
}); });
// console.log('filepressStreamLink', filepressStreamLink.data); // console.log('filepressTokenRes', filepressTokenRes.data);
streamLinks.push({ if ((_b = filepressTokenRes.data) === null || _b === void 0 ? void 0 : _b.status) {
server: "filepress", const filepressToken = (_c = filepressTokenRes.data) === null || _c === void 0 ? void 0 : _c.data;
link: filepressStreamLink.data?.data?.[0], const filepressStreamLink = yield axios.post(filepressBaseUrl + "/api/file/downlaod2/", {
type: "mkv", id: filepressToken,
}); method: "indexDownlaod",
captchaValue: null,
}, {
headers: {
"Content-Type": "application/json",
Referer: filepressBaseUrl,
},
});
// console.log('filepressStreamLink', filepressStreamLink.data);
streamLinks.push({
server: "filepress",
link: (_e = (_d = filepressStreamLink.data) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e[0],
type: "mkv",
});
}
}
catch (error) {
console.log("filepress error: ");
// console.error(error);
} }
} }
catch (error) { return yield hubcloudExtracter(link, signal);
console.log("filepress error: "); }
// console.error(error); catch (error) {
console.log("getStream error: ", error);
if (error.message.includes("Aborted")) {
} }
else {
}
return [];
} }
return await hubcloudExtracter(link, signal); });
}
catch (error) {
console.log("getStream error: ", error);
if (error.message.includes("Aborted")) {
}
else {
}
return [];
}
} }

View File

@@ -1,37 +1,48 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getEpisodes = void 0; exports.getEpisodes = void 0;
const getEpisodes = async function ({ url, providerContext, }) { const getEpisodes = function (_a) {
const { axios, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) {
try { const { axios, cheerio } = providerContext;
const res = await axios.get(url); try {
const html = res.data; const res = yield axios.get(url);
let $ = cheerio.load(html); const html = res.data;
const episodeLinks = []; let $ = cheerio.load(html);
$('strong:contains("Episode"),strong:contains("1080"),strong:contains("720"),strong:contains("480")').map((i, element) => { const episodeLinks = [];
const title = $(element).text(); $('strong:contains("Episode"),strong:contains("1080"),strong:contains("720"),strong:contains("480")').map((i, element) => {
const link = $(element) const title = $(element).text();
.parent() const link = $(element)
.parent() .parent()
.next("h4") .parent()
.find("a") .next("h4")
.attr("href"); .find("a")
if (link && !title.includes("zip")) { .attr("href");
episodeLinks.push({ if (link && !title.includes("zip")) {
title: title, episodeLinks.push({
link, title: title,
}); link,
} });
}); }
return episodeLinks; });
} return episodeLinks;
catch (err) { }
return [ catch (err) {
{ return [
title: "Server 1", {
link: url, title: "Server 1",
}, link: url,
]; },
} ];
}
});
}; };
exports.getEpisodes = getEpisodes; exports.getEpisodes = getEpisodes;

155
dist/world4u/meta.js vendored
View File

@@ -1,76 +1,89 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeta = void 0; exports.getMeta = void 0;
const getMeta = async function ({ link, providerContext, }) { const getMeta = function (_a) {
try { return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) {
const { axios, cheerio } = providerContext; var _b;
const url = link; try {
const res = await axios.get(url); const { axios, cheerio } = providerContext;
const data = res.data; const url = link;
const $ = cheerio.load(data); const res = yield axios.get(url);
const type = $(".entry-content") const data = res.data;
.text() const $ = cheerio.load(data);
.toLocaleLowerCase() const type = $(".entry-content")
.includes("movie name") .text()
? "movie" .toLocaleLowerCase()
: "series"; .includes("movie name")
const imdbId = $(".imdb_left").find("a").attr("href")?.split("/")[4] || ""; ? "movie"
const title = $(".entry-content") : "series";
.find('strong:contains("Name")') const imdbId = ((_b = $(".imdb_left").find("a").attr("href")) === null || _b === void 0 ? void 0 : _b.split("/")[4]) || "";
.children() const title = $(".entry-content")
.remove() .find('strong:contains("Name")')
.end() .children()
.text() .remove()
.replace(":", ""); .end()
const synopsis = $(".entry-content") .text()
.find('p:contains("Synopsis"),p:contains("Plot"),p:contains("Story")') .replace(":", "");
.children() const synopsis = $(".entry-content")
.remove() .find('p:contains("Synopsis"),p:contains("Plot"),p:contains("Story")')
.end() .children()
.text(); .remove()
const image = $(".wp-caption").find("img").attr("data-src") || .end()
$(".entry-content").find("img").attr("data-src") || .text();
""; const image = $(".wp-caption").find("img").attr("data-src") ||
const links = []; $(".entry-content").find("img").attr("data-src") ||
$(".my-button").map((i, element) => { "";
const title = $(element).parent().parent().prev().text(); const links = [];
const episodesLink = $(element).attr("href"); $(".my-button").map((i, element) => {
const quality = title.match(/\b(480p|720p|1080p|2160p)\b/i)?.[0] || ""; var _a;
if (episodesLink && title) { const title = $(element).parent().parent().prev().text();
links.push({ const episodesLink = $(element).attr("href");
title, const quality = ((_a = title.match(/\b(480p|720p|1080p|2160p)\b/i)) === null || _a === void 0 ? void 0 : _a[0]) || "";
episodesLink: type === "series" ? episodesLink : "", if (episodesLink && title) {
directLinks: type === "movie" links.push({
? [ title,
{ episodesLink: type === "series" ? episodesLink : "",
link: episodesLink, directLinks: type === "movie"
title, ? [
type: "movie", {
}, link: episodesLink,
] title,
: [], type: "movie",
quality, },
}); ]
} : [],
}); quality,
return { });
title, }
synopsis, });
image, return {
imdbId, title,
type, synopsis,
linkList: links, image,
}; imdbId,
} type,
catch (err) { linkList: links,
return { };
title: "", }
synopsis: "", catch (err) {
image: "", return {
imdbId: "", title: "",
type: "movie", synopsis: "",
linkList: [], image: "",
}; imdbId: "",
} type: "movie",
linkList: [],
};
}
});
}; };
exports.getMeta = getMeta; exports.getMeta = getMeta;

95
dist/world4u/posts.js vendored
View File

@@ -1,48 +1,63 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSearchPosts = exports.getPosts = void 0; exports.getSearchPosts = exports.getPosts = void 0;
const getPosts = async function ({ filter, page, const getPosts = function (_a) {
// providerValue, return __awaiter(this, arguments, void 0, function* ({ filter, page,
signal, providerContext, }) { // providerValue,
const { getBaseUrl, axios, cheerio } = providerContext; signal, providerContext, }) {
const baseUrl = await getBaseUrl("w4u"); const { getBaseUrl, axios, cheerio } = providerContext;
const url = `${baseUrl + filter}/page/${page}/`; const baseUrl = yield getBaseUrl("w4u");
return posts({ url, signal, axios, cheerio }); const url = `${baseUrl + filter}/page/${page}/`;
return posts({ url, signal, axios, cheerio });
});
}; };
exports.getPosts = getPosts; exports.getPosts = getPosts;
const getSearchPosts = async function ({ searchQuery, page, const getSearchPosts = function (_a) {
// providerValue, return __awaiter(this, arguments, void 0, function* ({ searchQuery, page,
signal, providerContext, }) { // providerValue,
const { getBaseUrl, axios, cheerio } = providerContext; signal, providerContext, }) {
const baseUrl = await getBaseUrl("w4u"); const { getBaseUrl, axios, cheerio } = providerContext;
const url = `${baseUrl}/page/${page}/?s=${searchQuery}`; const baseUrl = yield getBaseUrl("w4u");
return posts({ url, signal, axios, cheerio }); const url = `${baseUrl}/page/${page}/?s=${searchQuery}`;
return posts({ url, signal, axios, cheerio });
});
}; };
exports.getSearchPosts = getSearchPosts; exports.getSearchPosts = getSearchPosts;
async function posts({ url, signal, axios, cheerio, }) { function posts(_a) {
try { return __awaiter(this, arguments, void 0, function* ({ url, signal, axios, cheerio, }) {
const res = await axios.get(url, { signal }); try {
const data = res.data; const res = yield axios.get(url, { signal });
const $ = cheerio.load(data); const data = res.data;
const catalog = []; const $ = cheerio.load(data);
$(".recent-posts") const catalog = [];
.children() $(".recent-posts")
.map((i, element) => { .children()
const title = $(element).find(".post-thumb").find("a").attr("title"); .map((i, element) => {
const link = $(element).find(".post-thumb").find("a").attr("href"); const title = $(element).find(".post-thumb").find("a").attr("title");
const image = $(element).find(".post-thumb").find("img").attr("data-src") || const link = $(element).find(".post-thumb").find("a").attr("href");
$(element).find(".post-thumb").find("img").attr("src"); const image = $(element).find(".post-thumb").find("img").attr("data-src") ||
if (title && link && image) { $(element).find(".post-thumb").find("img").attr("src");
catalog.push({ if (title && link && image) {
title: title.replace("Download", "").trim(), catalog.push({
link: link, title: title.replace("Download", "").trim(),
image: image, link: link,
}); image: image,
} });
}); }
return catalog; });
} return catalog;
catch (err) { }
return []; catch (err) {
} return [];
}
});
} }

330
dist/world4u/stream.js vendored
View File

@@ -1,186 +1,198 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getStream = void 0; exports.getStream = void 0;
const getStream = async function ({ link: url, type, providerContext, }) { const getStream = function (_a) {
const { axios, cheerio } = providerContext; return __awaiter(this, arguments, void 0, function* ({ link: url, type, providerContext, }) {
const headers = { var _b;
"sec-ch-ua": '"Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"', const { axios, cheerio } = providerContext;
"sec-ch-ua-mobile": "?0", const headers = {
"sec-ch-ua-platform": '"Windows"', "sec-ch-ua": '"Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"',
"Sec-Fetch-Site": "none", "sec-ch-ua-mobile": "?0",
"Sec-Fetch-User": "?1", "sec-ch-ua-platform": '"Windows"',
"Upgrade-Insecure-Requests": "1", "Sec-Fetch-Site": "none",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0", "Sec-Fetch-User": "?1",
}; "Upgrade-Insecure-Requests": "1",
try { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",
if (type === "movie") { };
const linkRes = await axios.get(url, { headers });
const linkData = linkRes.data;
const $ = cheerio.load(linkData);
url = $('strong:contains("INSTANT")').parent().attr("href") || url;
}
// fastilinks
if (url.includes("fastilinks")) {
const fastilinksRes = await axios.get(url, { headers });
const fastilinksData = fastilinksRes.data;
const $$ = cheerio.load(fastilinksData);
const fastilinksKey = $$('input[name="_csrf_token_645a83a41868941e4692aa31e7235f2"]').attr("value");
console.log("fastilinksKey", fastilinksKey);
const fastilinksFormData = new FormData();
fastilinksFormData.append("_csrf_token_645a83a41868941e4692aa31e7235f2", fastilinksKey || "");
const fastilinksRes2 = await fetch(url, {
method: "POST",
headers: headers,
body: fastilinksFormData,
});
const fastilinksHtml = await fastilinksRes2.text();
// console.log('fastilinksHtml', fastilinksHtml);
const $$$ = cheerio.load(fastilinksHtml);
const fastilinksLink = $$$('a:contains("mediafire")').attr("href") ||
$$$('a:contains("photolinx")').attr("href");
console.log("fastilinksLink", fastilinksLink);
url = fastilinksLink || url;
}
console.log("world4uGetStream", type, url);
if (url.includes("photolinx")) {
console.log("photolinx", url);
// const photolinxBaseUrl = url.split('/').slice(0, 3).join('/');
const photolinxRes = await axios.get(url, { headers });
const photolinxData = photolinxRes.data;
const $$$ = cheerio.load(photolinxData);
const access_token = $$$("#generate_url").attr("data-token");
const uid = $$$("#generate_url").attr("data-uid");
const body = {
type: "DOWNLOAD_GENERATE",
payload: {
access_token,
uid,
},
};
console.log("photolinxData", JSON.stringify(body));
const photolinxRes2 = await fetch("https://photolinx.shop/action", {
headers: {
"sec-fetch-site": "same-origin",
"x-requested-with": "xmlhttprequest",
cookie: "PHPSESSID=9a8d855c700cf0711831c04960c2e2b4",
Referer: "https://photolinx.shop/download/5mPkrBD0D2x",
"Referrer-Policy": "strict-origin-when-cross-origin",
},
body: JSON.stringify(body),
method: "POST",
});
const photolinxData2 = await photolinxRes2.json();
console.log("photolinxData2", photolinxData2);
const dwUrl = photolinxData2?.download_url;
if (dwUrl) {
const streamLinks = [
{
server: "Photolinx",
link: dwUrl,
type: "mkv",
},
];
return streamLinks;
}
}
const res = await axios.get(url, { headers });
const html = res.data;
const streamLinks = [];
let data = { download: "" };
try { try {
const key = html.match(/formData\.append\('key',\s*'(\d+)'\);/)?.[1] || ""; if (type === "movie") {
console.log("key", key); const linkRes = yield axios.get(url, { headers });
const formData = new FormData(); const linkData = linkRes.data;
formData.append("key", key); const $ = cheerio.load(linkData);
const streamRes = await fetch(url, { url = $('strong:contains("INSTANT")').parent().attr("href") || url;
method: "POST", }
headers: headers, // fastilinks
body: formData, if (url.includes("fastilinks")) {
}); const fastilinksRes = yield axios.get(url, { headers });
data = await streamRes.json(); const fastilinksData = fastilinksRes.data;
} const $$ = cheerio.load(fastilinksData);
catch (err) { const fastilinksKey = $$('input[name="_csrf_token_645a83a41868941e4692aa31e7235f2"]').attr("value");
console.log("error in world4uGetStream", err); console.log("fastilinksKey", fastilinksKey);
} const fastilinksFormData = new FormData();
// console.log('streamRes', streamRes); fastilinksFormData.append("_csrf_token_645a83a41868941e4692aa31e7235f2", fastilinksKey || "");
let $ = cheerio.load(html); const fastilinksRes2 = yield fetch(url, {
// console.log('data', html); method: "POST",
const mediafireUrl = $('h1:contains("Download")').find("a").attr("href") || headers: headers,
$(".input.popsok").attr("href"); body: fastilinksFormData,
console.log("mediafireUrl", mediafireUrl); });
if (mediafireUrl) { const fastilinksHtml = yield fastilinksRes2.text();
const directUrl = await axios.head(mediafireUrl); // console.log('fastilinksHtml', fastilinksHtml);
const urlContentType = directUrl.headers["content-type"]; const $$$ = cheerio.load(fastilinksHtml);
console.log("mfcontentType", urlContentType); const fastilinksLink = $$$('a:contains("mediafire")').attr("href") ||
if (urlContentType && urlContentType.includes("video")) { $$$('a:contains("photolinx")').attr("href");
console.log("fastilinksLink", fastilinksLink);
url = fastilinksLink || url;
}
console.log("world4uGetStream", type, url);
if (url.includes("photolinx")) {
console.log("photolinx", url);
// const photolinxBaseUrl = url.split('/').slice(0, 3).join('/');
const photolinxRes = yield axios.get(url, { headers });
const photolinxData = photolinxRes.data;
const $$$ = cheerio.load(photolinxData);
const access_token = $$$("#generate_url").attr("data-token");
const uid = $$$("#generate_url").attr("data-uid");
const body = {
type: "DOWNLOAD_GENERATE",
payload: {
access_token,
uid,
},
};
console.log("photolinxData", JSON.stringify(body));
const photolinxRes2 = yield fetch("https://photolinx.shop/action", {
headers: {
"sec-fetch-site": "same-origin",
"x-requested-with": "xmlhttprequest",
cookie: "PHPSESSID=9a8d855c700cf0711831c04960c2e2b4",
Referer: "https://photolinx.shop/download/5mPkrBD0D2x",
"Referrer-Policy": "strict-origin-when-cross-origin",
},
body: JSON.stringify(body),
method: "POST",
});
const photolinxData2 = yield photolinxRes2.json();
console.log("photolinxData2", photolinxData2);
const dwUrl = photolinxData2 === null || photolinxData2 === void 0 ? void 0 : photolinxData2.download_url;
if (dwUrl) {
const streamLinks = [
{
server: "Photolinx",
link: dwUrl,
type: "mkv",
},
];
return streamLinks;
}
}
const res = yield axios.get(url, { headers });
const html = res.data;
const streamLinks = [];
let data = { download: "" };
try {
const key = ((_b = html.match(/formData\.append\('key',\s*'(\d+)'\);/)) === null || _b === void 0 ? void 0 : _b[1]) || "";
console.log("key", key);
const formData = new FormData();
formData.append("key", key);
const streamRes = yield fetch(url, {
method: "POST",
headers: headers,
body: formData,
});
data = yield streamRes.json();
}
catch (err) {
console.log("error in world4uGetStream", err);
}
// console.log('streamRes', streamRes);
let $ = cheerio.load(html);
// console.log('data', html);
const mediafireUrl = $('h1:contains("Download")').find("a").attr("href") ||
$(".input.popsok").attr("href");
console.log("mediafireUrl", mediafireUrl);
if (mediafireUrl) {
const directUrl = yield axios.head(mediafireUrl);
const urlContentType = directUrl.headers["content-type"];
console.log("mfcontentType", urlContentType);
if (urlContentType && urlContentType.includes("video")) {
streamLinks.push({
server: "Mediafire",
link: mediafireUrl,
type: "mkv",
});
return streamLinks;
}
else {
const repairRes = yield axios.get(mediafireUrl, {
headers: {
Referer: url,
},
});
const repairHtml = repairRes.data;
// Regex to match the window.location.href assignment in the script content
const hrefRegex = /window\.location\.href\s*=\s*['"]([^'"]+)['"]/;
const match = repairHtml.match(hrefRegex);
// If a match is found, return the URL; otherwise return null
let downloadLInk = match ? match[1] : null;
console.log("downloadLInk", downloadLInk);
if (downloadLInk) {
streamLinks.push({
server: "Mediafire",
link: downloadLInk,
type: "mkv",
});
}
return streamLinks;
}
}
const requireRepairRes = yield axios.head(data.download);
const contentType = requireRepairRes.headers["content-type"];
console.log("contentType", contentType);
if (contentType && contentType.includes("video")) {
streamLinks.push({ streamLinks.push({
server: "Mediafire", server: "Mediafire",
link: mediafireUrl, link: data.download,
type: "mkv", type: "mkv",
}); });
return streamLinks; return streamLinks;
} }
else { else {
const repairRes = await axios.get(mediafireUrl, { const repairRes = yield axios.get(data.download, {
headers: { headers: {
Referer: url, Referer: url,
}, },
}); });
const repairHtml = repairRes.data; const repairHtml = repairRes.data;
// Regex to match the window.location.href assignment in the script content const $ = cheerio.load(repairHtml);
const hrefRegex = /window\.location\.href\s*=\s*['"]([^'"]+)['"]/; const repairLink = $("#continue-btn").attr("href");
const match = repairHtml.match(hrefRegex); console.log("repairLink", "https://www.mediafire.com" + repairLink);
// If a match is found, return the URL; otherwise return null const repairRequireRepairRes = yield axios.get("https://www.mediafire.com" + repairLink);
let downloadLInk = match ? match[1] : null; const $$ = cheerio.load(repairRequireRepairRes.data);
console.log("downloadLInk", downloadLInk); const repairDownloadLink = $$(".input.popsok").attr("href");
if (downloadLInk) { console.log("repairDownloadLink", repairDownloadLink);
if (repairDownloadLink) {
streamLinks.push({ streamLinks.push({
server: "Mediafire", server: "Mediafire",
link: downloadLInk, link: repairDownloadLink,
type: "mkv", type: "mkv",
}); });
} }
return streamLinks;
} }
}
const requireRepairRes = await axios.head(data.download);
const contentType = requireRepairRes.headers["content-type"];
console.log("contentType", contentType);
if (contentType && contentType.includes("video")) {
streamLinks.push({
server: "Mediafire",
link: data.download,
type: "mkv",
});
return streamLinks; return streamLinks;
} }
else { catch (err) {
const repairRes = await axios.get(data.download, { console.log(err);
headers: { return [];
Referer: url,
},
});
const repairHtml = repairRes.data;
const $ = cheerio.load(repairHtml);
const repairLink = $("#continue-btn").attr("href");
console.log("repairLink", "https://www.mediafire.com" + repairLink);
const repairRequireRepairRes = await axios.get("https://www.mediafire.com" + repairLink);
const $$ = cheerio.load(repairRequireRepairRes.data);
const repairDownloadLink = $$(".input.popsok").attr("href");
console.log("repairDownloadLink", repairDownloadLink);
if (repairDownloadLink) {
streamLinks.push({
server: "Mediafire",
link: repairDownloadLink,
type: "mkv",
});
}
} }
return streamLinks; });
}
catch (err) {
console.log(err);
return [];
}
}; };
exports.getStream = getStream; exports.getStream = getStream;