feat: add extractors bundled in file refactor stream handling in multiple providers

This commit is contained in:
Himanshu
2026-02-02 23:24:38 +05:30
parent 2183412dc8
commit 13d41f9da6
220 changed files with 1300 additions and 771 deletions

View File

@@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Trending",filter:"/genre/latest-trending-releases/"},{title:"Netflix",filter:"/network/netflix/"},{title:"Amazon Prime",filter:"/network/prime-video/"},{title:"Animation",filter:"/genre/anime/"}],exports.genres=[];
exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Trending",filter:"/genre/latest-trending-releases/"},{title:"Netflix",filter:"/network/netflix/"},{title:"Amazon Prime",filter:"/network/prime-video/"},{title:"Animation",filter:"/genre/anime/"}],exports.genres=[];

View File

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

View File

@@ -1 +1 @@
"use strict";var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){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){var value;result.done?resolve(result.value):(value=result.value,value instanceof P?value:new P(function(resolve){resolve(value)})).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(_a){return __awaiter(this,arguments,void 0,function*({link:link,providerContext:providerContext}){try{const url=link,data=(yield providerContext.axios.get(url,{headers:providerContext.commonHeaders})).data,$=providerContext.cheerio.load(data),type=url.includes("tvshows")?"series":"movie",imdbId="",title=url.split("/")[4].replace(/-/g," "),image=$(".g-item").find("a").attr("href")||"",synopsis=$(".wp-content").text().trim(),tags=$(".sgeneros").children().map((i,element)=>$(element).text()).get().slice(3),rating=Number($("#repimdb").find("strong").text()).toFixed(1).toString(),links=[];return $(".custom-links").find(".ep-button-container").map((i,element)=>{var _a;const title=$(element).text().replace("⬇Download","").replace("⬇ Download","").trim(),link=$(element).find("a").attr("href");title&&link&&links.push({title:title,episodesLink:link,quality:(null===(_a=null==title?void 0:title.match(/\d+P\b/))||void 0===_a?void 0:_a[0].replace("P","p"))||""})}),0===links.length&&$(".ep-button-container:not(:has(a:contains('Click Here To Visit')))").map((i,element)=>{var _a;let title=$(element).find("a").text().replace("⬇Download","").replace("⬇ Download","").trim();title.includes("Download Now")&&(title=$(element).parent().find("h3").text().trim().replace("⬇Download","").replace("⬇ Download",""));const link=$(element).find("a").attr("href");title&&link&&links.push({title:title,episodesLink:link,quality:(null===(_a=null==title?void 0:title.match(/\d+P\b/))||void 0===_a?void 0:_a[0].replace("P","p"))||""})}),{title:title,tags:tags,rating:rating,synopsis:synopsis,image:image,imdbId:imdbId,type:type,linkList:links}}catch(err){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta;
var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){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){var value;result.done?resolve(result.value):(value=result.value,value instanceof P?value:new P(function(resolve){resolve(value)})).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};exports.getMeta=void 0;const getMeta=function(_a){return __awaiter(this,arguments,void 0,function*({link:link,providerContext:providerContext}){try{const url=link,data=(yield providerContext.axios.get(url,{headers:providerContext.commonHeaders})).data,$=providerContext.cheerio.load(data),type=url.includes("tvshows")?"series":"movie",imdbId="",title=url.split("/")[4].replace(/-/g," "),image=$(".g-item").find("a").attr("href")||"",synopsis=$(".wp-content").text().trim(),tags=$(".sgeneros").children().map((i,element)=>$(element).text()).get().slice(3),rating=Number($("#repimdb").find("strong").text()).toFixed(1).toString(),links=[];return $(".custom-links").find(".ep-button-container").map((i,element)=>{var _a;const title=$(element).text().replace("⬇Download","").replace("⬇ Download","").trim(),link=$(element).find("a").attr("href");title&&link&&links.push({title:title,episodesLink:link,quality:(null===(_a=null==title?void 0:title.match(/\d+P\b/))||void 0===_a?void 0:_a[0].replace("P","p"))||""})}),0===links.length&&$(".ep-button-container:not(:has(a:contains('Click Here To Visit')))").map((i,element)=>{var _a;let title=$(element).find("a").text().replace("⬇Download","").replace("⬇ Download","").trim();title.includes("Download Now")&&(title=$(element).parent().find("h3").text().trim().replace("⬇Download","").replace("⬇ Download",""));const link=$(element).find("a").attr("href");title&&link&&links.push({title:title,episodesLink:link,quality:(null===(_a=null==title?void 0:title.match(/\d+P\b/))||void 0===_a?void 0:_a[0].replace("P","p"))||""})}),{title:title,tags:tags,rating:rating,synopsis:synopsis,image:image,imdbId:imdbId,type:type,linkList:links}}catch(err){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta;

View File

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

File diff suppressed because one or more lines are too long