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:"Latest",filter:""},{title:"Netflix",filter:"/category/netflix"},{title:"Animated",filter:"/category/animated"},{title:"Amazon Prime",filter:"/category/amazon-prime"}],exports.genres=[{title:"Action",filter:"/category/action"},{title:"Crime",filter:"/category/crime"},{title:"Comedy",filter:"/category/comedy"},{title:"Drama",filter:"/category/drama"},{title:"Horror",filter:"/category/horror"},{title:"Family",filter:"/category/family"},{title:"Sci-Fi",filter:"/category/sifi"},{title:"Thriller",filter:"/category/triller"},{title:"Romance",filter:"/category/romance"},{title:"Fight",filter:"/category/fight"}];
exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Latest",filter:""},{title:"Netflix",filter:"/category/netflix"},{title:"Animated",filter:"/category/animated"},{title:"Amazon Prime",filter:"/category/amazon-prime"}],exports.genres=[{title:"Action",filter:"/category/action"},{title:"Crime",filter:"/category/crime"},{title:"Comedy",filter:"/category/comedy"},{title:"Drama",filter:"/category/drama"},{title:"Horror",filter:"/category/horror"},{title:"Family",filter:"/category/family"},{title:"Sci-Fi",filter:"/category/sifi"},{title:"Thriller",filter:"/category/triller"},{title:"Romance",filter:"/category/romance"},{title:"Fight",filter:"/category/fight"}];

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,exports.extractKmhdLink=extractKmhdLink;const getEpisodes=function(_a){return __awaiter(this,arguments,void 0,function*({url:url,providerContext:providerContext}){var _b;const{axios:axios,cheerio:cheerio}=providerContext,episodesLink=[];try{if(url.includes("gdflix")){const baseUrl=null===(_b=url.split("/pack"))||void 0===_b?void 0:_b[0],data=(yield axios.get(url)).data,$=cheerio.load(data),links=$(".list-group-item");if(null==links||links.map((i,link)=>{episodesLink.push({title:$(link).text()||"",link:baseUrl+$(link).find("a").attr("href")||""})}),episodesLink.length>0)return episodesLink}if(url.includes("/pack")){const epIds=yield extractKmhdEpisodes(url,providerContext);null==epIds||epIds.forEach((id,index)=>{episodesLink.push({title:`Episode ${index+1}`,link:url.split("/pack")[0]+"/file/"+id})})}const episodeData=(yield axios.get(url,{headers:{Cookie:"_ga_GNR438JY8N=GS1.1.1722240350.5.0.1722240350.0.0.0; _ga=GA1.1.372196696.1722150754; unlocked=true"}})).data,$=cheerio.load(episodeData),links=$(".autohyperlink");return null==links||links.map((i,link)=>{episodesLink.push({title:$(link).parent().children().remove().end().text()||"",link:$(link).attr("href")||""})}),episodesLink}catch(err){return[]}})};function extractKmhdLink(katlink,providerContext){return __awaiter(this,void 0,void 0,function*(){const{axios:axios}=providerContext,data=(yield axios.get(katlink)).data,hubDriveRes=data.match(/hubdrive_res:\s*"([^"]+)"/)[1];return data.match(/hubdrive_res\s*:\s*{[^}]*?link\s*:\s*"([^"]+)"/)[1]+hubDriveRes})}function extractKmhdEpisodes(katlink,providerContext){return __awaiter(this,void 0,void 0,function*(){const{axios:axios}=providerContext;return(yield axios.get(katlink)).data.match(/[\w]+_[a-f0-9]{8}/g)})}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,exports.extractKmhdLink=extractKmhdLink;const getEpisodes=function(_a){return __awaiter(this,arguments,void 0,function*({url:url,providerContext:providerContext}){var _b;const{axios:axios,cheerio:cheerio}=providerContext,episodesLink=[];try{if(url.includes("gdflix")){const baseUrl=null===(_b=url.split("/pack"))||void 0===_b?void 0:_b[0],data=(yield axios.get(url)).data,$=cheerio.load(data),links=$(".list-group-item");if(null==links||links.map((i,link)=>{episodesLink.push({title:$(link).text()||"",link:baseUrl+$(link).find("a").attr("href")||""})}),episodesLink.length>0)return episodesLink}if(url.includes("/pack")){const epIds=yield extractKmhdEpisodes(url,providerContext);null==epIds||epIds.forEach((id,index)=>{episodesLink.push({title:`Episode ${index+1}`,link:url.split("/pack")[0]+"/file/"+id})})}const episodeData=(yield axios.get(url,{headers:{Cookie:"_ga_GNR438JY8N=GS1.1.1722240350.5.0.1722240350.0.0.0; _ga=GA1.1.372196696.1722150754; unlocked=true"}})).data,$=cheerio.load(episodeData),links=$(".autohyperlink");return null==links||links.map((i,link)=>{episodesLink.push({title:$(link).parent().children().remove().end().text()||"",link:$(link).attr("href")||""})}),episodesLink}catch(err){return[]}})};function extractKmhdLink(katlink,providerContext){return __awaiter(this,void 0,void 0,function*(){const{axios:axios}=providerContext,data=(yield axios.get(katlink)).data,hubDriveRes=data.match(/hubdrive_res:\s*"([^"]+)"/)[1];return data.match(/hubdrive_res\s*:\s*{[^}]*?link\s*:\s*"([^"]+)"/)[1]+hubDriveRes})}function extractKmhdEpisodes(katlink,providerContext){return __awaiter(this,void 0,void 0,function*(){const{axios:axios}=providerContext;return(yield axios.get(katlink)).data.match(/[\w]+_[a-f0-9]{8}/g)})}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}){var _b;try{const{axios:axios,cheerio:cheerio}=providerContext,url=link,data=(yield axios.get(url)).data,$=cheerio.load(data),container=$(".yQ8hqd.ksSzJd.LoQAYe").html()?$(".yQ8hqd.ksSzJd.LoQAYe"):$(".FxvUNb"),imdbId=(null===(_b=container.find('a[href*="imdb.com/title/tt"]:not([href*="imdb.com/title/tt/"])').attr("href"))||void 0===_b?void 0:_b.split("/")[4])||"",title=container.find('li:contains("Name")').children().remove().end().text(),type=$(".yQ8hqd.ksSzJd.LoQAYe").html()?"series":"movie",synopsis=container.find('li:contains("Stars")').text(),image=$('h4:contains("SCREENSHOTS")').next().find("img").attr("src")||"",links=[],directLink=[];return $(".entry-content").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")||"",dlTitle=$(element).find("span").text();link.trim().length>0&&dlTitle.includes("Episode ")&&directLink.push({title:dlTitle,link:dlLink})}),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"),quality=(null===(_a=$(element).text().match(/\b(480p|720p|1080p|2160p)\b/i))||void 0===_a?void 0:_a[0])||"",title=$(element).text();link&&title.includes("")&&links.push({quality:quality,title:title,episodesLink:link})}),0===links.length&&"movie"===type&&$(".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"),quality=(null===(_a=$(element).text().match(/\b(480p|720p|1080p|2160p)\b/i))||void 0===_a?void 0:_a[0])||"",title=$(element).text();link&&!title.includes("Online")&&links.push({quality:quality,title:title,directLinks:[{link:link,title:title,type:"movie"}]})}),{title:title,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}){var _b;try{const{axios:axios,cheerio:cheerio}=providerContext,url=link,data=(yield axios.get(url)).data,$=cheerio.load(data),container=$(".yQ8hqd.ksSzJd.LoQAYe").html()?$(".yQ8hqd.ksSzJd.LoQAYe"):$(".FxvUNb"),imdbId=(null===(_b=container.find('a[href*="imdb.com/title/tt"]:not([href*="imdb.com/title/tt/"])').attr("href"))||void 0===_b?void 0:_b.split("/")[4])||"",title=container.find('li:contains("Name")').children().remove().end().text(),type=$(".yQ8hqd.ksSzJd.LoQAYe").html()?"series":"movie",synopsis=container.find('li:contains("Stars")').text(),image=$('h4:contains("SCREENSHOTS")').next().find("img").attr("src")||"",links=[],directLink=[];return $(".entry-content").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")||"",dlTitle=$(element).find("span").text();link.trim().length>0&&dlTitle.includes("Episode ")&&directLink.push({title:dlTitle,link:dlLink})}),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"),quality=(null===(_a=$(element).text().match(/\b(480p|720p|1080p|2160p)\b/i))||void 0===_a?void 0:_a[0])||"",title=$(element).text();link&&title.includes("")&&links.push({quality:quality,title:title,episodesLink:link})}),0===links.length&&"movie"===type&&$(".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"),quality=(null===(_a=$(element).text().match(/\b(480p|720p|1080p|2160p)\b/i))||void 0===_a?void 0:_a[0])||"",title=$(element).text();link&&!title.includes("Online")&&links.push({quality:quality,title:title,directLinks:[{link:link,title:title,type:"movie"}]})}),{title:title,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}){const{getBaseUrl:getBaseUrl,cheerio:cheerio}=providerContext;return posts({url:`${(yield getBaseUrl("kat"))+filter}/page/${page}/`,signal:signal,cheerio:cheerio})})};exports.getPosts=getPosts;const getSearchPosts=function(_a){return __awaiter(this,arguments,void 0,function*({searchQuery:searchQuery,page:page,signal:signal,providerContext:providerContext}){const{getBaseUrl:getBaseUrl,cheerio:cheerio}=providerContext;return posts({url:`${yield getBaseUrl("kat")}/page/${page}/?s=${searchQuery}`,signal:signal,cheerio:cheerio})})};function posts(_a){return __awaiter(this,arguments,void 0,function*({url:url,signal:signal,cheerio:cheerio}){try{const res=yield fetch(url,{signal:signal}),data=yield res.text(),$=cheerio.load(data),catalog=[];return $(".recent-posts").children().map((i,element)=>{const title=$(element).find("img").attr("alt"),link=$(element).find("a").attr("href"),image=$(element).find("img").attr("src");title&&link&&image&&catalog.push({title:title.replace("Download","").trim(),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}){const{getBaseUrl:getBaseUrl,cheerio:cheerio}=providerContext;return posts({url:`${(yield getBaseUrl("kat"))+filter}/page/${page}/`,signal:signal,cheerio:cheerio})})};exports.getPosts=getPosts;const getSearchPosts=function(_a){return __awaiter(this,arguments,void 0,function*({searchQuery:searchQuery,page:page,signal:signal,providerContext:providerContext}){const{getBaseUrl:getBaseUrl,cheerio:cheerio}=providerContext;return posts({url:`${yield getBaseUrl("kat")}/page/${page}/?s=${searchQuery}`,signal:signal,cheerio:cheerio})})};function posts(_a){return __awaiter(this,arguments,void 0,function*({url:url,signal:signal,cheerio:cheerio}){try{const res=yield fetch(url,{signal:signal}),data=yield res.text(),$=cheerio.load(data),catalog=[];return $(".recent-posts").children().map((i,element)=>{const title=$(element).find("img").attr("alt"),link=$(element).find("a").attr("href"),image=$(element).find("img").attr("src");title&&link&&image&&catalog.push({title:title.replace("Download","").trim(),link:link,image:image})}),catalog}catch(err){return[]}})}exports.getSearchPosts=getSearchPosts;

File diff suppressed because one or more lines are too long