fix multiple providers

This commit is contained in:
Himanshu
2026-05-11 21:50:15 +05:30
parent 2ce3c737d1
commit 8c161715f7
21 changed files with 82 additions and 38 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
@@ -1 +1 @@
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),episodes_exports={};__export(episodes_exports,{getEpisodes:()=>getEpisodes});var getEpisodes=__name(function(_0){return __async(this,arguments,function*({url:url,providerContext:providerContext}){try{const{axios:axios,cheerio:cheerio}=providerContext,html=(yield axios.get(url)).data;let $=cheerio.load(html);const episodeLinks=[];if($('a:contains("HubCloud")').map((i,element)=>{const title=$(element).parent().prev().text(),link=$(element).attr("href");link&&(title.includes("Ep")||title.includes("Download"))&&episodeLinks.push({title:title.includes("Download")?"Play":title,link:link})}),0===episodeLinks.length){const streamingServices=["hubcloud","gdflix"];let currentTitle="";$('h5 span[style*="color"], h5').each((i,element)=>{const text=$(element).text().trim();if(text&&(text.match(/\d{3,4}p/)||text.includes("Ep")||text.includes("Episode"))){currentTitle=text;let nextElement=$(element).parent();for(let j=0;j<10&&(nextElement=nextElement.next(),nextElement.length);j++)nextElement.find("a[href]").each((k,linkEl)=>{const href=$(linkEl).attr("href");if(href&&streamingServices.some(service=>href.includes(service))){let serverName="Play";href.includes("hubcloud")?serverName="HubCloud":href.includes("gdflix")?serverName="GDFlix":href.includes("pixeldrain")?serverName="Pixeldrain":href.includes("fastdl")&&(serverName="FastDL");const title=currentTitle?`${currentTitle} - ${serverName}`:serverName;episodeLinks.push({title:title,link:href})}})}})}return episodeLinks.length>0?episodeLinks:[{title:"Play",link:url}]}catch(err){return console.error(err),[{title:"Server 1",link:url}]}})},"getEpisodes");exports.getEpisodes=getEpisodes;
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),episodes_exports={};__export(episodes_exports,{getEpisodes:()=>getEpisodes});var getEpisodes=__name(function(_0){return __async(this,arguments,function*({url:url,providerContext:providerContext}){var _a;try{const{axios:axios,cheerio:cheerio}=providerContext,html=(yield axios.get(url)).data;let $=cheerio.load(html);const episodeLinks=[];if($('a:contains("HubCloud")').map((i,element)=>{const title=$(element).parent().prev().text(),link=$(element).attr("href");link&&(title.includes("Ep")||title.includes("Download"))&&episodeLinks.push({title:title.includes("Download")?"Play":title,link:link})}),0===episodeLinks.length){const streamingServices=["hubcloud","gdflix"];let currentTitle="";$('h5 span[style*="color"], h5').each((i,element)=>{const text=$(element).text().trim();if(text&&(text.match(/\d{3,4}p/)||text.includes("Ep")||text.includes("Episode"))){currentTitle=text;let nextElement=$(element).parent();for(let j=0;j<10&&(nextElement=nextElement.next(),nextElement.length);j++)nextElement.find("a[href]").each((k,linkEl)=>{const href=$(linkEl).attr("href");if(href&&streamingServices.some(service=>href.includes(service))){let serverName="Play";href.includes("hubcloud")?serverName="HubCloud":href.includes("gdflix")?serverName="GDFlix":href.includes("pixeldrain")?serverName="Pixeldrain":href.includes("fastdl")&&(serverName="FastDL");const title=currentTitle?`${currentTitle} - ${serverName}`:serverName;episodeLinks.push({title:title,link:href})}})}})}if(0===episodeLinks.length){const hubcloudLink=null==(_a=html.match(/https:\/\/hubcloud\.[^\/]+\/drive\/[^"'\s]+/i))?void 0:_a[0];hubcloudLink&&episodeLinks.push({title:"Play",link:hubcloudLink})}return console.log("episodeLinks:",episodeLinks),episodeLinks.length>0?episodeLinks:[{title:"Play",link:url}]}catch(err){return console.error(err),[{title:"Server 1",link:url}]}})},"getEpisodes");exports.getEpisodes=getEpisodes;
+1 -1
View File
@@ -1 +1 @@
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),posts_exports={};__export(posts_exports,{getPosts:()=>getPosts,getSearchPosts:()=>getSearchPosts});var getPosts=__name(function(_0){return __async(this,arguments,function*({filter:filter,page:page,signal:signal,providerContext:providerContext}){const{getBaseUrl:getBaseUrl}=providerContext;return posts({url:`${(yield getBaseUrl("drive"))+filter}page/${page}/`,signal:signal,providerContext:providerContext})})},"getPosts"),getSearchPosts=__name(function(_0){return __async(this,arguments,function*({searchQuery:searchQuery,page:page,signal:signal,providerContext:providerContext}){const{getBaseUrl:getBaseUrl}=providerContext;return posts({url:`${yield getBaseUrl("drive")}page/${page}/?s=${searchQuery}`,signal:signal,providerContext:providerContext})})},"getSearchPosts");function posts(_0){return __async(this,arguments,function*({url:url,signal:signal,providerContext:providerContext}){try{console.log("Fetching URL:",url);const{cheerio:cheerio}=providerContext,res=yield fetch(url,{signal:signal}),data=yield res.text(),$=cheerio.load(data),catalog=[];return $(".poster-card").map((i,element)=>{const title=$(element).find(".poster-title").text(),link=$(element).parent().attr("href"),image=$(element).find(".poster-image img").attr("src");console.log({title:title,link:link,image:image}),title&&link&&image&&catalog.push({title:title.replace("Download","").trim(),link:link,image:image})}),catalog}catch(err){return console.error("drive error ",err),[]}})}__name(posts,"posts"),exports.getPosts=getPosts,exports.getSearchPosts=getSearchPosts;
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),posts_exports={};__export(posts_exports,{getPosts:()=>getPosts,getSearchPosts:()=>getSearchPosts});var getPosts=__name(function(_0){return __async(this,arguments,function*({filter:filter,page:page,signal:signal,providerContext:providerContext}){const{getBaseUrl:getBaseUrl}=providerContext;return posts({url:`${(yield getBaseUrl("drive"))+filter}page/${page}/`,signal:signal,providerContext:providerContext})})},"getPosts"),getSearchPosts=__name(function(_0){return __async(this,arguments,function*({searchQuery:searchQuery,page:page,signal:signal,providerContext:providerContext}){const{getBaseUrl:getBaseUrl}=providerContext;return posts({url:`${yield getBaseUrl("drive")}page/${page}/?s=${searchQuery}`,signal:signal,providerContext:providerContext})})},"getSearchPosts");function posts(_0){return __async(this,arguments,function*({url:url,signal:signal,providerContext:providerContext}){try{console.log("Fetching URL:",url);const{cheerio:cheerio}=providerContext,res=yield fetch(url,{signal:signal}),data=yield res.text(),$=cheerio.load(data),catalog=[];return $(".poster-card").map((i,element)=>{const title=$(element).find(".poster-title").text(),link=$(element).parent().attr("href"),image=$(element).find(".poster-image img").attr("src");title&&link&&image&&catalog.push({title:title.replace("Download","").trim(),link:link,image:image})}),catalog}catch(err){return console.error("drive error ",err),[]}})}__name(posts,"posts"),exports.getPosts=getPosts,exports.getSearchPosts=getSearchPosts;
+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
@@ -1 +1 @@
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),posts_exports={};__export(posts_exports,{getPosts:()=>getPosts,getSearchPosts:()=>getSearchPosts});var headers={Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","Cache-Control":"no-store","Accept-Language":"en-US,en;q=0.9",DNT:"1","sec-ch-ua":'"Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"',"sec-ch-ua-mobile":"?0","sec-ch-ua-platform":'"Windows"',"Sec-Fetch-Dest":"document","Sec-Fetch-Mode":"navigate",Cookie:"popads_user_id=6ba8fe60a481387a3249f05aa058822d","Sec-Fetch-Site":"none","Sec-Fetch-User":"?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"},getPosts=__name(function(_0){return __async(this,arguments,function*({filter:filter,page:page,signal:signal,providerContext:providerContext}){const{getBaseUrl:getBaseUrl}=providerContext;return posts(`${(yield getBaseUrl("Topmovies"))+filter}/page/${page}/`,signal,providerContext)})},"getPosts"),getSearchPosts=__name(function(_0){return __async(this,arguments,function*({searchQuery:searchQuery,page:page,signal:signal,providerContext:providerContext}){const{getBaseUrl:getBaseUrl}=providerContext;return posts(`${yield getBaseUrl("Topmovies")}/search/${searchQuery}/page/${page}/`,signal,providerContext)})},"getSearchPosts");function posts(url,signal,providerContext){return __async(this,null,function*(){try{const{axios:axios,cheerio:cheerio}=providerContext,data=(yield axios.get(url,{headers:headers,signal:signal})).data,$=cheerio.load(data),catalog=[];return $(".post-cards").find("article").map((i,element)=>{const title=$(element).find("a").attr("title"),link=$(element).find("a").attr("href"),image=$(element).find("img").attr("data-src")||$(element).find("img").attr("src")||"";title&&link&&catalog.push({title:title.replace("Download","").trim(),link:link,image:image})}),catalog}catch(err){return console.error("mod error ",err),[]}})}__name(posts,"posts"),exports.getPosts=getPosts,exports.getSearchPosts=getSearchPosts;
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),posts_exports={};__export(posts_exports,{getPosts:()=>getPosts,getSearchPosts:()=>getSearchPosts});var headers={Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","Cache-Control":"no-store","Accept-Language":"en-US,en;q=0.9",DNT:"1","sec-ch-ua":'"Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"',"sec-ch-ua-mobile":"?0","sec-ch-ua-platform":'"Windows"',"Sec-Fetch-Dest":"document","Sec-Fetch-Mode":"navigate","Sec-Fetch-Site":"none","Sec-Fetch-User":"?1","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 Edg/148.0.0.0"},getPosts=__name(function(_0){return __async(this,arguments,function*({filter:filter,page:page,signal:signal,providerContext:providerContext}){const{getBaseUrl:getBaseUrl}=providerContext;return posts(`${(yield getBaseUrl("Topmovies"))+filter}/page/${page}/`,signal,providerContext)})},"getPosts"),getSearchPosts=__name(function(_0){return __async(this,arguments,function*({searchQuery:searchQuery,page:page,signal:signal,providerContext:providerContext}){const{getBaseUrl:getBaseUrl}=providerContext;return posts(`${yield getBaseUrl("Topmovies")}/search/${searchQuery}/page/${page}/`,signal,providerContext)})},"getSearchPosts");function posts(url,signal,providerContext){return __async(this,null,function*(){try{const{axios:axios,cheerio:cheerio}=providerContext,data=(yield axios.get(url,{headers:headers,signal:signal})).data,$=cheerio.load(data),catalog=[];return $(".post-cards").find("article").map((i,element)=>{const title=$(element).find("a").attr("title"),link=$(element).find("a").attr("href"),image=$(element).find("img").attr("data-src")||$(element).find("img").attr("src")||"";title&&link&&catalog.push({title:title.replace("Download","").trim(),link:link,image:image})}),catalog}catch(err){return console.error("mod error ",err),[]}})}__name(posts,"posts"),exports.getPosts=getPosts,exports.getSearchPosts=getSearchPosts;
+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
+14 -14
View File
@@ -2,7 +2,7 @@
{
"display_name": "VegaMovies",
"value": "vega",
"version": "2.7",
"version": "2.8",
"icon": "",
"type": "global",
"disabled": false
@@ -18,7 +18,7 @@
{
"display_name": "MoviesDrive",
"value": "drive",
"version": "1.8",
"version": "2.0",
"icon": "",
"type": "global",
"disabled": false
@@ -34,7 +34,7 @@
{
"display_name": "4khdHub",
"value": "4khdhub",
"version": "2.1",
"version": "2.2",
"icon": "",
"type": "global",
"disabled": false
@@ -42,7 +42,7 @@
{
"display_name": "Cinewood",
"value": "1cinevood",
"version": "1.3",
"version": "1.4",
"icon": "",
"type": "global",
"disabled": false
@@ -58,7 +58,7 @@
{
"display_name": "KatMoviesHd",
"value": "katmovies",
"version": "1.5",
"version": "1.6",
"icon": "",
"type": "global",
"disabled": false
@@ -90,7 +90,7 @@
{
"display_name": "CinemaLuxe",
"value": "cinemaLuxe",
"version": "1.6",
"version": "1.7",
"icon": "",
"type": "global",
"disabled": true
@@ -114,7 +114,7 @@
{
"display_name": "Movies4U",
"value": "movies4u",
"version": "1.4",
"version": "1.5",
"icon": "",
"type": "global",
"disabled": false
@@ -130,7 +130,7 @@
{
"display_name": "Zeefliz",
"value": "zeefliz",
"version": "1.4",
"version": "1.5",
"icon": "",
"type": "global",
"disabled": false
@@ -138,7 +138,7 @@
{
"display_name": "KatMovieFix",
"value": "katMovieFix",
"version": "1.5",
"version": "1.6",
"icon": "",
"type": "global",
"disabled": true
@@ -170,7 +170,7 @@
{
"display_name": "HdHub4u",
"value": "hdhub4u",
"version": "1.8",
"version": "1.9",
"icon": "",
"type": "global",
"disabled": false
@@ -290,7 +290,7 @@
{
"display_name": "RogMovies",
"value": "luxMovies",
"version": "2.2",
"version": "2.3",
"icon": "",
"type": "india",
"disabled": false
@@ -298,7 +298,7 @@
{
"display_name": "TopMovies",
"value": "topmovies",
"version": "1.1",
"version": "1.2",
"icon": "",
"type": "india",
"disabled": false
@@ -314,7 +314,7 @@
{
"display_name": "SkyMovieHD",
"value": "skyMovieHD",
"version": "1.5",
"version": "1.6",
"icon": "",
"type": "global",
"disabled": true
@@ -322,7 +322,7 @@
{
"display_name": "Joya9tv",
"value": "Joya9tv",
"version": "1.4",
"version": "1.5",
"icon": "",
"type": "india",
"disabled": false
+11 -1
View File
@@ -74,8 +74,18 @@ export const getEpisodes = async function ({
}
});
}
if (episodeLinks.length === 0) {
// https://hubcloud.foo/drive/gvdzmpioeeaf8mp
// find link contain hubcloud and have drive in url using regex
const hubcloudLink = html.match(
/https:\/\/hubcloud\.[^\/]+\/drive\/[^"'\s]+/i,
)?.[0];
if (hubcloudLink) {
episodeLinks.push({ title: "Play", link: hubcloudLink });
}
}
// console.log(episodeLinks);
console.log("episodeLinks:", episodeLinks);
return episodeLinks.length > 0
? episodeLinks
: [{ title: "Play", link: url }];
-1
View File
@@ -56,7 +56,6 @@ async function posts({
const title = $(element).find(".poster-title").text();
const link = $(element).parent().attr("href");
const image = $(element).find(".poster-image img").attr("src");
console.log({ title, link, image });
if (title && link && image) {
catalog.push({
title: title.replace("Download", "").trim(),
+39 -3
View File
@@ -5,6 +5,28 @@ const hubcloudDecode = function (value: string) {
return atob(value.toString());
};
const getPixelDrainUrl = (html: string) => {
const match = html.match(/var\s+pxl\s*=\s*['"]([^'"]+)['"];?/i);
return match?.[1] || "";
};
const getRedirectedPixelDrainUrl = (
...htmlSources: Array<string | undefined>
) => {
for (const html of htmlSources) {
if (!html) {
continue;
}
const redirectedUrl = getPixelDrainUrl(html);
if (redirectedUrl) {
return redirectedUrl;
}
}
return "";
};
export async function hubcloudExtractor(
link: string,
signal: AbortSignal,
@@ -16,7 +38,7 @@ export async function hubcloudExtractor(
headers["Cookie"] =
"ext_name=ojplmecpdpgccookcobabopnaifgidhf; xla=s4t; cf_clearance=woQrFGXtLfmEMBEiGUsVHrUBMT8s3cmguIzmMjmvpkg-1770053679-1.2.1.1-xBrQdciOJsweUF6F2T_OtH6jmyanN_TduQ0yslc_XqjU6RcHSxI7.YOKv6ry7oYo64868HYoULnVyww536H2eVI3R2e4wKzsky6abjPdfQPxqpUaXjxfJ02o6jl3_Vkwr4uiaU7Wy596Vdst3y78HXvVmKdIohhtPvp.vZ9_L7wvWdce0GRixjh_6JiqWmWMws46hwEt3hboaS1e1e4EoWCvj5b0M_jVwvSxBOAW5emFzvT3QrnRh4nyYmKDERnY";
console.log("hubcloudExtractor", link);
console.log("headers", headers);
// console.log("headers", headers);
const baseUrl = link.split("/").slice(0, 3).join("/");
const streamLinks: any[] = [];
const vLinkRes = await axios(`${link}`, { headers, signal });
@@ -38,7 +60,8 @@ export async function hubcloudExtractor(
signal,
redirect: "follow",
});
const $ = cheerio.load(await vcloudRes.text());
const vcloudText = await vcloudRes.text();
const $ = cheerio.load(vcloudText);
// console.log('vcloudRes', $.text());
const linkClass = $(".btn-success.btn-lg.h6,.btn-danger,.btn-secondary");
@@ -48,8 +71,21 @@ export async function hubcloudExtractor(
switch (true) {
case link?.includes("pixeld"):
console.log("Pixeldrain link found:", link);
if (!link?.includes("api")) {
const token = link.split("/").pop();
const redirectedPixelDrainUrl = getRedirectedPixelDrainUrl(
vLinkText,
vcloudText,
);
if (redirectedPixelDrainUrl) {
console.log(
"Special case for token negn6f",
redirectedPixelDrainUrl,
);
link = redirectedPixelDrainUrl;
}
const token = link.split("/").pop()?.split("?")[0];
const baseUrl = link.split("/").slice(0, -2).join("/");
link = `${baseUrl}/api/file/${token}`;
}
+2 -3
View File
@@ -12,12 +12,11 @@ const headers = {
"sec-ch-ua-platform": '"Windows"',
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
Cookie: "popads_user_id=6ba8fe60a481387a3249f05aa058822d",
"Sec-Fetch-Site": "none",
"Sec-Fetch-User": "?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",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 Edg/148.0.0.0",
};
export const getPosts = async function ({
@@ -60,7 +59,7 @@ export const getSearchPosts = async function ({
async function posts(
url: string,
signal: AbortSignal,
providerContext: ProviderContext
providerContext: ProviderContext,
): Promise<Post[]> {
try {
const { axios, cheerio } = providerContext;