Compare commits

..

3 Commits

Author SHA1 Message Date
Himanshu d744db3359 fix: update Joya9tv stream extraction logic 2026-06-18 11:03:21 +05:30
Himanshu bf84ba9a6d fix: update hubcloud extractor logic and bump versions 2026-06-18 10:45:48 +05:30
Himanshu 040912facd chore: remove react-native-aes-crypto dependency 2026-06-18 10:45:26 +05:30
19 changed files with 47 additions and 41 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+13 -13
View File
@@ -2,7 +2,7 @@
{
"display_name": "VegaMovies",
"value": "vega",
"version": "2.8",
"version": "2.9",
"icon": "",
"type": "global",
"disabled": false
@@ -18,7 +18,7 @@
{
"display_name": "MoviesDrive",
"value": "drive",
"version": "2.1",
"version": "2.2",
"icon": "",
"type": "global",
"disabled": false
@@ -34,7 +34,7 @@
{
"display_name": "4khdHub",
"value": "4khdhub",
"version": "2.3",
"version": "2.4",
"icon": "",
"type": "global",
"disabled": false
@@ -42,7 +42,7 @@
{
"display_name": "Cinewood",
"value": "1cinevood",
"version": "1.4",
"version": "1.5",
"icon": "",
"type": "global",
"disabled": false
@@ -58,7 +58,7 @@
{
"display_name": "KatMoviesHd",
"value": "katmovies",
"version": "1.6",
"version": "1.7",
"icon": "",
"type": "global",
"disabled": false
@@ -90,7 +90,7 @@
{
"display_name": "CinemaLuxe",
"value": "cinemaLuxe",
"version": "1.7",
"version": "1.8",
"icon": "",
"type": "global",
"disabled": true
@@ -114,7 +114,7 @@
{
"display_name": "Movies4U",
"value": "movies4u",
"version": "1.5",
"version": "1.6",
"icon": "",
"type": "global",
"disabled": false
@@ -130,7 +130,7 @@
{
"display_name": "Zeefliz",
"value": "zeefliz",
"version": "1.5",
"version": "1.6",
"icon": "",
"type": "global",
"disabled": false
@@ -138,7 +138,7 @@
{
"display_name": "KatMovieFix",
"value": "katMovieFix",
"version": "1.6",
"version": "1.7",
"icon": "",
"type": "global",
"disabled": true
@@ -170,7 +170,7 @@
{
"display_name": "HdHub4u",
"value": "hdhub4u",
"version": "2.0",
"version": "2.1",
"icon": "",
"type": "global",
"disabled": false
@@ -290,7 +290,7 @@
{
"display_name": "RogMovies",
"value": "luxMovies",
"version": "2.4",
"version": "2.5",
"icon": "",
"type": "india",
"disabled": false
@@ -314,7 +314,7 @@
{
"display_name": "SkyMovieHD",
"value": "skyMovieHD",
"version": "1.6",
"version": "1.7",
"icon": "",
"type": "global",
"disabled": true
@@ -322,7 +322,7 @@
{
"display_name": "Joya9tv",
"value": "Joya9tv",
"version": "1.5",
"version": "1.7",
"icon": "",
"type": "india",
"disabled": false
-7
View File
@@ -11,7 +11,6 @@
"dependencies": {
"axios": "^1.10.0",
"cheerio": "^1.1.0",
"react-native-aes-crypto": "^3.2.1",
"rimraf": "^6.0.1",
"zod": "^4.0.2"
},
@@ -2462,12 +2461,6 @@
"node": ">=0.10.0"
}
},
"node_modules/react-native-aes-crypto": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/react-native-aes-crypto/-/react-native-aes-crypto-3.2.1.tgz",
"integrity": "sha512-v7KDt1I2UqYwRJRFeJrB8zABQuUsawCyWLK+h5AF2aZqsrsIaR/+DaZrqCetR9QvYRI+oEVsrwBUv9xYXhfCBQ==",
"license": "MIT"
},
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+1 -1
View File
@@ -34,7 +34,7 @@ export async function getStream({
try {
const streamLinks: Stream[] = [];
console.log("dotlink", link);
if (type === "movie") {
if (!link.includes("cloud")) {
// vlink
const dotlinkRes = await fetch(`${link}`, { headers });
const dotlinkText = await dotlinkRes.text();
+17 -4
View File
@@ -5,6 +5,21 @@ const hubcloudDecode = function (value: string) {
return atob(value.toString());
};
const extractUrlFromScript = (html: string): string => {
const doubleAtobMatch = html.match(
/var\s+url\s*=\s*atob\(atob\(['"]([^'"]+)['"]\)\)/,
);
if (doubleAtobMatch?.[1]) {
return atob(atob(doubleAtobMatch[1]));
}
const plainMatch = html.match(/var\s+url\s*=\s*['"]([^'"]+)['"]/);
return (
hubcloudDecode(plainMatch?.[1]?.split("r=")?.[1] ?? "") ||
plainMatch?.[1] ||
""
);
};
const getPixelDrainUrl = (html: string) => {
const match = html.match(/var\s+pxl\s*=\s*['"]([^'"]+)['"];?/i);
return match?.[1] || "";
@@ -44,10 +59,8 @@ export async function hubcloudExtractor(
const vLinkRes = await axios(`${link}`, { headers, signal });
const vLinkText = vLinkRes.data;
const $vLink = cheerio.load(vLinkText);
const vLinkRedirect = vLinkText.match(/var\s+url\s*=\s*'([^']+)';/) || [];
let vcloudLink =
hubcloudDecode(vLinkRedirect[1]?.split("r=")?.[1]) ||
vLinkRedirect[1] ||
extractUrlFromScript(vLinkText) ||
$vLink(".fa-file-download.fa-lg").parent().attr("href") ||
link;
console.log("vcloudLink", vcloudLink);
@@ -62,7 +75,7 @@ export async function hubcloudExtractor(
});
const vcloudText = await vcloudRes.text();
const $ = cheerio.load(vcloudText);
// console.log('vcloudRes', $.text());
// console.log("vcloudRes", $.text());
const linkClass = $(".btn-success.btn-lg.h6,.btn-danger,.btn-secondary");
for (const element of linkClass) {
+1 -1
View File
@@ -37,7 +37,7 @@ export async function getStream({
try {
const streamLinks: Stream[] = [];
console.log("dotlink", link);
if (type === "movie") {
if (type === "movie" && !link.includes("cloud")) {
// vlink
const dotlinkRes = await axios(`${link}`, { headers });
const dotlinkText = dotlinkRes.data;
+2 -2
View File
@@ -37,13 +37,13 @@ export async function getStream({
try {
const streamLinks: Stream[] = [];
console.log("dotlink", link);
if (type === "movie") {
if (type === "movie" && !link.includes("cloud")) {
// vlink
const dotlinkRes = await axios(`${link}`, { headers });
const dotlinkText = dotlinkRes.data;
// console.log('dotlinkText', dotlinkText);
const vlink = dotlinkText.match(/<a\s+href="([^"]*cloud\.[^"]*)"/i) || [];
// console.log('vLink', vlink[1]);
console.log("vLink", vlink[1]);
link = vlink[1];
// filepress link