From 35f1e57a0bd5deeb98842f03162defdd0272a7b2 Mon Sep 17 00:00:00 2001 From: himanshu8443 Date: Fri, 11 Jul 2025 19:45:14 +0530 Subject: [PATCH] unminify --- dist/4khdhub/catalog.js | 23 ++- dist/4khdhub/meta.js | 98 +++++++++++- dist/4khdhub/posts.js | 69 ++++++++- dist/4khdhub/stream.js | 165 +++++++++++++++++++- dist/autoEmbed/catalog.js | 23 ++- dist/autoEmbed/meta.js | 100 +++++++++++- dist/autoEmbed/posts.js | 103 +++++++++++- dist/autoEmbed/stream.js | 235 +++++++++++++++++++++++++++- dist/cinemaLuxe/catalog.js | 23 ++- dist/cinemaLuxe/episodes.js | 78 +++++++++- dist/cinemaLuxe/meta.js | 107 ++++++++++++- dist/cinemaLuxe/posts.js | 71 ++++++++- dist/cinemaLuxe/stream.js | 79 +++++++++- dist/dooflix/catalog.js | 15 +- dist/dooflix/meta.js | 93 ++++++++++- dist/dooflix/posts.js | 155 ++++++++++++++++++- dist/dooflix/stream.js | 52 ++++++- dist/drive/catalog.js | 64 +++++++- dist/drive/episodes.js | 46 +++++- dist/drive/meta.js | 86 ++++++++++- dist/drive/posts.js | 61 +++++++- dist/drive/stream.js | 46 +++++- dist/filmyfly/catalog.js | 19 ++- dist/filmyfly/episodes.js | 44 +++++- dist/filmyfly/meta.js | 64 +++++++- dist/filmyfly/posts.js | 62 +++++++- dist/filmyfly/stream.js | 52 ++++++- dist/flixhq/catalog.js | 19 ++- dist/flixhq/meta.js | 65 +++++++- dist/flixhq/posts.js | 61 +++++++- dist/flixhq/stream.js | 69 ++++++++- dist/gdflixExtractor.js | 212 ++++++++++++++++++++++++- dist/getBaseUrl.js | 39 ++++- dist/gofileExtracter.js | 49 +++++- dist/guardahd/catalog.js | 15 +- dist/guardahd/meta.js | 100 +++++++++++- dist/guardahd/posts.js | 80 +++++++++- dist/guardahd/stream.js | 118 +++++++++++++- dist/hdhub4u/catalog.js | 64 +++++++- dist/hdhub4u/meta.js | 128 ++++++++++++++- dist/hdhub4u/posts.js | 69 ++++++++- dist/hdhub4u/stream.js | 165 +++++++++++++++++++- dist/headers.js | 12 +- dist/hiAnime/catalog.js | 23 ++- dist/hiAnime/meta.js | 87 ++++++++++- dist/hiAnime/posts.js | 58 ++++++- dist/hiAnime/stream.js | 67 +++++++- dist/hubcloudExtractor.js | 133 +++++++++++++++- dist/katmovies/catalog.js | 64 +++++++- dist/katmovies/episodes.js | 87 ++++++++++- dist/katmovies/meta.js | 129 +++++++++++++++- dist/katmovies/posts.js | 60 ++++++- dist/katmovies/stream.js | 105 ++++++++++++- dist/kissKh/catalog.js | 23 ++- dist/kissKh/meta.js | 61 +++++++- dist/kissKh/posts.js | 74 ++++++++- dist/kissKh/stream.js | 53 ++++++- dist/luxMovies/catalog.js | 104 ++++++++++++- dist/luxMovies/episodes.js | 46 +++++- dist/luxMovies/meta.js | 128 ++++++++++++++- dist/luxMovies/posts.js | 86 ++++++++++- dist/luxMovies/stream.js | 104 ++++++++++++- dist/mod/catalog.js | 88 ++++++++++- dist/mod/episodes.js | 61 +++++++- dist/mod/meta.js | 76 ++++++++- dist/mod/posts.js | 60 ++++++- dist/mod/stream.js | 275 ++++++++++++++++++++++++++++++++- dist/moviesApi/stream.js | 98 +++++++++++- dist/moviezwap/catalog.js | 23 ++- dist/moviezwap/episodes.js | 47 +++++- dist/moviezwap/meta.js | 107 ++++++++++++- dist/moviezwap/posts.js | 58 ++++++- dist/moviezwap/stream.js | 36 ++++- dist/multi/catalog.js | 80 +++++++++- dist/multi/meta.js | 88 ++++++++++- dist/multi/posts.js | 61 +++++++- dist/multi/stream.js | 140 ++++++++++++++++- dist/netflixMirror/catalog.js | 19 ++- dist/netflixMirror/episodes.js | 65 +++++++- dist/netflixMirror/meta.js | 67 +++++++- dist/netflixMirror/posts.js | 109 ++++++++++++- dist/netflixMirror/stream.js | 50 +++++- dist/primeMirror/catalog.js | 19 ++- dist/primeMirror/episodes.js | 63 +++++++- dist/primeMirror/meta.js | 67 +++++++- dist/primeMirror/posts.js | 109 ++++++++++++- dist/primeMirror/stream.js | 50 +++++- dist/primewire/catalog.js | 19 ++- dist/primewire/meta.js | 90 ++++++++++- dist/primewire/posts.js | 64 +++++++- dist/primewire/stream.js | 138 ++++++++++++++++- dist/protonMovies/catalog.js | 23 ++- dist/protonMovies/meta.js | 103 +++++++++++- dist/protonMovies/posts.js | 86 ++++++++++- dist/protonMovies/stream.js | 172 ++++++++++++++++++++- dist/providerContext.js | 67 +++++++- dist/ridoMovies/catalog.js | 15 +- dist/ridoMovies/meta.js | 95 +++++++++++- dist/ridoMovies/posts.js | 80 +++++++++- dist/ridoMovies/stream.js | 72 ++++++++- dist/ringz/catalog.js | 19 ++- dist/ringz/meta.js | 96 +++++++++++- dist/ringz/posts.js | 169 +++++++++++++++++++- dist/ringz/stream.js | 26 +++- dist/showbox/catalog.js | 19 ++- dist/showbox/episodes.js | 55 ++++++- dist/showbox/meta.js | 77 ++++++++- dist/showbox/posts.js | 63 +++++++- dist/showbox/stream.js | 48 +++++- dist/superVideoExtractor.js | 51 +++++- dist/tokyoInsider/catalog.js | 15 +- dist/tokyoInsider/meta.js | 69 ++++++++- dist/tokyoInsider/posts.js | 66 +++++++- dist/tokyoInsider/stream.js | 42 ++++- dist/topmovies/catalog.js | 88 ++++++++++- dist/topmovies/episodes.js | 61 +++++++- dist/topmovies/meta.js | 76 ++++++++- dist/topmovies/posts.js | 80 +++++++++- dist/topmovies/stream.js | 275 ++++++++++++++++++++++++++++++++- dist/types.js | 3 +- dist/uhd/catalog.js | 40 ++++- dist/uhd/meta.js | 122 ++++++++++++++- dist/uhd/posts.js | 77 ++++++++- dist/uhd/stream.js | 207 ++++++++++++++++++++++++- dist/vadapav/catalog.js | 19 ++- dist/vadapav/episodes.js | 43 +++++- dist/vadapav/meta.js | 79 +++++++++- dist/vadapav/posts.js | 73 ++++++++- dist/vadapav/stream.js | 31 +++- dist/vega/catalog.js | 104 ++++++++++++- dist/vega/episodes.js | 46 +++++- dist/vega/meta.js | 128 ++++++++++++++- dist/vega/posts.js | 84 +++++++++- dist/vega/stream.js | 104 ++++++++++++- dist/world4u/catalog.js | 30 +++- dist/world4u/episodes.js | 49 +++++- dist/world4u/meta.js | 90 ++++++++++- dist/world4u/posts.js | 64 +++++++- dist/world4u/stream.js | 199 +++++++++++++++++++++++- 139 files changed, 10578 insertions(+), 139 deletions(-) diff --git a/dist/4khdhub/catalog.js b/dist/4khdhub/catalog.js index 55b6bcc..44e9eae 100644 --- a/dist/4khdhub/catalog.js +++ b/dist/4khdhub/catalog.js @@ -1 +1,22 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Popular Movies",filter:"/category/new-movies-10810.html"},{title:"Latest TV Shows",filter:"/category/new-series-10811.html"},{title:"Anime",filter:"/category/anime-10812.html"},{title:"4K HDR",filter:"/category/4k-hdr-10776.html"}],exports.genres=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Popular Movies", + filter: "/category/new-movies-10810.html", + }, + { + title: "Latest TV Shows", + filter: "/category/new-series-10811.html", + }, + { + title: "Anime", + filter: "/category/anime-10812.html", + }, + { + title: "4K HDR", + filter: "/category/4k-hdr-10776.html", + }, +]; +exports.genres = []; diff --git a/dist/4khdhub/meta.js b/dist/4khdhub/meta.js index 610bf60..f0ac9e0 100644 --- a/dist/4khdhub/meta.js +++ b/dist/4khdhub/meta.js @@ -1 +1,97 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(o,s){function r(t){try{d(n.next(t))}catch(t){s(t)}}function a(t){try{d(n.throw(t))}catch(t){s(t)}}function d(t){var e;t.done?o(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(r,a)}d((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){try{const{axios:i,cheerio:n,getBaseUrl:o}=e,s=`${yield o("4khdhub")}${t}`,r=(yield i.get(s)).data,a=n.load(r),d=a(".season-content").length>0?"series":"movie",l="",c=a(".page-title").text()||"",f=a(".poster-image").find("img").attr("src")||"",p=a(".content-section").find("p").first().text().trim()||"",u=[];return"series"===d?a(".season-item").map((t,e)=>{const i=a(e).find(".episode-title").text();let n=[];a(e).find(".episode-download-item").map((t,e)=>{const i=a(e).find(".episode-file-info").text().trim().replace("\n"," "),o=a(e).find(".episode-links").find("a:contains('HubDrive')").attr("href");i&&o&&n.push({title:i,link:o})}),i&&n.length>0&&u.push({title:i,directLinks:n})}):a(".download-item").map((t,e)=>{const i=a(e).find(".flex-1.text-left.font-semibold").text().trim(),n=a(e).find(".grid.grid-cols-2.gap-2").find("a:contains('HubDrive')").attr("href");i&&n&&u.push({title:i,directLinks:[{title:i,link:n}]})}),{title:c,synopsis:p,image:f,imdbId:l,type:d,linkList:u}}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + try { + const { axios, cheerio, getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("4khdhub"); + const url = `${baseUrl}${link}`; + const res = yield axios.get(url); + const data = res.data; + const $ = cheerio.load(data); + const type = $(".season-content").length > 0 ? "series" : "movie"; + const imdbId = ""; + const title = $(".page-title").text() || ""; + const image = $(".poster-image").find("img").attr("src") || ""; + const synopsis = $(".content-section").find("p").first().text().trim() || ""; + // Links + const links = []; + if (type === "series") { + $(".season-item").map((i, element) => { + const title = $(element).find(".episode-title").text(); + let directLinks = []; + $(element) + .find(".episode-download-item") + .map((i, element) => { + const title = $(element) + .find(".episode-file-info") + .text() + .trim() + .replace("\n", " "); + const link = $(element) + .find(".episode-links") + .find("a:contains('HubDrive')") + .attr("href"); + console.log("title⭐", title, "link", link); + if (title && link) { + directLinks.push({ title, link }); + } + }); + if (title && directLinks.length > 0) { + links.push({ + title, + directLinks: directLinks, + }); + } + }); + } + else { + $(".download-item").map((i, element) => { + const title = $(element) + .find(".flex-1.text-left.font-semibold") + .text() + .trim(); + const link = $(element) + .find(".grid.grid-cols-2.gap-2") + .find("a:contains('HubDrive')") + .attr("href"); + // console.log("title⭐", title, "link", link); + if (title && link) { + links.push({ title, directLinks: [{ title, link }] }); + } + }); + } + // 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; diff --git a/dist/4khdhub/posts.js b/dist/4khdhub/posts.js index aea9361..c40cb17 100644 --- a/dist/4khdhub/posts.js +++ b/dist/4khdhub/posts.js @@ -1 +1,68 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{c(n.next(t))}catch(t){o(t)}}function a(t){try{c(n.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,signal:r,providerContext:n}){const{getBaseUrl:i,cheerio:o}=n;return posts({url:`${(yield i("4khdhub"))+t}/page/${e}.html`,signal:r,cheerio:o})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:r,providerContext:n}){const{getBaseUrl:i,cheerio:o}=n;return posts({url:`${yield i("4khdhub")}/page/${e}.html?s=${t}`,signal:r,cheerio:o})})};function posts(t){return __awaiter(this,arguments,void 0,function*({url:t,signal:e,cheerio:r}){try{const n=yield fetch(t,{signal:e}),i=yield n.text(),o=r.load(i),s=[];return o(".card-grid").children().map((t,e)=>{const r=o(e).find(".movie-card-title").text(),n=o(e).attr("href"),i=o(e).find("img").attr("src");r&&n&&i&&s.push({title:r,link:n,image:i})}),s}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) { + const { getBaseUrl, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("4khdhub"); + const url = `${baseUrl + filter}/page/${page}.html`; + console.log("4khdhubGetPosts url", url); + return posts({ url, signal, cheerio }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) { + const { getBaseUrl, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("4khdhub"); + const url = `${baseUrl}/page/${page}.html?s=${searchQuery}`; + return posts({ url, signal, cheerio }); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ url, signal, cheerio, }) { + try { + const res = yield fetch(url, { signal }); + const data = yield res.text(); + const $ = cheerio.load(data); + const catalog = []; + $(".card-grid") + .children() + .map((i, element) => { + const title = $(element).find(".movie-card-title").text(); + const link = $(element).attr("href"); + const image = $(element).find("img").attr("src"); + // console.log( + // "4khdhubGetPosts title", + // title, + // "link", + // link, + // "image", + // image + // ); + if (title && link && image) { + catalog.push({ + title: title, + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + console.error("4khdhubGetPosts error ", err); + return []; + } + }); +} diff --git a/dist/4khdhub/stream.js b/dist/4khdhub/stream.js index f45d992..3d9790b 100644 --- a/dist/4khdhub/stream.js +++ b/dist/4khdhub/stream.js @@ -1 +1,164 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))(function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function d(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(a,d)}c((n=n.apply(e,t||[])).next())})};function getStream(e){return __awaiter(this,arguments,void 0,function*({link:e,signal:t,providerContext:r}){var n,i,o,a;const{axios:d,cheerio:c,extractors:s,commonHeaders:l}=r,{hubcloudExtracter:u}=s;let h="";if(e.includes("hubdrive")){const r=(yield d.get(e,{headers:l,signal:t})).data;h=c.load(r)(".btn.btn-primary.btn-user.btn-success1.m-1").attr("href")||e}else{const r=decodeString(null===(o=null===(i=null===(n=(yield d.get(e,{headers:l,signal:t})).data.split("s('o','"))||void 0===n?void 0:n[1])||void 0===i?void 0:i.split("',180"))||void 0===o?void 0:o[0]);e=atob(null==r?void 0:r.o);const a=yield getRedirectLinks(e,t,l),s=(yield d.get(a,{headers:l,signal:t})).data;if(h=c.load(s)('h3:contains("1080p")').find("a").attr("href")||s.match(/href="(https:\/\/hubcloud\.[^\/]+\/drive\/[^"]+)"/)[1],h.includes("hubdrive")){const e=(yield d.get(h,{headers:l,signal:t})).data;h=c.load(e)(".btn.btn-primary.btn-user.btn-success1.m-1").attr("href")||h}}const f=(null===(a=(yield d.get(h,{headers:l,signal:t})).data.match(//i))||void 0===a?void 0:a[1])||h;try{return yield u(f,t)}catch(e){return[]}})}Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=getStream,exports.getRedirectLinks=getRedirectLinks,exports.decodeString=decodeString;const encode=function(e){return btoa(e.toString())},decode=function(e){return void 0===e?"":atob(e.toString())},pen=function(e){return e.replace(/[a-zA-Z]/g,function(e){return String.fromCharCode((e<="Z"?90:122)>=(e=e.charCodeAt(0)+13)?e:e-26)})},abortableTimeout=(e,{signal:t}={})=>new Promise((r,n)=>{if(t&&t.aborted)return n(new Error("Aborted"));const i=setTimeout(r,e);t&&t.addEventListener("abort",()=>{clearTimeout(i),n(new Error("Aborted"))})});function getRedirectLinks(e,t,r){return __awaiter(this,void 0,void 0,function*(){try{const a=yield fetch(e,{headers:r,signal:t}),d=yield a.text();for(var n,i=/ck\('_wp_http_\d+','([^']+)'/g,o="";null!==(n=i.exec(d));)o+=n[1];const c=decode(pen(decode(decode(o)))),s=JSON.parse(c),l=encode(null==s?void 0:s.data),u=(null==s?void 0:s.wp_http1)+"?re="+l;let h=abortableTimeout(1e3*(Number(null==s?void 0:s.total_time)+3),{signal:t});yield h;let f="Invalid Request";for(;f.includes("Invalid Request");){const e=yield fetch(u,{headers:r,signal:t}),n=yield e.text();if(!n.includes("Invalid Request")){f=n.match(/var reurl = "([^"]+)"/)||"";break}}return u||e}catch(t){return e}})}function rot13(e){return e.replace(/[a-zA-Z]/g,function(e){const t=e.charCodeAt(0),r=e<="Z"?65:97;return String.fromCharCode((t-r+13)%26+r)})}function decodeString(e){try{let t=atob(e);return t=atob(t),t=rot13(t),t=atob(t),JSON.parse(t)}catch(e){return null}} \ No newline at end of file +"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 }); +exports.getStream = getStream; +exports.getRedirectLinks = getRedirectLinks; +exports.decodeString = decodeString; +function getStream(_a) { + return __awaiter(this, arguments, void 0, function* ({ link, signal, providerContext, }) { + var _b, _c, _d, _e; + const { axios, cheerio, extractors, commonHeaders: headers, } = providerContext; + const { hubcloudExtracter } = extractors; + let hubdriveLink = ""; + if (link.includes("hubdrive")) { + const hubdriveRes = yield axios.get(link, { headers, signal }); + const hubdriveText = hubdriveRes.data; + const $ = cheerio.load(hubdriveText); + hubdriveLink = + $(".btn.btn-primary.btn-user.btn-success1.m-1").attr("href") || link; + } + else { + const res = yield axios.get(link, { headers, signal }); + const text = res.data; + 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]; + const decodedString = decodeString(encryptedString); + link = atob(decodedString === null || decodedString === void 0 ? void 0 : decodedString.o); + const redirectLink = yield getRedirectLinks(link, signal, headers); + const redirectLinkRes = yield 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 = 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(//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) { + return btoa(value.toString()); +}; +const decode = function (value) { + if (value === undefined) { + return ""; + } + return atob(value.toString()); +}; +const pen = function (value) { + return value.replace(/[a-zA-Z]/g, function (_0x1a470e) { + return String.fromCharCode((_0x1a470e <= "Z" ? 90 : 122) >= + (_0x1a470e = _0x1a470e.charCodeAt(0) + 13) + ? _0x1a470e + : _0x1a470e - 26); + }); +}; +const abortableTimeout = (ms, { signal } = {}) => { + return new Promise((resolve, reject) => { + if (signal && signal.aborted) { + return reject(new Error("Aborted")); + } + const timer = setTimeout(resolve, ms); + if (signal) { + signal.addEventListener("abort", () => { + clearTimeout(timer); + reject(new Error("Aborted")); + }); + } + }); +}; +function getRedirectLinks(link, signal, headers) { + return __awaiter(this, void 0, void 0, function* () { + try { + const res = yield fetch(link, { headers, signal }); + const resText = yield res.text(); + var regex = /ck\('_wp_http_\d+','([^']+)'/g; + var combinedString = ""; + var match; + while ((match = regex.exec(resText)) !== null) { + // 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 === 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; + } + catch (err) { + console.log("Error in getRedirectLinks", err); + return link; + } + }); +} +function rot13(str) { + return str.replace(/[a-zA-Z]/g, function (char) { + const charCode = char.charCodeAt(0); + const isUpperCase = char <= "Z"; + const baseCharCode = isUpperCase ? 65 : 97; + return String.fromCharCode(((charCode - baseCharCode + 13) % 26) + baseCharCode); + }); +} +function decodeString(encryptedString) { + try { + // First base64 decode + let decoded = atob(encryptedString); + // Second base64 decode + decoded = atob(decoded); + // ROT13 decode + decoded = rot13(decoded); + // Third base64 decode + decoded = atob(decoded); + // Parse JSON + return JSON.parse(decoded); + } + catch (error) { + console.error("Error decoding string:", error); + return null; + } +} diff --git a/dist/autoEmbed/catalog.js b/dist/autoEmbed/catalog.js index deea42f..8499593 100644 --- a/dist/autoEmbed/catalog.js +++ b/dist/autoEmbed/catalog.js @@ -1 +1,22 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Popular Movies",filter:"/top/catalog/movie/top.json"},{title:"Popular TV Shows",filter:"/top/catalog/series/top.json"},{title:"Featured Movies",filter:"/imdbRating/catalog/movie/imdbRating.json"},{title:"Featured TV Shows",filter:"/imdbRating/catalog/series/imdbRating.json"}],exports.genres=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Popular Movies", + filter: "/top/catalog/movie/top.json", + }, + { + title: "Popular TV Shows", + filter: "/top/catalog/series/top.json", + }, + { + title: "Featured Movies", + filter: "/imdbRating/catalog/movie/imdbRating.json", + }, + { + title: "Featured TV Shows", + filter: "/imdbRating/catalog/series/imdbRating.json", + }, +]; +exports.genres = []; diff --git a/dist/autoEmbed/meta.js b/dist/autoEmbed/meta.js index 474fa35..6349003 100644 --- a/dist/autoEmbed/meta.js +++ b/dist/autoEmbed/meta.js @@ -1 +1,99 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(i,e,t,o){return new(t||(t=Promise))(function(l,n){function d(i){try{s(o.next(i))}catch(i){n(i)}}function v(i){try{s(o.throw(i))}catch(i){n(i)}}function s(i){var e;i.done?l(i.value):(e=i.value,e instanceof t?e:new t(function(i){i(e)})).then(d,v)}s((o=o.apply(i,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(i){return __awaiter(this,arguments,void 0,function*({link:i,providerContext:e}){var t,o,l,n,d,v,s,a,u,r,m;const p=e.axios;try{const e=(yield p.get(i)).data,y={title:"",synopsis:"",image:"",imdbId:(null===(t=null==e?void 0:e.meta)||void 0===t?void 0:t.imdb_id)||"",type:(null===(o=null==e?void 0:e.meta)||void 0===o?void 0:o.type)||"movie"},c=[];let g=[],b=new Map;if("series"===y.type){null===(n=null===(l=null==e?void 0:e.meta)||void 0===l?void 0:l.videos)||void 0===n||n.map(i=>{var t,o,l,n,d,v,s,a;(null==i?void 0:i.season)<=0||(b.has(null==i?void 0:i.season)||b.set(null==i?void 0:i.season,[]),b.get(null==i?void 0:i.season).push({title:"Episode "+(null==i?void 0:i.episode),type:"series",link:JSON.stringify({title:null===(t=null==e?void 0:e.meta)||void 0===t?void 0:t.name,imdbId:null===(o=null==e?void 0:e.meta)||void 0===o?void 0:o.imdb_id,season:null===(l=null==i?void 0:i.id)||void 0===l?void 0:l.split(":")[1],episode:null===(n=null==i?void 0:i.id)||void 0===n?void 0:n.split(":")[2],type:null===(d=null==e?void 0:e.meta)||void 0===d?void 0:d.type,tmdbId:(null===(s=null===(v=null==e?void 0:e.meta)||void 0===v?void 0:v.moviedb_id)||void 0===s?void 0:s.toString())||"",year:null===(a=null==e?void 0:e.meta)||void 0===a?void 0:a.year})}))});const i=Array.from(b.keys());i.sort(),i.map(i=>{g=b.get(i),c.push({title:`Season ${i}`,directLinks:g})})}else c.push({title:null===(d=null==e?void 0:e.meta)||void 0===d?void 0:d.name,directLinks:[{title:"Movie",type:"movie",link:JSON.stringify({title:null===(v=null==e?void 0:e.meta)||void 0===v?void 0:v.name,imdbId:null===(s=null==e?void 0:e.meta)||void 0===s?void 0:s.imdb_id,season:"",episode:"",type:null===(a=null==e?void 0:e.meta)||void 0===a?void 0:a.type,tmdbId:(null===(r=null===(u=null==e?void 0:e.meta)||void 0===u?void 0:u.moviedb_id)||void 0===r?void 0:r.toString())||"",year:null===(m=null==e?void 0:e.meta)||void 0===m?void 0:m.year})}]});return Object.assign(Object.assign({},y),{linkList:c})}catch(i){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; + const axios = providerContext.axios; + try { + console.log("all", link); + const res = yield axios.get(link); + const data = res.data; + 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 links = []; + let directLinks = []; + let season = new Map(); + if (meta.type === "series") { + (_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) => { + var _a, _b, _c, _d, _e, _f, _g, _h; + 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), + type: "series", + link: JSON.stringify({ + title: (_a = data === null || data === void 0 ? void 0 : data.meta) === null || _a === void 0 ? void 0 : _a.name, + imdbId: (_b = data === null || data === void 0 ? void 0 : data.meta) === null || _b === void 0 ? void 0 : _b.imdb_id, + season: (_c = video === null || video === void 0 ? void 0 : video.id) === null || _c === void 0 ? void 0 : _c.split(":")[1], + episode: (_d = video === null || video === void 0 ? void 0 : video.id) === null || _d === void 0 ? void 0 : _d.split(":")[2], + type: (_e = data === null || data === void 0 ? void 0 : data.meta) === null || _e === void 0 ? void 0 : _e.type, + 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: (_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 }); + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/autoEmbed/posts.js b/dist/autoEmbed/posts.js index b0e3e98..ead2e6d 100644 --- a/dist/autoEmbed/posts.js +++ b/dist/autoEmbed/posts.js @@ -1 +1,102 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,o){return new(n||(n=Promise))(function(i,s){function a(t){try{l(o.next(t))}catch(t){s(t)}}function r(t){try{l(o.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(a,r)}l((o=o.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,signal:e,providerContext:n}){try{const o=[],i="https://cinemeta-catalogs.strem.io"+t,s=(yield n.axios.get(i,{headers:n.commonHeaders,signal:e})).data;return null==s||s.metas.map(t=>{const e=null==t?void 0:t.name,n=(null==t?void 0:t.imdb_id)||(null==t?void 0:t.id),i=null==t?void 0:t.type,s=null==t?void 0:t.poster;n&&o.push({title:e,link:`https://v3-cinemeta.strem.io/meta/${i}/${n}.json`,image:s})}),o}catch(t){return[]}})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:n,providerContext:o}){try{if(e>1)return[];const i=[],s=`https://v3-cinemeta.strem.io/catalog/series/top/search=${encodeURI(t)}.json`,a=`https://v3-cinemeta.strem.io/catalog/movie/top/search=${encodeURI(t)}.json`,r=(yield o.axios.get(s,{headers:o.commonHeaders,signal:n})).data;null==r||r.metas.map(t=>{const e=t.name||"",n=(null==t?void 0:t.imdb_id)||(null==t?void 0:t.id),o=null==t?void 0:t.poster,s=null==t?void 0:t.type;n&&i.push({title:e,link:`https://v3-cinemeta.strem.io/meta/${s}/${n}.json`,image:o})});const l=(yield o.axios.get(a,{headers:o.commonHeaders,signal:n})).data;return null==l||l.metas.map(t=>{const e=(null==t?void 0:t.name)||"",n=(null==t?void 0:t.imdb_id)||(null==t?void 0:t.id),o=null==t?void 0:t.poster,s=null==t?void 0:t.type;n&&i.push({title:e,link:`https://v3-cinemeta.strem.io/meta/${s}/${n}.json`,image:o})}),i}catch(t){return[]}})};exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, signal, providerContext, }) { + try { + const catalog = []; + const url = "https://cinemeta-catalogs.strem.io" + filter; + console.log("allGetPostUrl", url); + const res = yield providerContext.axios.get(url, { + headers: providerContext.commonHeaders, + signal, + }); + const data = res.data; + data === null || data === void 0 ? void 0 : data.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 type = result === null || result === void 0 ? void 0 : result.type; + const image = result === null || result === void 0 ? void 0 : result.poster; + if (id) { + catalog.push({ + title: title, + link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`, + image: image, + }); + } + }); + console.log("catalog", catalog.length); + return catalog; + } + catch (err) { + console.error("AutoEmbed error ", err); + return []; + } + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, + // providerValue, + signal, providerContext, }) { + try { + if (page > 1) { + 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`; + const res = yield providerContext.axios.get(url1, { + headers: providerContext.commonHeaders, + signal, + }); + const data = res.data; + data === null || data === void 0 ? void 0 : data.metas.map((result) => { + const title = 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, + }); + } + }); + const res2 = yield providerContext.axios.get(url2, { + headers: providerContext.commonHeaders, + 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; diff --git a/dist/autoEmbed/stream.js b/dist/autoEmbed/stream.js index 6bca3cc..0a8259b 100644 --- a/dist/autoEmbed/stream.js +++ b/dist/autoEmbed/stream.js @@ -1 +1,234 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(o,r){function a(e){try{d(n.next(e))}catch(e){r(e)}}function l(e){try{d(n.throw(e))}catch(e){r(e)}}function d(e){var t;e.done?o(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(a,l)}d((n=n.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0,exports.getRiveStream=getRiveStream;const getStream=e=>__awaiter(void 0,[e],void 0,function*({link:e,type:t,providerContext:i}){try{const n=[],{imdbId:o,season:r,episode:a,title:l,tmdbId:d,year:s}=JSON.parse(e);return yield getRiveStream(d,a,r,t,n,i),n}catch(e){return[]}});function getRiveStream(e,t,i,n,o,r){return __awaiter(this,void 0,void 0,function*(){const a=generateSecretKey(Number(e)),l=yield r.getBaseUrl("rive"),d=process.env.CORS_PRXY?process.env.CORS_PRXY+"?url=":"",s="series"===n?`/api/backendfetch?requestID=tvVideoProvider&id=${e}&season=${i}&episode=${t}&secretKey=${a}&service=`:`/api/backendfetch?requestID=movieVideoProvider&id=${e}&secretKey=${a}&service=`,c=d?d+encodeURIComponent(l+s):l+s;yield Promise.all(["flowcast","shadow","asiacloud","hindicast","anime","animez","guard","curve","hq","ninja","alpha","kaze","zenesis","genesis","zenith","ghost","halo","kinoecho","ee3","volt","putafilme","ophim","kage"].map(e=>__awaiter(this,void 0,void 0,function*(){var t,i,n,a,l,d;try{const s=yield r.axios.get(c+e,{timeout:4e3,headers:r.commonHeaders}),u=[];(null===(i=null===(t=s.data)||void 0===t?void 0:t.data)||void 0===i?void 0:i.captions)&&(null===(a=null===(n=s.data)||void 0===n?void 0:n.data)||void 0===a||a.captions.forEach(e=>{var t,i;u.push({language:(null===(t=null==e?void 0:e.label)||void 0===t?void 0:t.slice(0,2))||"Und",uri:null==e?void 0:e.file,title:(null==e?void 0:e.label)||"Undefined",type:(null===(i=null==e?void 0:e.file)||void 0===i?void 0:i.endsWith(".vtt"))?"text/vtt":"application/x-subrip"})})),null===(d=null===(l=s.data)||void 0===l?void 0:l.data)||void 0===d||d.sources.forEach(e=>{o.push({server:(null==e?void 0:e.source)+"-"+(null==e?void 0:e.quality),link:null==e?void 0:e.url,type:"hls"===(null==e?void 0:e.format)?"m3u8":"mp4",quality:null==e?void 0:e.quality,subtitles:u})})}catch(e){}})))})}function generateSecretKey(e){const t=["Yhv40uKAZa","nn8YU4yBA","uNeH","ehK","jT0","n5G","99R","MvB1M","DQtPCh","GBRjk4k4I","CzIOoa95UT","BLE8s","GDZlc7","Fz45T","JW6lWn","DE3g4uw0i","18KxmYizv","8ji","JUDdNMnZ","oGpBippPgm","7De8Pg","Zv6","VHT9TVN","bYH6m","aK1","WcWH6jU","Q47YEMi4k","vRD3A","CGOsfJO","BLn8","RgK0drv7l","oPTfGCn3a","MkpMDkttW9","VNI1fPM","XNFi6","6cq","4LvTksXoEI","1rRa2KOZB0","zoOGRb8HT2","mhcXDtvz","NUmexFY2Ur","6BIMdvSZ","Tr0zU2vjRd","QPR","fhOqJR","R9VnFY","xkZ99D6S","umY7E","5Ds8qyDq","Cc6jy09y3","yvU3iR","Bg07zY","GccECglg","VYd","6vOiXqz","7xX","UdRrbEzF","fE6wc","BUd25Rb","lxq5Zum89o"];if(void 0===e)return"rive";try{let i,n;const o=String(e),r=btoa(function(e){const t=String(e);let i=3735928559^t.length;for(let e=0;e>>25)>>>0^n)>>>0}return i^=i>>>16,i=2246822507*i>>>0,i^=i>>>13,i=3266489909*i>>>0,(i^=i>>>16).toString(16).padStart(8,"0")}(function(e){e=String(e);let t=0;for(let i=0;i>>0}return t^=t>>>13,t=1540483477*t>>>0,(t^=t>>>15).toString(16).padStart(8,"0")}(o)));if(isNaN(Number(e))){const e=o.split("").reduce((e,t)=>e+t.charCodeAt(0),0);i=t[e%t.length]||btoa(o),n=Math.floor(e%r.length/2)}else{const a=Number(e);i=t[a%t.length]||btoa(o),n=Math.floor(a%r.length/2)}return r.slice(0,n)+i+r.slice(n)}catch(e){return"topSecret"}}exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +exports.getRiveStream = getRiveStream; +const getStream = (_a) => __awaiter(void 0, [_a], void 0, function* ({ link: id, type, providerContext, }) { + try { + const streams = []; + const { imdbId, season, episode, title, tmdbId, year } = JSON.parse(id); + yield getRiveStream(tmdbId, episode, season, type, streams, providerContext); + return streams; + } + catch (err) { + console.error(err); + return []; + } +}); +exports.getStream = getStream; +function getRiveStream(tmdId, episode, season, type, Streams, providerContext) { + return __awaiter(this, void 0, void 0, function* () { + const secret = generateSecretKey(Number(tmdId)); + const servers = [ + "flowcast", + "shadow", + "asiacloud", + "hindicast", + "anime", + "animez", + "guard", + "curve", + "hq", + "ninja", + "alpha", + "kaze", + "zenesis", + "genesis", + "zenith", + "ghost", + "halo", + "kinoecho", + "ee3", + "volt", + "putafilme", + "ophim", + "kage", + ]; + const baseUrl = yield providerContext.getBaseUrl("rive"); + const cors = process.env.CORS_PRXY ? process.env.CORS_PRXY + "?url=" : ""; + console.log("CORS: " + cors); + const route = type === "series" + ? `/api/backendfetch?requestID=tvVideoProvider&id=${tmdId}&season=${season}&episode=${episode}&secretKey=${secret}&service=` + : `/api/backendfetch?requestID=movieVideoProvider&id=${tmdId}&secretKey=${secret}&service=`; + const url = cors + ? cors + encodeURIComponent(baseUrl + route) + : baseUrl + route; + yield Promise.all(servers.map((server) => __awaiter(this, void 0, void 0, function* () { + var _a, _b, _c, _d, _e, _f; + console.log("Rive: " + url + server); + try { + const res = yield providerContext.axios.get(url + server, { + timeout: 4000, + headers: providerContext.commonHeaders, + }); + const subtitles = []; + if ((_b = (_a = res.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.captions) { + (_d = (_c = res.data) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.captions.forEach((sub) => { + var _a, _b; + subtitles.push({ + language: ((_a = sub === null || sub === void 0 ? void 0 : sub.label) === null || _a === void 0 ? void 0 : _a.slice(0, 2)) || "Und", + uri: sub === null || sub === void 0 ? void 0 : sub.file, + 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")) + ? "text/vtt" + : "application/x-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, + }); + }); + } + catch (e) { + console.log(e); + } + }))); + }); +} +function generateSecretKey(id) { + // Array of secret key fragments - updated array from the new implementation + const c = [ + "Yhv40uKAZa", + "nn8YU4yBA", + "uNeH", + "ehK", + "jT0", + "n5G", + "99R", + "MvB1M", + "DQtPCh", + "GBRjk4k4I", + "CzIOoa95UT", + "BLE8s", + "GDZlc7", + "Fz45T", + "JW6lWn", + "DE3g4uw0i", + "18KxmYizv", + "8ji", + "JUDdNMnZ", + "oGpBippPgm", + "7De8Pg", + "Zv6", + "VHT9TVN", + "bYH6m", + "aK1", + "WcWH6jU", + "Q47YEMi4k", + "vRD3A", + "CGOsfJO", + "BLn8", + "RgK0drv7l", + "oPTfGCn3a", + "MkpMDkttW9", + "VNI1fPM", + "XNFi6", + "6cq", + "4LvTksXoEI", + "1rRa2KOZB0", + "zoOGRb8HT2", + "mhcXDtvz", + "NUmexFY2Ur", + "6BIMdvSZ", + "Tr0zU2vjRd", + "QPR", + "fhOqJR", + "R9VnFY", + "xkZ99D6S", + "umY7E", + "5Ds8qyDq", + "Cc6jy09y3", + "yvU3iR", + "Bg07zY", + "GccECglg", + "VYd", + "6vOiXqz", + "7xX", + "UdRrbEzF", + "fE6wc", + "BUd25Rb", + "lxq5Zum89o", + ]; + // Handle undefined input + if (id === undefined) { + return "rive"; + } + try { + let fragment, insertPos; + // Convert input to string + const idStr = String(id); + // Updated string hash function to match the new implementation + /* eslint-disable no-bitwise */ + const generateStringHash = function (input) { + input = String(input); + let hash = 0; + for (let i = 0; i < input.length; i++) { + const char = input.charCodeAt(i); + hash = + ((char + (hash << 6) + (hash << 16) - hash) ^ (char << i % 5)) >>> 0; + } + hash ^= hash >>> 13; + hash = (1540483477 * hash) >>> 0; + return (hash ^= hash >>> 15).toString(16).padStart(8, "0"); + }; + // Updated MurmurHash-like function to match the new implementation + const applyMurmurHash = function (input) { + const str = String(input); + let hash = 3735928559 ^ str.length; + for (let i = 0; i < str.length; i++) { + let char = str.charCodeAt(i); + char ^= ((i + 31) * 131) & 255; + hash = + (668265261 * + (hash = (((hash << 7) | (hash >>> 25)) >>> 0) ^ char)) >>> + 0; + } + hash ^= hash >>> 16; + hash = (2246822507 * hash) >>> 0; + hash ^= hash >>> 13; + hash = (3266489909 * hash) >>> 0; + return (hash ^= hash >>> 16).toString(16).padStart(8, "0"); + }; + /* eslint-enable no-bitwise */ + // Generate the encoded hash using the new implementation + const encodedHash = btoa(applyMurmurHash(generateStringHash(idStr))); + // Different handling for non-numeric vs numeric inputs + if (isNaN(Number(id))) { + // For non-numeric inputs, sum the character codes + const charSum = idStr + .split("") + .reduce((sum, char) => sum + char.charCodeAt(0), 0); + // Select array element or fallback to base64 encoded input + fragment = c[charSum % c.length] || btoa(idStr); + // Calculate insertion position + insertPos = Math.floor((charSum % encodedHash.length) / 2); + } + else { + // For numeric inputs, use the number directly + const numId = Number(id); + fragment = c[numId % c.length] || btoa(idStr); + // Calculate insertion position + insertPos = Math.floor((numId % encodedHash.length) / 2); + } + // Construct the final key by inserting the selected value into the base64 string + return (encodedHash.slice(0, insertPos) + fragment + encodedHash.slice(insertPos)); + } + catch (error) { + // Return fallback value if any errors occur + return "topSecret"; + } +} diff --git a/dist/cinemaLuxe/catalog.js b/dist/cinemaLuxe/catalog.js index d0bbc98..ec0859c 100644 --- a/dist/cinemaLuxe/catalog.js +++ b/dist/cinemaLuxe/catalog.js @@ -1 +1,22 @@ -"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=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +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 = []; diff --git a/dist/cinemaLuxe/episodes.js b/dist/cinemaLuxe/episodes.js index 5a61fa7..ae8fc2d 100644 --- a/dist/cinemaLuxe/episodes.js +++ b/dist/cinemaLuxe/episodes.js @@ -1 +1,77 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(o,r){function a(e){try{l(n.next(e))}catch(e){r(e)}}function s(e){try{l(n.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(a,s)}l((n=n.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getEpisodes=void 0;const getEpisodes=function(e){return __awaiter(this,arguments,void 0,function*({url:e,providerContext:t}){var i;try{if(!e.includes("luxelinks")||e.includes("cinemalux")){const n=yield t.axios.get(e,{headers:t.commonHeaders}),o=null===(i=n.data.match(/"link":"([^"]+)"/))||void 0===i?void 0:i[1];if(o)e=o?atob(o):e;else{const t=yield fetch("https://ext.8man.me/api/cinemaluxe",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:e})}),i=yield t.json();e=(null==i?void 0:i.redirectUrl)||e}}const n=[];if(e.includes("luxedrive")||e.includes("drive.linkstore"))return n.push({title:"Movie",link:e}),n;const o=(yield t.axios.get(e,{headers:t.commonHeaders})).data;let r=t.cheerio.load(o);return r("a.maxbutton-4,a.maxbutton,.maxbutton-hubcloud,.ep-simple-button").map((e,t)=>{var i;const o=null===(i=r(t).text())||void 0===i?void 0:i.trim(),a=r(t).attr("href");o&&a&&!o.includes("Batch")&&!o.toLowerCase().includes("zip")&&n.push({title:o.replace(/\(\d{4}\)/,"").replace("Download","Movie").replace("⚡","").trim(),link:a})}),n}catch(e){return[]}})};exports.getEpisodes=getEpisodes; \ No newline at end of file +"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 }); +exports.getEpisodes = void 0; +const getEpisodes = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) { + var _b; + try { + if (!url.includes("luxelinks") || url.includes("cinemalux")) { + 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 episodeLinks = []; + if (url.includes("luxedrive") || url.includes("drive.linkstore")) { + episodeLinks.push({ + title: "Movie", + link: url, + }); + return episodeLinks; + } + const res = yield providerContext.axios.get(url, { + headers: providerContext.commonHeaders, + }); + const html = res.data; + let $ = providerContext.cheerio.load(html); + $("a.maxbutton-4,a.maxbutton,.maxbutton-hubcloud,.ep-simple-button").map((i, element) => { + var _a; + const title = (_a = $(element).text()) === null || _a === void 0 ? void 0 : _a.trim(); + const link = $(element).attr("href"); + 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; diff --git a/dist/cinemaLuxe/meta.js b/dist/cinemaLuxe/meta.js index b818273..2b376c9 100644 --- a/dist/cinemaLuxe/meta.js +++ b/dist/cinemaLuxe/meta.js @@ -1 +1,106 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(o,a){function r(t){try{s(n.next(t))}catch(t){a(t)}}function l(t){try{s(n.throw(t))}catch(t){a(t)}}function s(t){var e;t.done?o(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(r,l)}s((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){try{const i=t,n=(yield e.axios.get(i,{headers:e.commonHeaders})).data,o=e.cheerio.load(n),a=i.includes("tvshows")?"series":"movie",r="",l=i.split("/")[4].replace(/-/g," "),s=o(".g-item").find("a").attr("href")||"",c=o(".wp-content").text().trim(),d=o(".sgeneros").children().map((t,e)=>o(e).text()).get().slice(3),p=Number(o("#repimdb").find("strong").text()).toFixed(1).toString(),u=[];return o(".custom-links").find(".ep-button-container").map((t,e)=>{var i;const n=o(e).text().replace("⬇Download","").replace("⬇ Download","").trim(),a=o(e).find("a").attr("href");n&&a&&u.push({title:n,episodesLink:a,quality:(null===(i=null==n?void 0:n.match(/\d+P\b/))||void 0===i?void 0:i[0].replace("P","p"))||""})}),0===u.length&&o(".ep-button-container:not(:has(a:contains('Click Here To Visit')))").map((t,e)=>{var i;let n=o(e).find("a").text().replace("⬇Download","").replace("⬇ Download","").trim();n.includes("Download Now")&&(n=o(e).parent().find("h3").text().trim().replace("⬇Download","").replace("⬇ Download",""));const a=o(e).find("a").attr("href");n&&a&&u.push({title:n,episodesLink:a,quality:(null===(i=null==n?void 0:n.match(/\d+P\b/))||void 0===i?void 0:i[0].replace("P","p"))||""})}),{title:l,tags:d,rating:p,synopsis:c,image:s,imdbId:r,type:a,linkList:u}}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + try { + const url = link; + const res = yield providerContext.axios.get(url, { + headers: providerContext.commonHeaders, + }); + const data = res.data; + const $ = providerContext.cheerio.load(data); + const type = url.includes("tvshows") ? "series" : "movie"; + const imdbId = ""; + const title = url.split("/")[4].replace(/-/g, " "); + const image = $(".g-item").find("a").attr("href") || ""; + const synopsis = $(".wp-content").text().trim(); + const tags = $(".sgeneros") + .children() + .map((i, element) => $(element).text()) + .get() + .slice(3); + const rating = Number($("#repimdb").find("strong").text()) + .toFixed(1) + .toString(); + const links = []; + $(".custom-links") + .find(".ep-button-container") + .map((i, element) => { + var _a; + const title = $(element) + .text() + .replace("\u2b07Download", "") + .replace("\u2b07 Download", "") + .trim(); + const link = $(element).find("a").attr("href"); + if (title && link) { + links.push({ + 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")) || "", + }); + } + }); + if (links.length === 0) { + $(".ep-button-container:not(:has(a:contains('Click Here To Visit')))").map((i, element) => { + var _a; + let title = $(element) + .find("a") + .text() + .replace("\u2b07Download", "") + .replace("\u2b07 Download", "") + .trim(); + if (title.includes("Download Now")) { + title = $(element) + .parent() + .find("h3") + .text() + .trim() + .replace("\u2b07Download", "") + .replace("\u2b07 Download", ""); + } + const link = $(element).find("a").attr("href"); + if (title && link) { + links.push({ + 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, + rating, + synopsis, + image, + imdbId, + type, + linkList: links, + }; + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/cinemaLuxe/posts.js b/dist/cinemaLuxe/posts.js index 5ae6ee0..15fc613 100644 --- a/dist/cinemaLuxe/posts.js +++ b/dist/cinemaLuxe/posts.js @@ -1 +1,70 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(r,s){function a(t){try{c(n.next(t))}catch(t){s(t)}}function o(t){try{c(n.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(a,o)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,signal:i,providerContext:n}){return posts({url:`${(yield n.getBaseUrl("cinemaLuxe"))+t}page/${e}/`,signal:i,providerContext:n})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:i,providerContext:n}){return posts({url:`${yield n.getBaseUrl("cinemaLuxe")}/page/${e}/?s=${t}`,signal:i,providerContext:n})})};function posts(t){return __awaiter(this,arguments,void 0,function*({url:t,signal:e,providerContext:i}){try{const n=yield fetch(t,{headers:i.commonHeaders,signal:e}),r=yield n.text(),s=i.cheerio.load(r),a=[];return s(".item.tvshows,.item.movies").map((t,e)=>{const i=s(e).find(".poster").find("img").attr("alt"),n=s(e).find(".poster").find("a").attr("href"),r=s(e).find(".poster").find("img").attr("data-src");i&&n&&r&&a.push({title:i,link:n,image:r})}),s(".result-item").map((t,e)=>{const i=s(e).find(".thumbnail").find("img").attr("alt"),n=s(e).find(".thumbnail").find("a").attr("href"),r=s(e).find(".thumbnail").find("img").attr("data-src");i&&n&&r&&a.push({title:i,link:n,image:r})}),a}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) { + const baseUrl = yield providerContext.getBaseUrl("cinemaLuxe"); + const url = `${baseUrl + filter}page/${page}/`; + return posts({ url, signal, providerContext }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) { + const baseUrl = yield providerContext.getBaseUrl("cinemaLuxe"); + const url = `${baseUrl}/page/${page}/?s=${searchQuery}`; + return posts({ url, signal, providerContext }); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ url, signal, providerContext, }) { + try { + const res = yield fetch(url, { + headers: providerContext.commonHeaders, + signal, + }); + const data = yield res.text(); + const $ = providerContext.cheerio.load(data); + const catalog = []; + $(".item.tvshows,.item.movies").map((i, element) => { + const title = $(element).find(".poster").find("img").attr("alt"); + const link = $(element).find(".poster").find("a").attr("href"); + const image = $(element).find(".poster").find("img").attr("data-src"); + if (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"); + const link = $(element).find(".thumbnail").find("a").attr("href"); + const image = $(element).find(".thumbnail").find("img").attr("data-src"); + if (title && link && image) { + catalog.push({ + title: title, + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + console.error("cinemaluxe error ", err); + return []; + } + }); +} diff --git a/dist/cinemaLuxe/stream.js b/dist/cinemaLuxe/stream.js index 279b41f..b99abbd 100644 --- a/dist/cinemaLuxe/stream.js +++ b/dist/cinemaLuxe/stream.js @@ -1 +1,78 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,a,c){return new(a||(a=Promise))(function(i,n){function o(e){try{s(c.next(e))}catch(e){n(e)}}function r(e){try{s(c.throw(e))}catch(e){n(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof a?t:new a(function(e){e(t)})).then(o,r)}s((c=c.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=e=>__awaiter(void 0,[e],void 0,function*({link:e,signal:t,providerContext:a}){var c;try{let i=e;if(e.includes("linkstore")){const a=yield fetch(e,{signal:t,headers:{accept:"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","accept-language":"en-US,en;q=0.9,en-IN;q=0.8","cache-control":"no-cache",pragma:"no-cache",priority:"u=0, i","sec-ch-ua":'"Microsoft Edge";v="137", "Chromium";v="137", "Not/A)Brand";v="24"',"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",cookie:"PHPSESSID=9o57cff841dqtv8djtn1rp1712; ext_name=ojplmecpdpgccookcobabopnaifgidhf"}}),c=(yield a.text()).match(/ __awaiter(void 0, [_a], void 0, function* ({ link, signal, providerContext, }) { + var _b; + try { + let newLink = link; + console.log("getStream 1", link); + if (link.includes("linkstore")) { + console.log("linkstore detected"); + const res = yield fetch(link, { + signal, + headers: { + accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", + "accept-language": "en-US,en;q=0.9,en-IN;q=0.8", + "cache-control": "no-cache", + pragma: "no-cache", + priority: "u=0, i", + "sec-ch-ua": '"Microsoft Edge";v="137", "Chromium";v="137", "Not/A)Brand";v="24"', + "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", + cookie: "PHPSESSID=9o57cff841dqtv8djtn1rp1712; ext_name=ojplmecpdpgccookcobabopnaifgidhf", + }, + }); + const html = yield res.text(); + const refreshMetaMatch = html.match(/null==i?void 0:i.name))||[],_=[];return"series"===m?null===(l=null==a?void 0:a.season)||void 0===l||l.map(i=>{var e;const t=(null==i?void 0:i.seasons_name)||"",n=(null===(e=null==i?void 0:i.episodes)||void 0===e?void 0:e.map(i=>({title:null==i?void 0:i.episodes_name,link:null==i?void 0:i.file_url})))||[];_.push({title:t,directLinks:n})}):null===(o=null==a?void 0:a.videos)||void 0===o||o.map(i=>{_.push({title:v+" "+(null==i?void 0:i.label),directLinks:[{title:"Play",link:null==i?void 0:i.file_url}]})}),{image:(null==c?void 0:c.includes("https"))?c:null==c?void 0:c.replace("http","https"),synopsis:p,title:v,rating:h,imdbId:"",cast:g,tags:f,type:m,linkList:_}}catch(i){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const headers = { + "Accept-Encoding": "gzip", + "API-KEY": "2pm95lc6prpdbk0ppji9rsqo", + Connection: "Keep-Alive", + "If-Modified-Since": "Wed, 14 Aug 2024 13:00:04 GMT", + "User-Agent": "okhttp/3.14.9", +}; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b, _c, _d, _e; + try { + const { axios } = providerContext; + const res = yield axios.get(link, { headers }); + const resData = res.data; + const jsonStart = resData === null || resData === void 0 ? void 0 : resData.indexOf("{"); + const jsonEnd = (resData === null || resData === void 0 ? void 0 : resData.lastIndexOf("}")) + 1; + 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) + ? JSON === null || JSON === void 0 ? void 0 : JSON.parse(resData === null || resData === void 0 ? void 0 : resData.substring(jsonStart, jsonEnd)) + : resData; + const title = (data === null || data === void 0 ? void 0 : data.title) || ""; + const synopsis = (data === null || data === void 0 ? void 0 : data.description) || ""; + const image = (data === null || data === void 0 ? void 0 : data.poster_url) || ""; + const cast = (data === null || data === void 0 ? void 0 : data.cast) || []; + const rating = (data === null || data === void 0 ? void 0 : data.imdb_rating) || ""; + const type = Number(data === null || data === void 0 ? void 0 : data.is_tvseries) ? "series" : "movie"; + 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)) || []; + const links = []; + if (type === "series") { + (_d = data === null || data === void 0 ? void 0 : data.season) === null || _d === void 0 ? void 0 : _d.map((season) => { + var _a; + 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) => ({ + title: episode === null || episode === void 0 ? void 0 : episode.episodes_name, + link: episode === null || episode === void 0 ? void 0 : episode.file_url, + }))) || []; + links.push({ + title: title, + directLinks: directLinks, + }); + }); + } + else { + (_e = data === null || data === void 0 ? void 0 : data.videos) === null || _e === void 0 ? void 0 : _e.map((video) => { + links.push({ + title: title + " " + (video === null || video === void 0 ? void 0 : video.label), + directLinks: [ + { + title: "Play", + link: video === null || video === void 0 ? void 0 : 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, + }; + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/dooflix/posts.js b/dist/dooflix/posts.js index d59c8ac..8662c08 100644 --- a/dist/dooflix/posts.js +++ b/dist/dooflix/posts.js @@ -1 +1,154 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(s,r){function o(t){try{a(n.next(t))}catch(t){r(t)}}function l(t){try{a(n.throw(t))}catch(t){r(t)}}function a(t){var e;t.done?s(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(o,l)}a((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const headers={"Accept-Encoding":"gzip","API-KEY":"2pm95lc6prpdbk0ppji9rsqo",Connection:"Keep-Alive","If-Modified-Since":"Wed, 14 Aug 2024 13:00:04 GMT","User-Agent":"okhttp/3.14.9"},getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,signal:i,providerContext:n}){try{const{axios:s,getBaseUrl:r}=n,o=yield r("dooflix"),l=[],a=""+(o+t+`?page=${e}`),d=(yield s.get(a,{headers:headers,signal:i})).data;if(!d||"string"!=typeof d)return[];let u;try{const t=d.indexOf("["),e=d.lastIndexOf("]")+1;if(-1===t||e<=t)u=JSON.parse(d);else{const i=d.substring(t,e),n=JSON.parse(i);u=n.length>0?n:d}}catch(t){return[]}return Array.isArray(u)?(u.forEach(t=>{const e=null==t?void 0:t.videos_id;if(!e)return;const i=(null==t?void 0:t.is_tvseries)?"movie":"tvseries",n=`${o}/rest-api//v130/single_details?type=${i}&id=${e}`,s=null==t?void 0:t.thumbnail_url,r=(null==s?void 0:s.includes("https"))?s:null==s?void 0:s.replace("http","https");l.push({title:(null==t?void 0:t.title)||"",link:n,image:r})}),l):[]}catch(t){return[]}})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,providerContext:i,signal:n}){var s,r;try{if(e>1)return[];const{axios:o,getBaseUrl:l}=i,a=[],d=yield l("dooflix"),u=`${d}/rest-api//v130/search?q=${t}&type=movietvserieslive&range_to=0&range_from=0&tv_category_id=0&genre_id=0&country_id=0`,c=(yield o.get(u,{headers:headers,signal:n})).data;if(!c||"string"!=typeof c)return[];let v;try{const t=c.indexOf("{"),e=c.lastIndexOf("}")+1;if(-1===t||e<=t)v=c;else{const i=c.substring(t,e),n=JSON.parse(i);v=(null==n?void 0:n.movie)?n:c}}catch(t){return[]}return null===(s=null==v?void 0:v.movie)||void 0===s||s.forEach(t=>{const e=null==t?void 0:t.videos_id;if(!e)return;const i=`${d}/rest-api//v130/single_details?type=movie&id=${e}`,n=null==t?void 0:t.thumbnail_url,s=(null==n?void 0:n.includes("https"))?n:null==n?void 0:n.replace("http","https");a.push({title:(null==t?void 0:t.title)||"",link:i,image:s})}),null===(r=null==v?void 0:v.tvseries)||void 0===r||r.forEach(t=>{const e=null==t?void 0:t.videos_id;if(!e)return;const i=`${d}/rest-api//v130/single_details?type=tvseries&id=${e}`,n=null==t?void 0:t.thumbnail_url,s=(null==n?void 0:n.includes("https"))?n:null==n?void 0:n.replace("http","https");a.push({title:(null==t?void 0:t.title)||"",link:i,image:s})}),a}catch(t){return[]}})};exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const headers = { + "Accept-Encoding": "gzip", + "API-KEY": "2pm95lc6prpdbk0ppji9rsqo", + Connection: "Keep-Alive", + "If-Modified-Since": "Wed, 14 Aug 2024 13:00:04 GMT", + "User-Agent": "okhttp/3.14.9", +}; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) { + try { + const { axios, getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("dooflix"); + const catalog = []; + const url = `${baseUrl + filter + `?page=${page}`}`; + 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 []; + } + let data; + try { + const jsonStart = resData.indexOf("["); + 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) { + console.error("Error parsing dooflix response:", parseError); + return []; + } + if (!Array.isArray(data)) { + console.warn("Unexpected data format from dooflix API"); + return []; + } + data.forEach((result) => { + const id = result === null || result === void 0 ? void 0 : result.videos_id; + if (!id) + return; + const type = !(result === null || result === void 0 ? void 0 : result.is_tvseries) ? "tvseries" : "movie"; + 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 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 (err) { + console.error("dooflix error:", err); + return []; + } + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, providerContext, signal, }) { + var _b, _c; + try { + if (page > 1) { + return []; + } + const { axios, getBaseUrl } = providerContext; + const catalog = []; + const baseUrl = yield 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 = 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 (error) { + console.error("dooflix search error:", error); + return []; + } + }); +}; +exports.getSearchPosts = getSearchPosts; diff --git a/dist/dooflix/stream.js b/dist/dooflix/stream.js index 0e5bfac..31153e1 100644 --- a/dist/dooflix/stream.js +++ b/dist/dooflix/stream.js @@ -1 +1,51 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,r,o){return new(r||(r=Promise))(function(n,a){function i(e){try{u(o.next(e))}catch(e){a(e)}}function c(e){try{u(o.throw(e))}catch(e){a(e)}}function u(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(i,c)}u((o=o.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=function(e){return __awaiter(this,arguments,void 0,function*({link:e}){try{const t=[],r={Connection:"Keep-Alive","User-Agent":"Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.37",Referer:"https://molop.art/",Cookie:"cf_clearance=M2_2Hy4lKRy_ruRX3dzOgm3iho1FHe2DUC1lq28BUtI-1737377622-1.2.1.1-6R8RaH94._H2BuNuotsjTZ3fAF6cLwPII0guemu9A5Xa46lpCJPuELycojdREwoonYS2kRTYcZ9_1c4h4epi2LtDvMM9jIoOZKE9pIdWa30peM1hRMpvffTjGUCraHsJNCJez8S_QZ6XkkdP7GeQ5iwiYaI6Grp6qSJWoq0Hj8lS7EITZ1LzyrALI6iLlYjgLmgLGa1VuhORWJBN8ZxrJIZ_ba_pqbrR9fjnyToqxZ0XQaZfk1d3rZyNWoZUjI98GoAxVjnKtcBQQG6b2jYPJuMbbYraGoa54N7E7BR__7o"},o=yield fetch(e,{redirect:"manual",headers:r});if(o.status>=300&&o.status<400){const t=o.headers.get("Location");t&&(e=t)}return o.url&&(e=o.url),t.push({server:"Dooflix",link:e,headers:r,type:"m3u8"}),t}catch(e){return[]}})};exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, }) { + try { + const streams = []; + const headers = { + Connection: "Keep-Alive", + "User-Agent": "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.37", + Referer: "https://molop.art/", + Cookie: "cf_clearance=M2_2Hy4lKRy_ruRX3dzOgm3iho1FHe2DUC1lq28BUtI-1737377622-1.2.1.1-6R8RaH94._H2BuNuotsjTZ3fAF6cLwPII0guemu9A5Xa46lpCJPuELycojdREwoonYS2kRTYcZ9_1c4h4epi2LtDvMM9jIoOZKE9pIdWa30peM1hRMpvffTjGUCraHsJNCJez8S_QZ6XkkdP7GeQ5iwiYaI6Grp6qSJWoq0Hj8lS7EITZ1LzyrALI6iLlYjgLmgLGa1VuhORWJBN8ZxrJIZ_ba_pqbrR9fjnyToqxZ0XQaZfk1d3rZyNWoZUjI98GoAxVjnKtcBQQG6b2jYPJuMbbYraGoa54N7E7BR__7o", + }; + const response = yield fetch(link, { + redirect: "manual", + headers: headers, + }); + if (response.status >= 300 && response.status < 400) { + const redirectLink = response.headers.get("Location"); + if (redirectLink) { + link = redirectLink; + } + } + if (response.url) { + link = response.url; + } + streams.push({ + server: "Dooflix", + link: link, + headers: headers, + type: "m3u8", + }); + console.log("doo streams", streams); + return streams; + } + catch (err) { + console.error(err); + return []; + } + }); +}; +exports.getStream = getStream; diff --git a/dist/drive/catalog.js b/dist/drive/catalog.js index a57f4d7..ea3a77d 100644 --- a/dist/drive/catalog.js +++ b/dist/drive/catalog.js @@ -1 +1,63 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Latest",filter:""},{title:"Anime",filter:"category/anime/"},{title:"Netflix",filter:"category/netflix/"},{title:"4K",filter:"category/2160p-4k/"}],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"}]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Latest", + filter: "", + }, + { + title: "Anime", + filter: "category/anime/", + }, + { + title: "Netflix", + filter: "category/netflix/", + }, + { + title: "4K", + filter: "category/2160p-4k/", + }, +]; +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", + }, +]; diff --git a/dist/drive/episodes.js b/dist/drive/episodes.js index da3958d..f207389 100644 --- a/dist/drive/episodes.js +++ b/dist/drive/episodes.js @@ -1 +1,45 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,o){return new(n||(n=Promise))(function(i,r){function s(t){try{c(o.next(t))}catch(t){r(t)}}function a(t){try{c(o.throw(t))}catch(t){r(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(s,a)}c((o=o.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getEpisodes=void 0;const getEpisodes=function(t){return __awaiter(this,arguments,void 0,function*({url:t,providerContext:e}){try{const{axios:n,cheerio:o}=e,i=(yield n.get(t)).data;let r=o.load(i);const s=[];return r('a:contains("HubCloud")').map((t,e)=>{const n=r(e).parent().prev().text(),o=r(e).attr("href");o&&(n.includes("Ep")||n.includes("Download"))&&s.push({title:n.includes("Download")?"Play":n,link:o})}),s}catch(e){return[{title:"Server 1",link:t}]}})};exports.getEpisodes=getEpisodes; \ No newline at end of file +"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 }); +exports.getEpisodes = void 0; +const getEpisodes = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) { + try { + const { axios, cheerio } = providerContext; + const res = yield axios.get(url); + const html = res.data; + let $ = cheerio.load(html); + const episodeLinks = []; + $('a:contains("HubCloud")').map((i, element) => { + const title = $(element).parent().prev().text(); + const link = $(element).attr("href"); + if (link && (title.includes("Ep") || title.includes("Download"))) { + episodeLinks.push({ + title: title.includes("Download") ? "Play" : title, + link, + }); + } + }); + // console.log(episodeLinks); + return episodeLinks; + } + catch (err) { + console.error(err); + return [ + { + title: "Server 1", + link: url, + }, + ]; + } + }); +}; +exports.getEpisodes = getEpisodes; diff --git a/dist/drive/meta.js b/dist/drive/meta.js index e43959b..2e4bc21 100644 --- a/dist/drive/meta.js +++ b/dist/drive/meta.js @@ -1 +1,85 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))(function(a,o){function r(t){try{c(i.next(t))}catch(t){o(t)}}function s(t){try{c(i.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?a(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(r,s)}c((i=i.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){var n;try{const{axios:i,cheerio:a}=e,o=t,r=(yield i.get(o)).data,s=a.load(r),c=s(".left-wrapper").text().toLocaleLowerCase().includes("movie name")?"movie":"series",p=(null===(n=s('a:contains("IMDb")').attr("href"))||void 0===n?void 0:n.split("/")[4])||"",l=s(".left-wrapper").find('strong:contains("Name")').next().text()||s(".left-wrapper").find('strong:contains("Name"),h5:contains("Name")').find("span:first").text(),d=s(".left-wrapper").find('h2:contains("Storyline"),h3:contains("Storyline"),h5:contains("Storyline"),h4:contains("Storyline"),h4:contains("STORYLINE")').next().text()||s(".ipc-html-content-inner-div").text()||"",u=s("img.entered.lazyloaded,img.entered,img.litespeed-loaded").attr("src")||s("img.aligncenter").attr("src")||"",v=[];return s('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((t,e)=>{var n;const i=s(e).parent("h5").prev().text(),a=s(e).attr("href"),o=(null===(n=i.match(/\b(480p|720p|1080p|2160p)\b/i))||void 0===n?void 0:n[0])||"";a&&i&&v.push({title:i,episodesLink:"series"===c?a:"",directLinks:"movie"===c?[{title:"Movie",link:a,type:"movie"}]:[],quality:o})}),{title:l,synopsis:d,image:u,imdbId:p,type:c,linkList:v}}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b; + try { + const { axios, cheerio } = providerContext; + const url = link; + const res = yield axios.get(url); + const data = res.data; + const $ = cheerio.load(data); + const type = $(".left-wrapper") + .text() + .toLocaleLowerCase() + .includes("movie name") + ? "movie" + : "series"; + const imdbId = ((_b = $('a:contains("IMDb")').attr("href")) === null || _b === void 0 ? void 0 : _b.split("/")[4]) || ""; + const title = $(".left-wrapper").find('strong:contains("Name")').next().text() || + $(".left-wrapper") + .find('strong:contains("Name"),h5:contains("Name")') + .find("span:first") + .text(); + const synopsis = $(".left-wrapper") + .find('h2:contains("Storyline"),h3:contains("Storyline"),h5:contains("Storyline"),h4:contains("Storyline"),h4:contains("STORYLINE")') + .next() + .text() || + $(".ipc-html-content-inner-div").text() || + ""; + const image = $("img.entered.lazyloaded,img.entered,img.litespeed-loaded").attr("src") || + $("img.aligncenter").attr("src") || + ""; + // Links + 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) => { + var _a; + const title = $(element).parent("h5").prev().text(); + const episodesLink = $(element).attr("href"); + const quality = ((_a = title.match(/\b(480p|720p|1080p|2160p)\b/i)) === null || _a === void 0 ? void 0 : _a[0]) || ""; + if (episodesLink && title) { + links.push({ + title, + episodesLink: type === "series" ? episodesLink : "", + 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, + synopsis, + image, + imdbId, + type, + linkList: links, + }; + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/drive/posts.js b/dist/drive/posts.js index c397ae5..3e9091b 100644 --- a/dist/drive/posts.js +++ b/dist/drive/posts.js @@ -1 +1,60 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{c(n.next(t))}catch(t){o(t)}}function a(t){try{c(n.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,signal:r,providerContext:n}){const{getBaseUrl:i}=n;return posts({url:`${(yield i("drive"))+t}/page/${e}/`,signal:r,providerContext:n})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:r,providerContext:n}){const{getBaseUrl:i}=n;return posts({url:`${yield i("drive")}page/${e}/?s=${t}`,signal:r,providerContext:n})})};function posts(t){return __awaiter(this,arguments,void 0,function*({url:t,signal:e,providerContext:r}){try{const{cheerio:n}=r,i=yield fetch(t,{signal:e}),o=yield i.text(),s=n.load(o),a=[];return s(".recent-movies").children().map((t,e)=>{const r=s(e).find("figure").find("img").attr("alt"),n=s(e).find("a").attr("href"),i=s(e).find("figure").find("img").attr("src");r&&n&&i&&a.push({title:r.replace("Download","").trim(),link:n,image:i})}),a}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) { + const { getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("drive"); + const url = `${baseUrl + filter}/page/${page}/`; + return posts({ url, signal, providerContext }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) { + const { getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("drive"); + const url = `${baseUrl}page/${page}/?s=${searchQuery}`; + return posts({ url, signal, providerContext }); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ url, signal, providerContext, }) { + try { + const { cheerio } = providerContext; + const res = yield fetch(url, { signal }); + const data = yield res.text(); + const $ = cheerio.load(data); + const catalog = []; + $(".recent-movies") + .children() + .map((i, element) => { + const title = $(element).find("figure").find("img").attr("alt"); + const link = $(element).find("a").attr("href"); + const image = $(element).find("figure").find("img").attr("src"); + if (title && link && image) { + catalog.push({ + title: title.replace("Download", "").trim(), + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + console.error("drive error ", err); + return []; + } + }); +} diff --git a/dist/drive/stream.js b/dist/drive/stream.js index 8a4bfaa..4272aaa 100644 --- a/dist/drive/stream.js +++ b/dist/drive/stream.js @@ -1 +1,45 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,a){return new(r||(r=Promise))(function(o,n){function i(t){try{s(a.next(t))}catch(t){n(t)}}function c(t){try{s(a.throw(t))}catch(t){n(t)}}function s(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(i,c)}s((a=a.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=function(t){return __awaiter(this,arguments,void 0,function*({link:t,type:e,signal:r,providerContext:a}){var o,n;const i=a.commonHeaders;try{if("movie"===e){const e=(yield a.axios.get(t,{headers:i})).data,r=a.cheerio.load(e);t=r('a:contains("HubCloud")').attr("href")||t}const c=yield a.axios.get(t,{headers:i});let s=null===(o=c.data.match(//i))||void 0===o?void 0:o[1];if(t.includes("/archives/")&&(s=null===(n=c.data.match(/]*href="(https:\/\/hubcloud\.[^\/]+\/[^"]+)"/i))||void 0===n?void 0:n[1]),!s)return yield a.extractors.hubcloudExtracter(t,r);const d=(yield a.axios.get(s,{headers:i})).data,u=a.cheerio.load(d)(".fa-file-download").parent().attr("href");return yield a.extractors.hubcloudExtracter((null==u?void 0:u.includes("https://hubcloud"))?u:s,r)}catch(t){return[]}})};exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link: url, type, signal, providerContext, }) { + var _b, _c; + const headers = providerContext.commonHeaders; + try { + if (type === "movie") { + const res = yield providerContext.axios.get(url, { headers }); + const html = res.data; + 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(//i)) === null || _b === void 0 ? void 0 : _b[1]; + if (url.includes("/archives/")) { + redirectUrl = (_c = res.data.match(/]*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); + } + catch (err) { + console.error("Movies Drive err", err); + return []; + } + }); +}; +exports.getStream = getStream; diff --git a/dist/filmyfly/catalog.js b/dist/filmyfly/catalog.js index f889a03..6b05714 100644 --- a/dist/filmyfly/catalog.js +++ b/dist/filmyfly/catalog.js @@ -1 +1,18 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Home",filter:""},{title:"Web Series",filter:"/page-cat/42/Web-Series.html"},{title:"Hollywood",filter:"/page-cat/9/New-Hollywood-Hindi-Dubbed-Movie-2016-2025.html"}],exports.genres=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Home", + filter: "", + }, + { + title: "Web Series", + filter: "/page-cat/42/Web-Series.html", + }, + { + title: "Hollywood", + filter: "/page-cat/9/New-Hollywood-Hindi-Dubbed-Movie-2016-2025.html", + }, +]; +exports.genres = []; diff --git a/dist/filmyfly/episodes.js b/dist/filmyfly/episodes.js index 505b83f..7c1171c 100644 --- a/dist/filmyfly/episodes.js +++ b/dist/filmyfly/episodes.js @@ -1 +1,43 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,o){return new(n||(n=Promise))(function(i,r){function a(t){try{d(o.next(t))}catch(t){r(t)}}function s(t){try{d(o.throw(t))}catch(t){r(t)}}function d(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(a,s)}d((o=o.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getEpisodes=void 0;const getEpisodes=function(t){return __awaiter(this,arguments,void 0,function*({url:t,providerContext:e}){try{const n=e.commonHeaders,{axios:o,cheerio:i}=e,r=(yield o.get(t,{headers:n})).data,a=i.load(r),s=[];return a(".dlink.dl").map((t,e)=>{var n,o;const i=null===(o=null===(n=a(e).find("a").text())||void 0===n?void 0:n.replace("Download",""))||void 0===o?void 0:o.trim(),r=a(e).find("a").attr("href");i&&r&&s.push({title:i,link:r})}),s}catch(t){return[]}})};exports.getEpisodes=getEpisodes; \ No newline at end of file +"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 }); +exports.getEpisodes = void 0; +const getEpisodes = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) { + try { + const headers = providerContext.commonHeaders; + const { axios, cheerio } = providerContext; + const res = yield axios.get(url, { headers }); + const data = res.data; + const $ = cheerio.load(data); + const episodeLinks = []; + $(".dlink.dl").map((i, element) => { + var _a, _b; + const title = (_b = (_a = $(element) + .find("a") + .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"); + if (title && link) { + episodeLinks.push({ + title, + link, + }); + } + }); + return episodeLinks; + } + catch (err) { + console.error("cl episode links", err); + return []; + } + }); +}; +exports.getEpisodes = getEpisodes; diff --git a/dist/filmyfly/meta.js b/dist/filmyfly/meta.js index 289bb37..1bb5e26 100644 --- a/dist/filmyfly/meta.js +++ b/dist/filmyfly/meta.js @@ -1 +1,63 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(o,r){function a(t){try{c(n.next(t))}catch(t){r(t)}}function s(t){try{c(n.throw(t))}catch(t){r(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(a,s)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){try{const{axios:i,cheerio:n,commonHeaders:o}=e,r=t,a=(yield i.get(r,{headers:o})).data,s=n.load(a),c=r.includes("tvshows")?"series":"movie",d="",f=s('.fname:contains("Name")').find(".colora").text().trim(),l=s(".ss").find("img").attr("src")||"",u=s('.fname:contains("Description")').find(".colorg").text().trim(),m=s('.fname:contains("Genre")').find(".colorb").text().split(",")||[],p="",h=[],g=s(".dlbtn").find("a").attr("href");return g&&h.push({title:f,episodesLink:g}),{title:f,tags:m,rating:p,synopsis:u,image:l,imdbId:d,type:c,linkList:h}}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + try { + const { axios, cheerio, commonHeaders: headers } = providerContext; + const url = link; + const res = yield axios.get(url, { headers }); + const data = res.data; + const $ = cheerio.load(data); + const type = url.includes("tvshows") ? "series" : "movie"; + const imdbId = ""; + const title = $('.fname:contains("Name")').find(".colora").text().trim(); + const image = $(".ss").find("img").attr("src") || ""; + const synopsis = $('.fname:contains("Description")') + .find(".colorg") + .text() + .trim(); + const tags = $('.fname:contains("Genre")').find(".colorb").text().split(",") || []; + const rating = ""; + const links = []; + const downloadLink = $(".dlbtn").find("a").attr("href"); + if (downloadLink) { + links.push({ + title: title, + episodesLink: downloadLink, + }); + } + return { + title, + tags, + rating, + synopsis, + image, + imdbId, + type, + linkList: links, + }; + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/filmyfly/posts.js b/dist/filmyfly/posts.js index 0c8b7b7..16469a0 100644 --- a/dist/filmyfly/posts.js +++ b/dist/filmyfly/posts.js @@ -1 +1,61 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))(function(s,o){function i(t){try{c(n.next(t))}catch(t){o(t)}}function a(t){try{c(n.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?s(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(i,a)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,signal:r,providerContext:n}){const{getBaseUrl:s}=n,o=yield s("filmyfly");return posts({url:`${o+t}/${e}`,signal:r,baseUrl:o,providerContext:n})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:r,providerContext:n}){const{getBaseUrl:s}=n,o=yield s("filmyfly");return e>1?[]:posts({url:`${o}/site-1.html?to-search=${t}`,signal:r,baseUrl:o,providerContext:n})})};function posts(t){return __awaiter(this,arguments,void 0,function*({url:t,signal:e,baseUrl:r,providerContext:n}){try{const{cheerio:s,commonHeaders:o}=n,i=yield fetch(t,{headers:o,signal:e}),a=yield i.text(),c=s.load(a),l=[];return c(".A2,.A10,.fl").map((t,e)=>{const n=c(e).find("a").eq(1).text()||c(e).find("b").text(),s=c(e).find("a").attr("href"),o=c(e).find("img").attr("src");n&&s&&o&&l.push({title:n,link:r+s,image:o})}),l}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) { + const { getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("filmyfly"); + const url = `${baseUrl + filter}/${page}`; + return posts({ url, signal, baseUrl, providerContext }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) { + const { getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("filmyfly"); + const url = `${baseUrl}/site-1.html?to-search=${searchQuery}`; + if (page > 1) { + return []; + } + return posts({ url, signal, baseUrl, providerContext }); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ url, signal, baseUrl, providerContext, }) { + try { + const { cheerio, commonHeaders: headers } = providerContext; + const res = yield fetch(url, { headers, signal }); + const data = yield res.text(); + const $ = cheerio.load(data); + const catalog = []; + $(".A2,.A10,.fl").map((i, element) => { + const title = $(element).find("a").eq(1).text() || $(element).find("b").text(); + const link = $(element).find("a").attr("href"); + const image = $(element).find("img").attr("src"); + if (title && link && image) { + catalog.push({ + title: title, + link: baseUrl + link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + console.error("ff error ", err); + return []; + } + }); +} diff --git a/dist/filmyfly/stream.js b/dist/filmyfly/stream.js index d21bb12..75235a7 100644 --- a/dist/filmyfly/stream.js +++ b/dist/filmyfly/stream.js @@ -1 +1,51 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))(function(r,o){function a(t){try{s(i.next(t))}catch(t){o(t)}}function c(t){try{s(i.throw(t))}catch(t){o(t)}}function s(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(a,c)}s((i=i.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=function(t){return __awaiter(this,arguments,void 0,function*({link:t,signal:e,providerContext:n}){try{const i=(yield n.axios.get(t,{signal:e})).data,r=n.cheerio.load(i),o=[],a=r(".button2,.button1,.button3,.button4,.button").toArray().map(t=>__awaiter(this,void 0,void 0,function*(){const i=r(t).text();let a=r(t).attr("href");if(i.includes("GDFLIX")&&a){const t=yield n.extractors.gdFlixExtracter(a,e);o.push(...t)}const c=o.find(t=>t.link===a);!i||!a||i.includes("Watch")||i.includes("Login")||i.includes("GoFile")||c||o.push({server:i,link:a,type:"mkv"})}));return yield Promise.all(a),o}catch(t){return[]}})};exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, signal, providerContext, }) { + try { + const res = yield providerContext.axios.get(link, { signal }); + const data = res.data; + const $ = providerContext.cheerio.load(data); + const streams = []; + const elements = $(".button2,.button1,.button3,.button4,.button").toArray(); + const promises = elements.map((element) => __awaiter(this, void 0, void 0, function* () { + const title = $(element).text(); + let link = $(element).attr("href"); + if (title.includes("GDFLIX") && link) { + const gdLinks = yield providerContext.extractors.gdFlixExtracter(link, signal); + streams.push(...gdLinks); + } + const alreadyAdded = streams.find((s) => s.link === link); + if (title && + link && + !title.includes("Watch") && + !title.includes("Login") && + !title.includes("GoFile") && + !alreadyAdded) { + streams.push({ + server: title, + link: link, + type: "mkv", + }); + } + })); + yield Promise.all(promises); + return streams; + } + catch (err) { + console.error(err); + return []; + } + }); +}; +exports.getStream = getStream; diff --git a/dist/flixhq/catalog.js b/dist/flixhq/catalog.js index 0ad3dbd..40b7453 100644 --- a/dist/flixhq/catalog.js +++ b/dist/flixhq/catalog.js @@ -1 +1,18 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Trending",filter:"/trending"},{title:"Movies",filter:"/recent-movies"},{title:"TV Shows",filter:"/recent-shows"}],exports.genres=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Trending", + filter: "/trending", + }, + { + title: "Movies", + filter: "/recent-movies", + }, + { + title: "TV Shows", + filter: "/recent-shows", + }, +]; +exports.genres = []; diff --git a/dist/flixhq/meta.js b/dist/flixhq/meta.js index ea3bf7e..9183905 100644 --- a/dist/flixhq/meta.js +++ b/dist/flixhq/meta.js @@ -1 +1,64 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(s,o){function a(t){try{l(n.next(t))}catch(t){o(t)}}function r(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?s(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(a,r)}l((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){try{const{axios:i,getBaseUrl:n}=e,s=`${yield n("consumet")}/movies/flixhq/info?id=`+t,o=(yield i.get(s)).data,a={title:o.title,synopsis:o.description.replace(/<[^>]*>?/gm,"").trim(),image:o.cover,cast:o.casts,rating:o.rating,tags:[null==o?void 0:o.type,null==o?void 0:o.duration,o.releaseDate.split("-")[0]],imdbId:"",type:o.episodes.length>1?"series":"movie"},r=[];return o.episodes.forEach(t=>{const e=(null==t?void 0:t.number)?"Season-"+(null==t?void 0:t.season)+" Ep-"+t.number:t.title,i=t.id+"*"+o.id;i&&e&&r.push({title:e,link:i})}),Object.assign(Object.assign({},a),{linkList:[{title:a.title,directLinks:r}]})}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link: id, providerContext, }) { + try { + const { axios, getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("consumet"); + const url = `${baseUrl}/movies/flixhq/info?id=` + id; + const res = yield axios.get(url); + const data = res.data; + const meta = { + title: data.title, + synopsis: data.description.replace(/<[^>]*>?/gm, "").trim(), + image: data.cover, + cast: data.casts, + rating: data.rating, + tags: [data === null || data === void 0 ? void 0 : data.type, data === null || data === void 0 ? void 0 : data.duration, data.releaseDate.split("-")[0]], + imdbId: "", + type: data.episodes.length > 1 ? "series" : "movie", + }; + const links = []; + data.episodes.forEach((episode) => { + const title = (episode === null || episode === void 0 ? void 0 : episode.number) + ? "Season-" + (episode === null || episode === void 0 ? void 0 : episode.season) + " Ep-" + episode.number + : episode.title; + const link = episode.id + "*" + data.id; + if (link && title) { + links.push({ + title, + link, + }); + } + }); + return Object.assign(Object.assign({}, meta), { linkList: [ + { + title: meta.title, + directLinks: links, + }, + ] }); + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/flixhq/posts.js b/dist/flixhq/posts.js index b580103..60d14f1 100644 --- a/dist/flixhq/posts.js +++ b/dist/flixhq/posts.js @@ -1 +1,60 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,o){return new(n||(n=Promise))(function(r,s){function i(t){try{u(o.next(t))}catch(t){s(t)}}function a(t){try{u(o.throw(t))}catch(t){s(t)}}function u(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(i,a)}u((o=o.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,signal:e,providerContext:n}){const{getBaseUrl:o}=n;return posts({url:`${(yield o("consumet"))+"/movies/flixhq"+t}`,signal:e,providerContext:n})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:n,providerContext:o}){const{getBaseUrl:r}=o;return posts({url:`${(yield r("consumet"))+"/movies/flixhq"}/${t}?page=${e}`,signal:n,providerContext:o})})};function posts(t){return __awaiter(this,arguments,void 0,function*({url:t,signal:e,providerContext:n}){var o;try{const{axios:r}=n,s=yield r.get(t,{signal:e}),i=(null===(o=s.data)||void 0===o?void 0:o.results)||s.data,a=[];return null==i||i.map(t=>{const e=t.title,n=t.id,o=t.image;e&&n&&o&&a.push({title:e,link:n,image:o})}),a}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, signal, providerContext, }) { + const { getBaseUrl } = providerContext; + const urlRes = yield getBaseUrl("consumet"); + const baseUrl = urlRes + "/movies/flixhq"; + const url = `${baseUrl + filter}`; + return posts({ url, signal, providerContext }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) { + const { getBaseUrl } = providerContext; + const urlRes = yield getBaseUrl("consumet"); + const baseUrl = urlRes + "/movies/flixhq"; + const url = `${baseUrl}/${searchQuery}?page=${page}`; + return posts({ url, signal, providerContext }); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ url, signal, providerContext, }) { + var _b; + try { + const { axios } = providerContext; + const res = yield axios.get(url, { signal }); + const data = ((_b = res.data) === null || _b === void 0 ? void 0 : _b.results) || res.data; + const catalog = []; + data === null || data === void 0 ? void 0 : data.map((element) => { + const title = element.title; + const link = element.id; + const image = element.image; + if (title && link && image) { + catalog.push({ + title: title, + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + console.error("flixhq error ", err); + return []; + } + }); +} diff --git a/dist/flixhq/stream.js b/dist/flixhq/stream.js index 74b5364..ffbebd2 100644 --- a/dist/flixhq/stream.js +++ b/dist/flixhq/stream.js @@ -1 +1,68 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(o,l){function r(e){try{u(n.next(e))}catch(e){l(e)}}function s(e){try{u(n.throw(e))}catch(e){l(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(r,s)}u((n=n.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=function(e){return __awaiter(this,arguments,void 0,function*({link:e,providerContext:t}){var i;try{const{getBaseUrl:n}=t,o=e.split("*")[0],l=e.split("*")[1],r=yield n("consumet"),s=`${r}/movies/flixhq/servers?episodeId=${o}&mediaId=${l}`,u=yield fetch(s),a=yield u.json(),c=[];for(const e of a){const t=`${r}/movies/flixhq/watch?server=`+e.name+"&episodeId="+o+"&mediaId="+l,n=yield fetch(t),s=yield n.json(),u=[];(null===(i=null==s?void 0:s.sources)||void 0===i?void 0:i.length)>0&&(s.subtitles&&s.subtitles.forEach(e=>{var t;u.push({language:null===(t=null==e?void 0:e.lang)||void 0===t?void 0:t.slice(0,2),uri:null==e?void 0:e.url,type:"text/vtt",title:null==e?void 0:e.lang})}),s.sources.forEach(t=>{var i;c.push({server:(null==e?void 0:e.name)+"-"+(null===(i=null==t?void 0:t.quality)||void 0===i?void 0:i.replace("auto","MultiQuality")),link:t.url,type:t.isM3U8?"m3u8":"mp4",subtitles:u})}))}return c}catch(e){return[]}})};exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link: id, providerContext, }) { + var _b; + try { + const { getBaseUrl } = providerContext; + const episodeId = id.split("*")[0]; + const mediaId = id.split("*")[1]; + const baseUrl = yield getBaseUrl("consumet"); + const serverUrl = `${baseUrl}/movies/flixhq/servers?episodeId=${episodeId}&mediaId=${mediaId}`; + const res = yield fetch(serverUrl); + const servers = yield res.json(); + const streamLinks = []; + for (const server of servers) { + const streamUrl = `${baseUrl}/movies/flixhq/watch?server=` + + server.name + + "&episodeId=" + + episodeId + + "&mediaId=" + + mediaId; + const streamRes = yield fetch(streamUrl); + const streamData = yield streamRes.json(); + const subtitles = []; + if (((_b = streamData === null || streamData === void 0 ? void 0 : streamData.sources) === null || _b === void 0 ? void 0 : _b.length) > 0) { + if (streamData.subtitles) { + streamData.subtitles.forEach((sub) => { + var _a; + subtitles.push({ + 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: "text/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, + }); + }); + } + } + return streamLinks; + } + catch (err) { + console.error(err); + return []; + } + }); +}; +exports.getStream = getStream; diff --git a/dist/gdflixExtractor.js b/dist/gdflixExtractor.js index d821cfb..33ec793 100644 --- a/dist/gdflixExtractor.js +++ b/dist/gdflixExtractor.js @@ -1 +1,211 @@ -"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var a=Object.getOwnPropertyDescriptor(t,r);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,a)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var i=e(t),a=0;a__awaiter(void 0,void 0,void 0,function*(){try{let t="";const n=yield fetch("https://himanshu8443.github.io/providers/modflix.json");return t=(yield n.json())[e].url,t}catch(e){return""}});exports.getBaseUrl=getBaseUrl; \ No newline at end of file +"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 }); +exports.getBaseUrl = void 0; +// 1 hour +const expireTime = 60 * 60 * 1000; +const getBaseUrl = (providerValue) => __awaiter(void 0, void 0, void 0, function* () { + try { + let baseUrl = ""; + const cacheKey = "CacheBaseUrl" + providerValue; + const timeKey = "baseUrlTime" + providerValue; + // const cachedUrl = cacheStorageService.getString(cacheKey); + // const cachedTime = cacheStorageService.getObject(timeKey); + // if (cachedUrl && cachedTime && Date.now() - cachedTime < expireTime) { + // baseUrl = cachedUrl; + // } else { + const baseUrlRes = yield fetch("https://himanshu8443.github.io/providers/modflix.json"); + const baseUrlData = yield baseUrlRes.json(); + baseUrl = baseUrlData[providerValue].url; + // cacheStorageService.setString(cacheKey, baseUrl); + // cacheStorageService.setObject(timeKey, Date.now()); + // } + return baseUrl; + } + catch (error) { + console.error(`Error fetching baseUrl: ${providerValue}`, error); + return ""; + } +}); +exports.getBaseUrl = getBaseUrl; diff --git a/dist/gofileExtracter.js b/dist/gofileExtracter.js index 5f5dff4..5ea2122 100644 --- a/dist/gofileExtracter.js +++ b/dist/gofileExtracter.js @@ -1 +1,48 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,a,i){return new(a||(a=Promise))(function(o,n){function r(t){try{l(i.next(t))}catch(t){n(t)}}function s(t){try{l(i.throw(t))}catch(t){n(t)}}function l(t){var e;t.done?o(t.value):(e=t.value,e instanceof a?e:new a(function(t){t(e)})).then(r,s)}l((i=i.apply(t,e||[])).next())})},__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.gofileExtracter=gofileExtracter;const axios_1=__importDefault(require("axios"));function gofileExtracter(t){return __awaiter(this,void 0,void 0,function*(){try{yield axios_1.default.get("https://gofile.io/d/"+t);const e=(yield axios_1.default.post("https://api.gofile.io/accounts")).data.data.token,a=(yield axios_1.default.get("https://gofile.io/dist/js/global.js")).data.match(/appdata\.wt\s*=\s*["']([^"']+)["']/)[1],i=yield axios_1.default.get(`https://api.gofile.io/contents/${t}?wt=${a}`,{headers:{Authorization:`Bearer ${e}`}}),o=Object.keys(i.data.data.children)[0];return{link:i.data.data.children[o].link,token:e}}catch(t){return{link:"",token:""}}})} \ No newline at end of file +"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) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.gofileExtracter = gofileExtracter; +const axios_1 = __importDefault(require("axios")); +function gofileExtracter(id) { + return __awaiter(this, void 0, void 0, function* () { + try { + const gofileRes = yield axios_1.default.get('https://gofile.io/d/' + id); + const genAccountres = yield axios_1.default.post('https://api.gofile.io/accounts'); + const token = genAccountres.data.data.token; + console.log('gofile token', token); + const wtRes = yield axios_1.default.get('https://gofile.io/dist/js/global.js'); + const wt = wtRes.data.match(/appdata\.wt\s*=\s*["']([^"']+)["']/)[1]; + console.log('gofile wt', wt); + const res = yield axios_1.default.get(`https://api.gofile.io/contents/${id}?wt=${wt}`, { + headers: { + Authorization: `Bearer ${token}`, + }, + }); + const oId = Object.keys(res.data.data.children)[0]; + console.log('gofile extracter', res.data.data.children[oId].link); + const link = res.data.data.children[oId].link; + return { + link, + token, + }; + } + catch (e) { + console.log('gofile extracter err', e); + return { + link: '', + token: '', + }; + } + }); +} diff --git a/dist/guardahd/catalog.js b/dist/guardahd/catalog.js index 7de0cb2..0e38e58 100644 --- a/dist/guardahd/catalog.js +++ b/dist/guardahd/catalog.js @@ -1 +1,14 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Popular Movies",filter:"/top/catalog/movie/top.json"},{title:"Featured Movies",filter:"/imdbRating/catalog/movie/imdbRating.json"}],exports.genres=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Popular Movies", + filter: "/top/catalog/movie/top.json", + }, + { + title: "Featured Movies", + filter: "/imdbRating/catalog/movie/imdbRating.json", + }, +]; +exports.genres = []; diff --git a/dist/guardahd/meta.js b/dist/guardahd/meta.js index 474fa35..6349003 100644 --- a/dist/guardahd/meta.js +++ b/dist/guardahd/meta.js @@ -1 +1,99 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(i,e,t,o){return new(t||(t=Promise))(function(l,n){function d(i){try{s(o.next(i))}catch(i){n(i)}}function v(i){try{s(o.throw(i))}catch(i){n(i)}}function s(i){var e;i.done?l(i.value):(e=i.value,e instanceof t?e:new t(function(i){i(e)})).then(d,v)}s((o=o.apply(i,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(i){return __awaiter(this,arguments,void 0,function*({link:i,providerContext:e}){var t,o,l,n,d,v,s,a,u,r,m;const p=e.axios;try{const e=(yield p.get(i)).data,y={title:"",synopsis:"",image:"",imdbId:(null===(t=null==e?void 0:e.meta)||void 0===t?void 0:t.imdb_id)||"",type:(null===(o=null==e?void 0:e.meta)||void 0===o?void 0:o.type)||"movie"},c=[];let g=[],b=new Map;if("series"===y.type){null===(n=null===(l=null==e?void 0:e.meta)||void 0===l?void 0:l.videos)||void 0===n||n.map(i=>{var t,o,l,n,d,v,s,a;(null==i?void 0:i.season)<=0||(b.has(null==i?void 0:i.season)||b.set(null==i?void 0:i.season,[]),b.get(null==i?void 0:i.season).push({title:"Episode "+(null==i?void 0:i.episode),type:"series",link:JSON.stringify({title:null===(t=null==e?void 0:e.meta)||void 0===t?void 0:t.name,imdbId:null===(o=null==e?void 0:e.meta)||void 0===o?void 0:o.imdb_id,season:null===(l=null==i?void 0:i.id)||void 0===l?void 0:l.split(":")[1],episode:null===(n=null==i?void 0:i.id)||void 0===n?void 0:n.split(":")[2],type:null===(d=null==e?void 0:e.meta)||void 0===d?void 0:d.type,tmdbId:(null===(s=null===(v=null==e?void 0:e.meta)||void 0===v?void 0:v.moviedb_id)||void 0===s?void 0:s.toString())||"",year:null===(a=null==e?void 0:e.meta)||void 0===a?void 0:a.year})}))});const i=Array.from(b.keys());i.sort(),i.map(i=>{g=b.get(i),c.push({title:`Season ${i}`,directLinks:g})})}else c.push({title:null===(d=null==e?void 0:e.meta)||void 0===d?void 0:d.name,directLinks:[{title:"Movie",type:"movie",link:JSON.stringify({title:null===(v=null==e?void 0:e.meta)||void 0===v?void 0:v.name,imdbId:null===(s=null==e?void 0:e.meta)||void 0===s?void 0:s.imdb_id,season:"",episode:"",type:null===(a=null==e?void 0:e.meta)||void 0===a?void 0:a.type,tmdbId:(null===(r=null===(u=null==e?void 0:e.meta)||void 0===u?void 0:u.moviedb_id)||void 0===r?void 0:r.toString())||"",year:null===(m=null==e?void 0:e.meta)||void 0===m?void 0:m.year})}]});return Object.assign(Object.assign({},y),{linkList:c})}catch(i){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; + const axios = providerContext.axios; + try { + console.log("all", link); + const res = yield axios.get(link); + const data = res.data; + 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 links = []; + let directLinks = []; + let season = new Map(); + if (meta.type === "series") { + (_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) => { + var _a, _b, _c, _d, _e, _f, _g, _h; + 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), + type: "series", + link: JSON.stringify({ + title: (_a = data === null || data === void 0 ? void 0 : data.meta) === null || _a === void 0 ? void 0 : _a.name, + imdbId: (_b = data === null || data === void 0 ? void 0 : data.meta) === null || _b === void 0 ? void 0 : _b.imdb_id, + season: (_c = video === null || video === void 0 ? void 0 : video.id) === null || _c === void 0 ? void 0 : _c.split(":")[1], + episode: (_d = video === null || video === void 0 ? void 0 : video.id) === null || _d === void 0 ? void 0 : _d.split(":")[2], + type: (_e = data === null || data === void 0 ? void 0 : data.meta) === null || _e === void 0 ? void 0 : _e.type, + 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: (_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 }); + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/guardahd/posts.js b/dist/guardahd/posts.js index 482bcd5..2fb59be 100644 --- a/dist/guardahd/posts.js +++ b/dist/guardahd/posts.js @@ -1 +1,79 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,o){return new(n||(n=Promise))(function(i,s){function a(t){try{c(o.next(t))}catch(t){s(t)}}function r(t){try{c(o.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(a,r)}c((o=o.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,signal:e,providerContext:n}){try{const o=[],i="https://cinemeta-catalogs.strem.io"+t,s=(yield n.axios.get(i,{headers:n.commonHeaders,signal:e})).data;return null==s||s.metas.map(t=>{const e=null==t?void 0:t.name,n=(null==t?void 0:t.imdb_id)||(null==t?void 0:t.id),i=null==t?void 0:t.type,s=null==t?void 0:t.poster;n&&o.push({title:e,link:`https://v3-cinemeta.strem.io/meta/${i}/${n}.json`,image:s})}),o}catch(t){return[]}})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:n,providerContext:o}){try{const{axios:i,commonHeaders:s}=o;if(e>1)return[];const a=[],r=`https://v3-cinemeta.strem.io/catalog/movie/top/search=${encodeURI(t)}.json`,c=(yield i.get(r,{headers:s,signal:n})).data;return null==c||c.metas.map(t=>{const e=(null==t?void 0:t.name)||"",n=(null==t?void 0:t.imdb_id)||(null==t?void 0:t.id),o=null==t?void 0:t.poster,i=null==t?void 0:t.type;n&&a.push({title:e,link:`https://v3-cinemeta.strem.io/meta/${i}/${n}.json`,image:o})}),a}catch(t){return[]}})};exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, signal, providerContext, }) { + try { + const catalog = []; + const url = "https://cinemeta-catalogs.strem.io" + filter; + console.log("allGetPostUrl", url); + const res = yield providerContext.axios.get(url, { + headers: providerContext.commonHeaders, + signal, + }); + const data = res.data; + data === null || data === void 0 ? void 0 : data.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 type = result === null || result === void 0 ? void 0 : result.type; + const image = result === null || result === void 0 ? void 0 : result.poster; + if (id) { + catalog.push({ + title: title, + link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`, + image: image, + }); + } + }); + console.log("catalog", catalog.length); + return catalog; + } + catch (err) { + console.error("AutoEmbed error ", err); + return []; + } + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) { + try { + const { axios, commonHeaders: headers } = providerContext; + if (page > 1) { + return []; + } + const catalog = []; + const url2 = `https://v3-cinemeta.strem.io/catalog/movie/top/search=${encodeURI(searchQuery)}.json`; + const res2 = yield axios.get(url2, { headers, 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; diff --git a/dist/guardahd/stream.js b/dist/guardahd/stream.js index dd10f1a..52ac9a9 100644 --- a/dist/guardahd/stream.js +++ b/dist/guardahd/stream.js @@ -1 +1,117 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(r,o){function a(t){try{u(n.next(t))}catch(t){o(t)}}function s(t){try{u(n.throw(t))}catch(t){o(t)}}function u(t){var e;t.done?r(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(a,s)}u((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=function(t){return __awaiter(this,arguments,void 0,function*({link:t,type:e,providerContext:i}){try{const{axios:n,cheerio:r,extractors:o}=i,{superVideoExtractor:a}=o;function s(t){return __awaiter(this,arguments,void 0,function*({imdb:t}){try{const e="https://guardahd.stream"+("/set-movie-a/"+t),i=(yield n.get(e,{timeout:4e3})).data,o=r.load(i)('li:contains("supervideo")').attr("data-link");if(!o)return null;const s=new AbortController,u=s.signal;setTimeout(()=>s.abort(),4e3);const c=yield fetch("https:"+o,{signal:u}),d=yield c.text();return yield a(d)}catch(t){}})}function u(t){return __awaiter(this,arguments,void 0,function*({imdb:t,type:e,season:i,episode:o}){try{const s="https://mostraguarda.stream"+("tv"===e?`/serie/${t}/${i}/${o}`:`/movie/${t}`),u=(yield n(s,{timeout:4e3})).data,c=r.load(u)('li:contains("supervideo")').attr("data-link");if(!c)return null;const d=new AbortController,l=d.signal;setTimeout(()=>d.abort(),4e3);const p=yield fetch("https:"+c,{signal:l}),y=yield p.text();return yield a(y)}catch(t){}})}const c=[],{imdbId:d,season:l,episode:p}=JSON.parse(t),y=yield u({imdb:d,type:e,season:l,episode:p});y&&c.push({server:"Supervideo 1",link:y,type:"m3u8"});const h=yield s({imdb:d,type:e,season:l,episode:p});return h&&c.push({server:"Supervideo 2",link:h,type:"m3u8"}),c}catch(m){return[]}})};exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link: id, type, providerContext, }) { + try { + const { axios, cheerio, extractors } = providerContext; + const { superVideoExtractor } = extractors; + function ExtractGuardahd(_a) { + return __awaiter(this, arguments, void 0, function* ({ imdb, // type, // season, + }) { + try { + const baseUrl = "https://guardahd.stream"; + const path = "/set-movie-a/" + imdb; + const url = baseUrl + path; + console.log("url:", url); + const res = yield axios.get(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); + } + }); + } + function GetMostraguardaStream(_a) { + 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); + const streams = []; + const { imdbId, season, episode } = JSON.parse(id); + ///// mostraguarda + const mostraguardaStream = yield GetMostraguardaStream({ + imdb: imdbId, + type: type, + season: season, + episode: episode, + }); + if (mostraguardaStream) { + streams.push({ + server: "Supervideo 1", + link: mostraguardaStream, + type: "m3u8", + }); + } + const guardahdStream = yield ExtractGuardahd({ + imdb: imdbId, + type: type, + season: season, + episode: episode, + }); + if (guardahdStream) { + streams.push({ + server: "Supervideo 2", + link: guardahdStream, + type: "m3u8", + }); + } + return streams; + } + catch (err) { + console.error(err); + return []; + } + }); +}; +exports.getStream = getStream; diff --git a/dist/hdhub4u/catalog.js b/dist/hdhub4u/catalog.js index f41ac7b..2706ac3 100644 --- a/dist/hdhub4u/catalog.js +++ b/dist/hdhub4u/catalog.js @@ -1 +1,63 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Latest",filter:""},{title:"Web Series",filter:"/category/web-series"},{title:"Hollywood ",filter:"/category/hollywood-movies"},{title:"South Movies",filter:"/category/south-hindi-movies"}],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"}]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Latest", + filter: "", + }, + { + title: "Web Series", + filter: "/category/web-series", + }, + { + title: "Hollywood ", + filter: "/category/hollywood-movies", + }, + { + title: "South Movies", + filter: "/category/south-hindi-movies", + }, +]; +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", + }, +]; diff --git a/dist/hdhub4u/meta.js b/dist/hdhub4u/meta.js index a15f2f3..2ab5e49 100644 --- a/dist/hdhub4u/meta.js +++ b/dist/hdhub4u/meta.js @@ -1 +1,127 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))(function(a,o){function r(t){try{c(i.next(t))}catch(t){o(t)}}function s(t){try{c(i.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?a(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(r,s)}c((i=i.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const hdbHeaders={Cookie:"xla=s4t",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"},getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){var n;try{const{axios:i,cheerio:a}=e,o=t,r=(yield i.get(o,{headers:hdbHeaders})).data,s=a.load(r),c=s(".page-body"),d=(null===(n=c.find('a[href*="imdb.com/title/tt"]:not([href*="imdb.com/title/tt/"])').attr("href"))||void 0===n?void 0:n.split("/")[4])||"",l=c.find('h2[data-ved="2ahUKEwjL0NrBk4vnAhWlH7cAHRCeAlwQ3B0oATAfegQIFBAM"],h2[data-ved="2ahUKEwiP0pGdlermAhUFYVAKHV8tAmgQ3B0oATAZegQIDhAM"]').text(),p=l.toLocaleLowerCase().includes("season")?"series":"movie",h=c.find('strong:contains("DESCRIPTION")').parent().text().replace("DESCRIPTION:",""),f=c.find('img[decoding="async"]').attr("src")||"",u=[],g=[];return s('strong:contains("EPiSODE")').map((t,e)=>{const n=s(e).parent().parent().text(),i=s(e).parent().parent().parent().next().next().find("a").attr("href")||s(e).parent().parent().parent().next().find("a").attr("href");i&&i&&g.push({title:n,link:i})}),0===g.length&&c.find('a:contains("EPiSODE")').map((t,e)=>{const n=s(e).text(),i=s(e).attr("href");i&&g.push({title:n.toLocaleUpperCase(),link:i})}),g.length>0&&u.push({title:l,directLinks:g}),0===g.length&&c.find('a:contains("480"),a:contains("720"),a:contains("1080"),a:contains("2160"),a:contains("4K")').map((t,e)=>{var n;const i=(null===(n=s(e).text().match(/\b(480p|720p|1080p|2160p)\b/i))||void 0===n?void 0:n[0])||"",a=s(e).attr("href"),o=s(e).text();a&&u.push({directLinks:[{link:a,title:"Movie",type:"movie"}],quality:i,title:o})}),{title:l,synopsis:h,image:f,imdbId:d,type:p,linkList:u}}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const hdbHeaders = { + Cookie: "xla=s4t", + 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", +}; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b; + try { + const { axios, cheerio } = providerContext; + const url = link; + const res = yield axios.get(url, { headers: hdbHeaders }); + const data = res.data; + const $ = cheerio.load(data); + const container = $(".page-body"); + const imdbId = ((_b = container + .find('a[href*="imdb.com/title/tt"]:not([href*="imdb.com/title/tt/"])') + .attr("href")) === null || _b === void 0 ? void 0 : _b.split("/")[4]) || ""; + const title = container + .find('h2[data-ved="2ahUKEwjL0NrBk4vnAhWlH7cAHRCeAlwQ3B0oATAfegQIFBAM"],h2[data-ved="2ahUKEwiP0pGdlermAhUFYVAKHV8tAmgQ3B0oATAZegQIDhAM"]') + .text(); + const type = title.toLocaleLowerCase().includes("season") + ? "series" + : "movie"; + const synopsis = container + .find('strong:contains("DESCRIPTION")') + .parent() + .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() + .next() + .next() + .find("a") + .attr("href") || + $(element).parent().parent().parent().next().find("a").attr("href"); + if (episodesLink && episodesLink) { + directLink.push({ + title: epTitle, + 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, + }; + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/hdhub4u/posts.js b/dist/hdhub4u/posts.js index 5d8f2d5..67ad50e 100644 --- a/dist/hdhub4u/posts.js +++ b/dist/hdhub4u/posts.js @@ -1 +1,68 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{c(n.next(t))}catch(t){o(t)}}function a(t){try{c(n.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const hdbHeaders={Cookie:"xla=s4t",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"},getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,signal:r,providerContext:n}){const{getBaseUrl:i}=n;return posts({url:`${(yield i("hdhub"))+t}/page/${e}/`,signal:r,providerContext:n})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:r,providerContext:n}){const{getBaseUrl:i}=n;return posts({url:`${yield i("hdhub")}/page/${e}/?s=${t}`,signal:r,providerContext:n})})};function posts(t){return __awaiter(this,arguments,void 0,function*({url:t,signal:e,providerContext:r}){const{cheerio:n}=r;try{const r=yield fetch(t,{headers:hdbHeaders,signal:e}),i=yield r.text(),o=n.load(i),s=[];return o(".recent-movies").children().map((t,e)=>{const r=o(e).find("figure").find("img").attr("alt"),n=o(e).find("a").attr("href"),i=o(e).find("figure").find("img").attr("src");r&&n&&i&&s.push({title:r.replace("Download","").trim(),link:n,image:i})}),s}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const hdbHeaders = { + Cookie: "xla=s4t", + 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", +}; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) { + const { getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("hdhub"); + const url = `${baseUrl + filter}/page/${page}/`; + return posts({ url, signal, providerContext }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) { + const { getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("hdhub"); + const url = `${baseUrl}/page/${page}/?s=${searchQuery}`; + return posts({ url, signal, providerContext }); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ url, signal, providerContext, }) { + const { cheerio } = providerContext; + try { + const res = yield fetch(url, { + headers: hdbHeaders, + signal, + }); + const data = yield res.text(); + const $ = cheerio.load(data); + const catalog = []; + $(".recent-movies") + .children() + .map((i, element) => { + const title = $(element).find("figure").find("img").attr("alt"); + const link = $(element).find("a").attr("href"); + const image = $(element).find("figure").find("img").attr("src"); + if (title && link && image) { + catalog.push({ + title: title.replace("Download", "").trim(), + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + console.error("hdhubGetPosts error ", err); + return []; + } + }); +} diff --git a/dist/hdhub4u/stream.js b/dist/hdhub4u/stream.js index f45d992..3d9790b 100644 --- a/dist/hdhub4u/stream.js +++ b/dist/hdhub4u/stream.js @@ -1 +1,164 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))(function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function d(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(a,d)}c((n=n.apply(e,t||[])).next())})};function getStream(e){return __awaiter(this,arguments,void 0,function*({link:e,signal:t,providerContext:r}){var n,i,o,a;const{axios:d,cheerio:c,extractors:s,commonHeaders:l}=r,{hubcloudExtracter:u}=s;let h="";if(e.includes("hubdrive")){const r=(yield d.get(e,{headers:l,signal:t})).data;h=c.load(r)(".btn.btn-primary.btn-user.btn-success1.m-1").attr("href")||e}else{const r=decodeString(null===(o=null===(i=null===(n=(yield d.get(e,{headers:l,signal:t})).data.split("s('o','"))||void 0===n?void 0:n[1])||void 0===i?void 0:i.split("',180"))||void 0===o?void 0:o[0]);e=atob(null==r?void 0:r.o);const a=yield getRedirectLinks(e,t,l),s=(yield d.get(a,{headers:l,signal:t})).data;if(h=c.load(s)('h3:contains("1080p")').find("a").attr("href")||s.match(/href="(https:\/\/hubcloud\.[^\/]+\/drive\/[^"]+)"/)[1],h.includes("hubdrive")){const e=(yield d.get(h,{headers:l,signal:t})).data;h=c.load(e)(".btn.btn-primary.btn-user.btn-success1.m-1").attr("href")||h}}const f=(null===(a=(yield d.get(h,{headers:l,signal:t})).data.match(//i))||void 0===a?void 0:a[1])||h;try{return yield u(f,t)}catch(e){return[]}})}Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=getStream,exports.getRedirectLinks=getRedirectLinks,exports.decodeString=decodeString;const encode=function(e){return btoa(e.toString())},decode=function(e){return void 0===e?"":atob(e.toString())},pen=function(e){return e.replace(/[a-zA-Z]/g,function(e){return String.fromCharCode((e<="Z"?90:122)>=(e=e.charCodeAt(0)+13)?e:e-26)})},abortableTimeout=(e,{signal:t}={})=>new Promise((r,n)=>{if(t&&t.aborted)return n(new Error("Aborted"));const i=setTimeout(r,e);t&&t.addEventListener("abort",()=>{clearTimeout(i),n(new Error("Aborted"))})});function getRedirectLinks(e,t,r){return __awaiter(this,void 0,void 0,function*(){try{const a=yield fetch(e,{headers:r,signal:t}),d=yield a.text();for(var n,i=/ck\('_wp_http_\d+','([^']+)'/g,o="";null!==(n=i.exec(d));)o+=n[1];const c=decode(pen(decode(decode(o)))),s=JSON.parse(c),l=encode(null==s?void 0:s.data),u=(null==s?void 0:s.wp_http1)+"?re="+l;let h=abortableTimeout(1e3*(Number(null==s?void 0:s.total_time)+3),{signal:t});yield h;let f="Invalid Request";for(;f.includes("Invalid Request");){const e=yield fetch(u,{headers:r,signal:t}),n=yield e.text();if(!n.includes("Invalid Request")){f=n.match(/var reurl = "([^"]+)"/)||"";break}}return u||e}catch(t){return e}})}function rot13(e){return e.replace(/[a-zA-Z]/g,function(e){const t=e.charCodeAt(0),r=e<="Z"?65:97;return String.fromCharCode((t-r+13)%26+r)})}function decodeString(e){try{let t=atob(e);return t=atob(t),t=rot13(t),t=atob(t),JSON.parse(t)}catch(e){return null}} \ No newline at end of file +"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 }); +exports.getStream = getStream; +exports.getRedirectLinks = getRedirectLinks; +exports.decodeString = decodeString; +function getStream(_a) { + return __awaiter(this, arguments, void 0, function* ({ link, signal, providerContext, }) { + var _b, _c, _d, _e; + const { axios, cheerio, extractors, commonHeaders: headers, } = providerContext; + const { hubcloudExtracter } = extractors; + let hubdriveLink = ""; + if (link.includes("hubdrive")) { + const hubdriveRes = yield axios.get(link, { headers, signal }); + const hubdriveText = hubdriveRes.data; + const $ = cheerio.load(hubdriveText); + hubdriveLink = + $(".btn.btn-primary.btn-user.btn-success1.m-1").attr("href") || link; + } + else { + const res = yield axios.get(link, { headers, signal }); + const text = res.data; + 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]; + const decodedString = decodeString(encryptedString); + link = atob(decodedString === null || decodedString === void 0 ? void 0 : decodedString.o); + const redirectLink = yield getRedirectLinks(link, signal, headers); + const redirectLinkRes = yield 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 = 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(//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) { + return btoa(value.toString()); +}; +const decode = function (value) { + if (value === undefined) { + return ""; + } + return atob(value.toString()); +}; +const pen = function (value) { + return value.replace(/[a-zA-Z]/g, function (_0x1a470e) { + return String.fromCharCode((_0x1a470e <= "Z" ? 90 : 122) >= + (_0x1a470e = _0x1a470e.charCodeAt(0) + 13) + ? _0x1a470e + : _0x1a470e - 26); + }); +}; +const abortableTimeout = (ms, { signal } = {}) => { + return new Promise((resolve, reject) => { + if (signal && signal.aborted) { + return reject(new Error("Aborted")); + } + const timer = setTimeout(resolve, ms); + if (signal) { + signal.addEventListener("abort", () => { + clearTimeout(timer); + reject(new Error("Aborted")); + }); + } + }); +}; +function getRedirectLinks(link, signal, headers) { + return __awaiter(this, void 0, void 0, function* () { + try { + const res = yield fetch(link, { headers, signal }); + const resText = yield res.text(); + var regex = /ck\('_wp_http_\d+','([^']+)'/g; + var combinedString = ""; + var match; + while ((match = regex.exec(resText)) !== null) { + // 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 === 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; + } + catch (err) { + console.log("Error in getRedirectLinks", err); + return link; + } + }); +} +function rot13(str) { + return str.replace(/[a-zA-Z]/g, function (char) { + const charCode = char.charCodeAt(0); + const isUpperCase = char <= "Z"; + const baseCharCode = isUpperCase ? 65 : 97; + return String.fromCharCode(((charCode - baseCharCode + 13) % 26) + baseCharCode); + }); +} +function decodeString(encryptedString) { + try { + // First base64 decode + let decoded = atob(encryptedString); + // Second base64 decode + decoded = atob(decoded); + // ROT13 decode + decoded = rot13(decoded); + // Third base64 decode + decoded = atob(decoded); + // Parse JSON + return JSON.parse(decoded); + } + catch (error) { + console.error("Error decoding string:", error); + return null; + } +} diff --git a/dist/headers.js b/dist/headers.js index 2f2eecd..67246b4 100644 --- a/dist/headers.js +++ b/dist/headers.js @@ -1 +1,11 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.headers=void 0,exports.headers={"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"',"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"}; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.headers = void 0; +exports.headers = { + '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-Site': 'none', + // 'Sec-Fetch-User': '?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', +}; diff --git a/dist/hiAnime/catalog.js b/dist/hiAnime/catalog.js index 033e1f4..50c28d9 100644 --- a/dist/hiAnime/catalog.js +++ b/dist/hiAnime/catalog.js @@ -1 +1,22 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Recent",filter:"/anime/zoro/recent-episodes"},{title:"Top Airing",filter:"/anime/zoro/top-airing"},{title:"Most Popular",filter:"/anime/zoro/most-popular"},{title:"Most Favorited",filter:"/anime/zoro/most-favorite"}],exports.genres=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Recent", + filter: "/anime/zoro/recent-episodes", + }, + { + title: "Top Airing", + filter: "/anime/zoro/top-airing", + }, + { + title: "Most Popular", + filter: "/anime/zoro/most-popular", + }, + { + title: "Most Favorited", + filter: "/anime/zoro/most-favorite", + }, +]; +exports.genres = []; diff --git a/dist/hiAnime/meta.js b/dist/hiAnime/meta.js index 0dc5024..3df6a86 100644 --- a/dist/hiAnime/meta.js +++ b/dist/hiAnime/meta.js @@ -1 +1,86 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(s,o){function u(t){try{r(n.next(t))}catch(t){o(t)}}function l(t){try{r(n.throw(t))}catch(t){o(t)}}function r(t){var e;t.done?s(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(u,l)}r((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){try{const{getBaseUrl:i,axios:n}=e,s=`${yield i("consumet")}/anime/zoro/info?id=`+t,o=(yield n.get(s)).data,u={title:o.title,synopsis:o.description,image:o.image,tags:[null==o?void 0:o.type,"both"===(null==o?void 0:o.subOrDub)?"Sub And Dub":null==o?void 0:o.subOrDub],imdbId:"",type:o.episodes.length>0?"series":"movie"},l=[],r=[];if(o.episodes.forEach(t=>{if(!(null==t?void 0:t.isSubbed))return;const e="Episode "+t.number+((null==t?void 0:t.isFiller)?" (Filler)":""),i=t.id+"$sub";i&&e&&r.push({title:e,link:i})}),l.push({title:u.title+" (Sub)",directLinks:r}),"both"===(null==o?void 0:o.subOrDub)){const t=[];o.episodes.forEach(e=>{if(!(null==e?void 0:e.isDubbed))return;const i="Episode "+e.number+((null==e?void 0:e.isFiller)?" (Filler)":""),n=e.id+"$dub";n&&i&&t.push({title:i,link:n})}),l.push({title:u.title+" (Dub)",directLinks:t})}return Object.assign(Object.assign({},u),{linkList:l})}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + try { + const { getBaseUrl, axios } = providerContext; + const baseUrl = yield getBaseUrl("consumet"); + const url = `${baseUrl}/anime/zoro/info?id=` + link; + const res = yield axios.get(url); + const data = res.data; + const meta = { + title: data.title, + synopsis: data.description, + image: data.image, + tags: [ + 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", + }; + const linkList = []; + const subLinks = []; + data.episodes.forEach((episode) => { + if (!(episode === null || episode === void 0 ? void 0 : episode.isSubbed)) { + return; + } + const title = "Episode " + episode.number + ((episode === null || episode === void 0 ? void 0 : 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 === 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 }); + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/hiAnime/posts.js b/dist/hiAnime/posts.js index 102972c..fb78271 100644 --- a/dist/hiAnime/posts.js +++ b/dist/hiAnime/posts.js @@ -1 +1,57 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,s,n){return new(s||(s=Promise))(function(o,i){function r(t){try{u(n.next(t))}catch(t){i(t)}}function a(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof s?e:new s(function(t){t(e)})).then(r,a)}u((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,signal:s,providerContext:n}){const{getBaseUrl:o,axios:i}=n;return posts({url:`${(yield o("consumet"))+t}?page=${e}`,signal:s,axios:i})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:s,providerContext:n}){const{getBaseUrl:o,axios:i}=n;return posts({url:`${yield o("consumet")}/anime/zoro/${t}?page=${e}`,signal:s,axios:i})})};function posts(t){return __awaiter(this,arguments,void 0,function*({url:t,signal:e,axios:s}){var n;try{const o=null===(n=(yield s.get(t,{signal:e})).data)||void 0===n?void 0:n.results,i=[];return null==o||o.map(t=>{const e=t.title,s=t.id,n=t.image;e&&s&&n&&i.push({title:e,link:s,image:n})}),i}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) { + const { getBaseUrl, axios } = providerContext; + const baseUrl = yield getBaseUrl("consumet"); + const url = `${baseUrl + filter}?page=${page}`; + return posts({ url, signal, axios }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) { + const { getBaseUrl, axios } = providerContext; + const baseUrl = yield getBaseUrl("consumet"); + const url = `${baseUrl}/anime/zoro/${searchQuery}?page=${page}`; + return posts({ url, signal, axios }); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ url, signal, axios, }) { + var _b; + try { + const res = yield axios.get(url, { signal }); + const data = (_b = res.data) === null || _b === void 0 ? void 0 : _b.results; + const catalog = []; + data === null || data === void 0 ? void 0 : data.map((element) => { + const title = element.title; + const link = element.id; + const image = element.image; + if (title && link && image) { + catalog.push({ + title: title, + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + console.error("zoro error ", err); + return []; + } + }); +} diff --git a/dist/hiAnime/stream.js b/dist/hiAnime/stream.js index 0843200..ad01c7e 100644 --- a/dist/hiAnime/stream.js +++ b/dist/hiAnime/stream.js @@ -1 +1,66 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(o,r){function l(t){try{u(n.next(t))}catch(t){r(t)}}function a(t){try{u(n.throw(t))}catch(t){r(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(l,a)}u((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){try{const{getBaseUrl:i,axios:n}=e,o=yield i("consumet"),r=["vidcloud","vidstreaming"],l=`${o}/anime/zoro/watch?episodeId=${t}&server=`,a=[];return yield Promise.all(r.map(t=>__awaiter(this,void 0,void 0,function*(){var e,i;try{const o=yield n.get(l+t);if(o.data){const n=[];null===(e=o.data)||void 0===e||e.subtitles.forEach(t=>{var e,i;"Thumbnails"!==(null==t?void 0:t.lang)&&n.push({language:(null===(e=null==t?void 0:t.lang)||void 0===e?void 0:e.slice(0,2))||"Und",uri:null==t?void 0:t.url,title:(null==t?void 0:t.lang)||"Undefined",type:(null===(i=null==t?void 0:t.url)||void 0===i?void 0:i.endsWith(".vtt"))?"text/vtt":"application/x-subrip"})}),null===(i=o.data)||void 0===i||i.sources.forEach(e=>{a.push({server:t,link:null==e?void 0:e.url,type:(null==e?void 0:e.isM3U8)?"m3u8":"mp4",headers:{Referer:"https://megacloud.club/",Origin:"https://megacloud.club"},subtitles:n})})}}catch(t){}}))),a}catch(t){return[]}})};exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link: id, providerContext, }) { + try { + const { getBaseUrl, axios } = providerContext; + const baseUrl = yield getBaseUrl("consumet"); + const servers = ["vidcloud", "vidstreaming"]; + const url = `${baseUrl}/anime/zoro/watch?episodeId=${id}&server=`; + const streamLinks = []; + yield Promise.all(servers.map((server) => __awaiter(this, void 0, void 0, function* () { + var _a, _b; + try { + const res = yield axios.get(url + server); + if (res.data) { + const subtitles = []; + (_a = res.data) === null || _a === void 0 ? void 0 : _a.subtitles.forEach((sub) => { + var _a, _b; + if ((sub === null || sub === void 0 ? void 0 : sub.lang) === "Thumbnails") + return; + subtitles.push({ + language: ((_a = sub === null || sub === void 0 ? void 0 : sub.lang) === null || _a === void 0 ? void 0 : _a.slice(0, 2)) || "Und", + uri: sub === null || sub === void 0 ? void 0 : sub.url, + 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")) + ? "text/vtt" + : "application/x-subrip", + }); + }); + (_b = res.data) === null || _b === void 0 ? void 0 : _b.sources.forEach((source) => { + streamLinks.push({ + server: server, + link: source === null || source === void 0 ? void 0 : source.url, + type: (source === null || source === void 0 ? void 0 : source.isM3U8) ? "m3u8" : "mp4", + headers: { + Referer: "https://megacloud.club/", + Origin: "https://megacloud.club", + }, + subtitles: subtitles, + }); + }); + } + } + catch (e) { + console.log(e); + } + }))); + return streamLinks; + } + catch (err) { + console.error(err); + return []; + } + }); +}; +exports.getStream = getStream; diff --git a/dist/hubcloudExtractor.js b/dist/hubcloudExtractor.js index d3c727f..3301b10 100644 --- a/dist/hubcloudExtractor.js +++ b/dist/hubcloudExtractor.js @@ -1 +1,132 @@ -"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var i=e(t),n=0;n{o.push({title:s(i).text()||"",link:e+s(i).find("a").attr("href")||""})}),o.length>0)return o}if(t.includes("/pack")){const i=yield extractKmhdEpisodes(t,e);null==i||i.forEach((e,i)=>{o.push({title:`Episode ${i+1}`,link:t.split("/pack")[0]+"/file/"+e})})}const a=(yield n.get(t,{headers:{Cookie:"_ga_GNR438JY8N=GS1.1.1722240350.5.0.1722240350.0.0.0; _ga=GA1.1.372196696.1722150754; unlocked=true"}})).data,s=r.load(a),c=s(".autohyperlink");return null==c||c.map((t,e)=>{o.push({title:s(e).parent().children().remove().end().text()||"",link:s(e).attr("href")||""})}),o}catch(t){return[]}})};function extractKmhdLink(t,e){return __awaiter(this,void 0,void 0,function*(){const{axios:i}=e,n=(yield i.get(t)).data,r=n.match(/hubdrive_res:\s*"([^"]+)"/)[1];return n.match(/hubdrive_res\s*:\s*{[^}]*?link\s*:\s*"([^"]+)"/)[1]+r})}function extractKmhdEpisodes(t,e){return __awaiter(this,void 0,void 0,function*(){const{axios:i}=e;return(yield i.get(t)).data.match(/[\w]+_[a-f0-9]{8}/g)})}exports.getEpisodes=getEpisodes; \ No newline at end of file +"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 }); +exports.getEpisodes = void 0; +exports.extractKmhdLink = extractKmhdLink; +const getEpisodes = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) { + var _b; + const { axios, cheerio } = providerContext; + const episodesLink = []; + try { + if (url.includes("gdflix")) { + const baseUrl = (_b = url.split("/pack")) === null || _b === void 0 ? void 0 : _b[0]; + const res = yield axios.get(url); + const data = res.data; + const $ = cheerio.load(data); + const links = $(".list-group-item"); + links === null || links === void 0 ? void 0 : links.map((i, link) => { + episodesLink.push({ + title: $(link).text() || "", + link: baseUrl + $(link).find("a").attr("href") || "", + }); + }); + if (episodesLink.length > 0) { + return episodesLink; + } + } + if (url.includes("/pack")) { + const epIds = yield extractKmhdEpisodes(url, providerContext); + epIds === null || epIds === void 0 ? void 0 : 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({ + title: $(link).parent().children().remove().end().text() || "", + link: $(link).attr("href") || "", + }); + }); + return episodesLink; + } + catch (err) { + console.error(err); + return []; + } + }); +}; +exports.getEpisodes = getEpisodes; +function extractKmhdLink(katlink, providerContext) { + return __awaiter(this, void 0, void 0, function* () { + const { axios } = providerContext; + const res = yield axios.get(katlink); + const data = res.data; + const hubDriveRes = data.match(/hubdrive_res:\s*"([^"]+)"/)[1]; + const hubDriveLink = data.match(/hubdrive_res\s*:\s*{[^}]*?link\s*:\s*"([^"]+)"/)[1]; + return hubDriveLink + hubDriveRes; + }); +} +function extractKmhdEpisodes(katlink, providerContext) { + return __awaiter(this, void 0, void 0, function* () { + const { axios } = providerContext; + const res = yield axios.get(katlink); + const data = res.data; + const ids = data.match(/[\w]+_[a-f0-9]{8}/g); + return ids; + }); +} diff --git a/dist/katmovies/meta.js b/dist/katmovies/meta.js index 545450e..3365722 100644 --- a/dist/katmovies/meta.js +++ b/dist/katmovies/meta.js @@ -1 +1,128 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(o,a){function r(t){try{d(n.next(t))}catch(t){a(t)}}function s(t){try{d(n.throw(t))}catch(t){a(t)}}function d(t){var e;t.done?o(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(r,s)}d((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){var i;try{const{axios:n,cheerio:o}=e,a=t,r=(yield n.get(a)).data,s=o.load(r),d=s(".yQ8hqd.ksSzJd.LoQAYe").html()?s(".yQ8hqd.ksSzJd.LoQAYe"):s(".FxvUNb"),c=(null===(i=d.find('a[href*="imdb.com/title/tt"]:not([href*="imdb.com/title/tt/"])').attr("href"))||void 0===i?void 0:i.split("/")[4])||"",l=d.find('li:contains("Name")').children().remove().end().text(),h=s(".yQ8hqd.ksSzJd.LoQAYe").html()?"series":"movie",p=d.find('li:contains("Stars")').text(),f=s('h4:contains("SCREENSHOTS")').next().find("img").attr("src")||"",u=[],v=[];return s(".entry-content").find('p:contains("Episode")').each((e,i)=>{const n=s(i).nextAll("h3,h2").first().find('a:contains("1080"),a:contains("720"),a:contains("480")').attr("href")||"",o=s(i).find("span").text();t.trim().length>0&&o.includes("Episode ")&&v.push({title:o,link:n})}),v.length>0&&u.push({quality:"",title:l,directLinks:v}),s(".entry-content").find("pre").nextUntil("div").filter("h2").each((t,e)=>{var i;const n=s(e).find("a").attr("href"),o=(null===(i=s(e).text().match(/\b(480p|720p|1080p|2160p)\b/i))||void 0===i?void 0:i[0])||"",a=s(e).text();n&&a.includes("")&&u.push({quality:o,title:a,episodesLink:n})}),0===u.length&&"movie"===h&&s(".entry-content").find('h2:contains("DOWNLOAD"),h3:contains("DOWNLOAD")').nextUntil("pre,div").filter("h2").each((t,e)=>{var i;const n=s(e).find("a").attr("href"),o=(null===(i=s(e).text().match(/\b(480p|720p|1080p|2160p)\b/i))||void 0===i?void 0:i[0])||"",a=s(e).text();n&&!a.includes("Online")&&u.push({quality:o,title:a,directLinks:[{link:n,title:a,type:"movie"}]})}),{title:l,synopsis:p,image:f,imdbId:c,type:h,linkList:u}}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b; + try { + const { axios, cheerio } = providerContext; + const url = link; + const res = yield axios.get(url); + const data = res.data; + const $ = cheerio.load(data); + const container = $(".yQ8hqd.ksSzJd.LoQAYe").html() + ? $(".yQ8hqd.ksSzJd.LoQAYe") + : $(".FxvUNb"); + const imdbId = ((_b = container + .find('a[href*="imdb.com/title/tt"]:not([href*="imdb.com/title/tt/"])') + .attr("href")) === null || _b === void 0 ? void 0 : _b.split("/")[4]) || ""; + const title = container + .find('li:contains("Name")') + .children() + .remove() + .end() + .text(); + const type = $(".yQ8hqd.ksSzJd.LoQAYe").html() ? "series" : "movie"; + const synopsis = container.find('li:contains("Stars")').text(); + const image = $('h4:contains("SCREENSHOTS")').next().find("img").attr("src") || ""; + console.log("katGetInfo", title, synopsis, image, imdbId, type); + // Links + const links = []; + const directLink = []; + // direct links + $(".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") || ""; + 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) => { + 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, + }; + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/katmovies/posts.js b/dist/katmovies/posts.js index 987992e..c1f8a94 100644 --- a/dist/katmovies/posts.js +++ b/dist/katmovies/posts.js @@ -1 +1,59 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{c(n.next(t))}catch(t){o(t)}}function a(t){try{c(n.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,signal:r,providerContext:n}){const{getBaseUrl:i,cheerio:o}=n;return posts({url:`${(yield i("kat"))+t}/page/${e}/`,signal:r,cheerio:o})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:r,providerContext:n}){const{getBaseUrl:i,cheerio:o}=n;return posts({url:`${yield i("kat")}/page/${e}/?s=${t}`,signal:r,cheerio:o})})};function posts(t){return __awaiter(this,arguments,void 0,function*({url:t,signal:e,cheerio:r}){try{const n=yield fetch(t,{signal:e}),i=yield n.text(),o=r.load(i),s=[];return o(".recent-posts").children().map((t,e)=>{const r=o(e).find("img").attr("alt"),n=o(e).find("a").attr("href"),i=o(e).find("img").attr("src");r&&n&&i&&s.push({title:r.replace("Download","").trim(),link:n,image:i})}),s}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) { + const { getBaseUrl, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("kat"); + const url = `${baseUrl + filter}/page/${page}/`; + return posts({ url, signal, cheerio }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) { + const { getBaseUrl, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("kat"); + const url = `${baseUrl}/page/${page}/?s=${searchQuery}`; + return posts({ url, signal, cheerio }); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ url, signal, cheerio, }) { + try { + const res = yield fetch(url, { signal }); + const data = yield res.text(); + const $ = cheerio.load(data); + const catalog = []; + $(".recent-posts") + .children() + .map((i, element) => { + const title = $(element).find("img").attr("alt"); + const link = $(element).find("a").attr("href"); + const image = $(element).find("img").attr("src"); + if (title && link && image) { + catalog.push({ + title: title.replace("Download", "").trim(), + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + console.error("katmovies error ", err); + return []; + } + }); +} diff --git a/dist/katmovies/stream.js b/dist/katmovies/stream.js index f7990fb..fbffc07 100644 --- a/dist/katmovies/stream.js +++ b/dist/katmovies/stream.js @@ -1 +1,104 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,i){return new(r||(r=Promise))(function(n,a){function o(t){try{c(i.next(t))}catch(t){a(t)}}function s(t){try{c(i.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,s)}c((i=i.apply(t,e||[])).next())})};function extractKmhdLink(t,e){return __awaiter(this,void 0,void 0,function*(){const{axios:r}=e,i=(yield r.get(t)).data,n=i.match(/hubdrive_res:\s*"([^"]+)"/)[1];return i.match(/hubdrive_res\s*:\s*{[^}]*?link\s*:\s*"([^"]+)"/)[1]+n})}Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=function(t){return __awaiter(this,arguments,void 0,function*({link:t,signal:e,providerContext:r}){const{axios:i,cheerio:n,extractors:a}=r,{hubcloudExtracter:o,gdFlixExtracter:s}=a,c=[];try{if(t.includes("gdflix"))return yield s(t,e);if(t.includes("kmhd")){const i=yield extractKmhdLink(t,r);return yield o(i,e)}if(t.includes("gdflix")){try{const e=t.replace("/file","/zfile"),r=(yield i.get(e)).data,a=n.load(r)(".btn-success").attr("href");a&&c.push({server:"ResumeCloud",link:a,type:"mkv"})}catch(t){}try{const e=yield i.get(t,{timeout:1e4}),r=n.load(e.data)(".btn-danger").attr("href")||"",a=r.split("=")[1],o=new FormData;o.append("keys",a);const s=r.split("/").slice(0,3).join("/")+"/api",d=yield fetch(s,{method:"POST",body:o,headers:{"x-token":s}}),u=yield d.json();if(!1===u.error){const t=u.url;c.push({server:"Gdrive-Instant",link:t,type:"mkv"})}}catch(t){}return c}return yield o(t,e)}catch(t){return[]}})};exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +function extractKmhdLink(katlink, providerContext) { + return __awaiter(this, void 0, void 0, function* () { + const { axios } = providerContext; + const res = yield axios.get(katlink); + const data = res.data; + const hubDriveRes = data.match(/hubdrive_res:\s*"([^"]+)"/)[1]; + const hubDriveLink = data.match(/hubdrive_res\s*:\s*{[^}]*?link\s*:\s*"([^"]+)"/)[1]; + return hubDriveLink + hubDriveRes; + }); +} +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, signal, providerContext, }) { + const { axios, cheerio, extractors } = providerContext; + const { hubcloudExtracter, gdFlixExtracter } = extractors; + const streamLinks = []; + console.log("katGetStream", link); + try { + if (link.includes("gdflix")) { + return yield gdFlixExtracter(link, signal); + } + if (link.includes("kmhd")) { + const hubcloudLink = yield extractKmhdLink(link, providerContext); + return yield hubcloudExtracter(hubcloudLink, signal); + } + if (link.includes("gdflix")) { + // resume link + try { + const resumeDrive = link.replace("/file", "/zfile"); + // console.log('resumeDrive', resumeDrive); + const resumeDriveRes = yield axios.get(resumeDrive); + 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 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) { + console.log("Instant link not found", err); + } + return streamLinks; + } + const stereams = yield hubcloudExtracter(link, signal); + return stereams; + } + catch (error) { + console.log("katgetStream error: ", error); + return []; + } + }); +}; +exports.getStream = getStream; diff --git a/dist/kissKh/catalog.js b/dist/kissKh/catalog.js index 03ab8ff..5544ceb 100644 --- a/dist/kissKh/catalog.js +++ b/dist/kissKh/catalog.js @@ -1 +1,22 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Latest",filter:"/api/DramaList/List?type=0&sub=0&country=0&status=0&order=2"},{title:"Hollywood",filter:"/api/DramaList/List?type=4&sub=0&country=0&status=0&order=2"},{title:"Anime",filter:"/api/DramaList/List?type=3&sub=0&country=0&status=0&order=2"},{title:"K Drama",filter:"/api/DramaList/List?type=0&sub=0&country=0&status=0&order=2"}],exports.genres=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Latest", + filter: "/api/DramaList/List?type=0&sub=0&country=0&status=0&order=2", + }, + { + title: "Hollywood", + filter: "/api/DramaList/List?type=4&sub=0&country=0&status=0&order=2", + }, + { + title: "Anime", + filter: "/api/DramaList/List?type=3&sub=0&country=0&status=0&order=2", + }, + { + title: "K Drama", + filter: "/api/DramaList/List?type=0&sub=0&country=0&status=0&order=2", + }, +]; +exports.genres = []; diff --git a/dist/kissKh/meta.js b/dist/kissKh/meta.js index 993eb88..62b37d1 100644 --- a/dist/kissKh/meta.js +++ b/dist/kissKh/meta.js @@ -1 +1,60 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(o,s){function l(t){try{a(n.next(t))}catch(t){s(t)}}function r(t){try{a(n.throw(t))}catch(t){s(t)}}function a(t){var e;t.done?o(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(l,r)}a((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){var i,n;try{const{axios:o}=e,s=(yield o.get(t)).data,l={title:s.title,synopsis:s.description,image:s.thumbnail,tags:[null===(i=null==s?void 0:s.releaseDate)||void 0===i?void 0:i.split("-")[0],null==s?void 0:s.status,null==s?void 0:s.type],imdbId:"",type:s.episodesCount>1?"series":"movie"},r=[],a=[];return null===(n=null==s?void 0:s.episodes)||void 0===n||n.reverse().map(t=>{var e;const i="Episode "+(null==t?void 0:t.number),n=null===(e=null==t?void 0:t.id)||void 0===e?void 0:e.toString();n&&i&&a.push({title:i,link:n})}),r.push({title:l.title,directLinks:a}),Object.assign(Object.assign({},l),{linkList:r})}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b, _c; + try { + const { axios } = providerContext; + const res = yield axios.get(link); + const data = res.data; + const meta = { + title: data.title, + synopsis: data.description, + image: data.thumbnail, + 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: "", + type: data.episodesCount > 1 ? "series" : "movie", + }; + const linkList = []; + const subLinks = []; + (_c = data === null || data === void 0 ? void 0 : data.episodes) === null || _c === void 0 ? void 0 : _c.reverse().map((episode) => { + var _a; + const title = "Episode " + (episode === null || episode === void 0 ? void 0 : episode.number); + const link = (_a = episode === null || episode === void 0 ? void 0 : episode.id) === null || _a === void 0 ? void 0 : _a.toString(); + if (link && title) { + subLinks.push({ + title, + link, + }); + } + }); + linkList.push({ + title: meta.title, + directLinks: subLinks, + }); + return Object.assign(Object.assign({}, meta), { linkList: linkList }); + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/kissKh/posts.js b/dist/kissKh/posts.js index 58e7bd8..ea325c1 100644 --- a/dist/kissKh/posts.js +++ b/dist/kissKh/posts.js @@ -1 +1,73 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,a){return new(i||(i=Promise))(function(s,n){function r(t){try{l(a.next(t))}catch(t){n(t)}}function o(t){try{l(a.throw(t))}catch(t){n(t)}}function l(t){var e;t.done?s(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(r,o)}l((a=a.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,signal:e,providerContext:i}){var a;const{getBaseUrl:s,axios:n}=i,r=yield s("kissKh"),o=`${r+t}&type=0`;try{const t=null===(a=(yield n.get(o,{signal:e})).data)||void 0===a?void 0:a.data,i=[];return null==t||t.map(t=>{const e=t.title,a=r+`/api/DramaList/Drama/${null==t?void 0:t.id}?isq=false`,s=t.thumbnail;e&&a&&s&&i.push({title:e,link:a,image:s})}),i}catch(t){return[]}})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,signal:e,providerContext:i}){const{getBaseUrl:a,axios:s}=i,n=yield a("kissKh"),r=`${n}/api/DramaList/Search?q=${t}&type=0`;try{const t=(yield s.get(r,{signal:e})).data,i=[];return null==t||t.map(t=>{const e=t.title,a=n+`/api/DramaList/Drama/${null==t?void 0:t.id}?isq=false`,s=t.thumbnail;e&&a&&s&&i.push({title:e,link:a,image:s})}),i}catch(t){return[]}})};exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, signal, providerContext, }) { + var _b; + const { getBaseUrl, axios } = providerContext; + const baseUrl = yield getBaseUrl("kissKh"); + const url = `${baseUrl + filter}&type=0`; + try { + const res = yield axios.get(url, { signal }); + const data = (_b = res.data) === null || _b === void 0 ? void 0 : _b.data; + const catalog = []; + data === null || data === void 0 ? void 0 : data.map((element) => { + const title = element.title; + const link = baseUrl + `/api/DramaList/Drama/${element === null || element === void 0 ? void 0 : element.id}?isq=false`; + const image = element.thumbnail; + if (title && link && image) { + catalog.push({ + title: title, + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + console.error("kiss error ", err); + return []; + } + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, signal, providerContext, }) { + const { getBaseUrl, axios } = providerContext; + const baseUrl = yield getBaseUrl("kissKh"); + const url = `${baseUrl}/api/DramaList/Search?q=${searchQuery}&type=0`; + try { + const res = yield axios.get(url, { signal }); + const data = res.data; + const catalog = []; + data === null || data === void 0 ? void 0 : data.map((element) => { + const title = element.title; + const link = baseUrl + `/api/DramaList/Drama/${element === null || element === void 0 ? void 0 : element.id}?isq=false`; + const image = element.thumbnail; + if (title && link && image) { + catalog.push({ + title: title, + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + console.error("kiss error ", err); + return []; + } + }); +}; +exports.getSearchPosts = getSearchPosts; diff --git a/dist/kissKh/stream.js b/dist/kissKh/stream.js index 77d671f..c3dd9c1 100644 --- a/dist/kissKh/stream.js +++ b/dist/kissKh/stream.js @@ -1 +1,52 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(r,a){function o(t){try{s(n.next(t))}catch(t){a(t)}}function l(t){try{s(n.throw(t))}catch(t){a(t)}}function s(t){var e;t.done?r(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(o,l)}s((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){var i,n,r;try{const{axios:a,getBaseUrl:o}=e,l=[],s=[],u=yield o("kissKh"),d="https://adorable-salamander-ecbb21.netlify.app/api/kisskh/video?id="+t,v=yield a.get(d),c=null===(n=null===(i=v.data)||void 0===i?void 0:i.source)||void 0===n?void 0:n.Video,p=null===(r=v.data)||void 0===r?void 0:r.subtitles;return null==p||p.map(t=>{var e;s.push({title:null==t?void 0:t.label,language:null==t?void 0:t.land,type:(null===(e=null==t?void 0:t.src)||void 0===e?void 0:e.includes(".vtt"))?"text/vtt":"application/x-subrip",uri:null==t?void 0:t.src})}),l.push({server:"kissKh",link:c,type:"m3u8",subtitles:s,headers:{referer:u}}),l}catch(t){return[]}})};exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link: id, providerContext, }) { + var _b, _c, _d; + try { + const { axios, getBaseUrl } = providerContext; + const streamLinks = []; + const subtitles = []; + const baseUrl = yield getBaseUrl("kissKh"); + const streamUrl = "https://adorable-salamander-ecbb21.netlify.app/api/kisskh/video?id=" + + id; + const res = yield axios.get(streamUrl); + const stream = (_c = (_b = res.data) === null || _b === void 0 ? void 0 : _b.source) === null || _c === void 0 ? void 0 : _c.Video; + const subData = (_d = res.data) === null || _d === void 0 ? void 0 : _d.subtitles; + subData === null || subData === void 0 ? void 0 : subData.map((sub) => { + var _a; + subtitles.push({ + title: sub === null || sub === void 0 ? void 0 : sub.label, + language: sub === null || sub === void 0 ? void 0 : sub.land, + type: ((_a = sub === null || sub === void 0 ? void 0 : sub.src) === null || _a === void 0 ? void 0 : _a.includes(".vtt")) ? "text/vtt" : "application/x-subrip", + uri: sub === null || sub === void 0 ? void 0 : sub.src, + }); + }); + streamLinks.push({ + server: "kissKh", + link: stream, + type: "m3u8", + subtitles, + headers: { + referer: baseUrl, + }, + }); + return streamLinks; + } + catch (err) { + console.error(err); + return []; + } + }); +}; +exports.getStream = getStream; diff --git a/dist/luxMovies/catalog.js b/dist/luxMovies/catalog.js index 39e3dfd..f280f29 100644 --- a/dist/luxMovies/catalog.js +++ b/dist/luxMovies/catalog.js @@ -1 +1,103 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"New",filter:""},{title:"Netflix",filter:"category/web-series/netflix"},{title:"Amazon Prime",filter:"category/web-series/amazon-prime-video"},{title:"4K Movies",filter:"category/movies-by-quality/2160p"}],exports.genres=[{title:"Action",filter:"category/movies-by-genres/action/"},{title:"Adventure",filter:"category/movies-by-genres/adventure/"},{title:"Animation",filter:"category/movies-by-genres/animation/"},{title:"Biography",filter:"category/movies-by-genres/biography/"},{title:"Comedy",filter:"category/movies-by-genres/comedy/"},{title:"Crime",filter:"category/movies-by-genres/crime/"},{title:"Documentary",filter:"category/movies-by-genres/documentary/"},{title:"Drama",filter:"category/movies-by-genres/drama/"},{title:"Family",filter:"category/movies-by-genres/family/"},{title:"Fantasy",filter:"category/movies-by-genres/fantasy/"},{title:"History",filter:"category/movies-by-genres/history/"},{title:"Horror",filter:"category/movies-by-genres/horror/"},{title:"Music",filter:"category/movies-by-genres/music/"},{title:"Mystery",filter:"category/movies-by-genres/mystery/"},{title:"Romance",filter:"category/movies-by-genres/romance/"},{title:"Sci-Fi",filter:"category/movies-by-genres/sci-fi/"},{title:"Sport",filter:"category/movies-by-genres/sport/"},{title:"Thriller",filter:"category/movies-by-genres/thriller/"},{title:"War",filter:"category/movies-by-genres/war/"},{title:"Western",filter:"category/movies-by-genres/western/"}]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "New", + filter: "", + }, + { + title: "Netflix", + filter: "category/web-series/netflix", + }, + { + title: "Amazon Prime", + filter: "category/web-series/amazon-prime-video", + }, + { + title: "4K Movies", + filter: "category/movies-by-quality/2160p", + }, +]; +exports.genres = [ + { + title: "Action", + filter: "category/movies-by-genres/action/", + }, + { + title: "Adventure", + filter: "category/movies-by-genres/adventure/", + }, + { + title: "Animation", + filter: "category/movies-by-genres/animation/", + }, + { + title: "Biography", + filter: "category/movies-by-genres/biography/", + }, + { + title: "Comedy", + filter: "category/movies-by-genres/comedy/", + }, + { + title: "Crime", + filter: "category/movies-by-genres/crime/", + }, + { + title: "Documentary", + filter: "category/movies-by-genres/documentary/", + }, + { + title: "Drama", + filter: "category/movies-by-genres/drama/", + }, + { + title: "Family", + filter: "category/movies-by-genres/family/", + }, + { + title: "Fantasy", + filter: "category/movies-by-genres/fantasy/", + }, + { + title: "History", + filter: "category/movies-by-genres/history/", + }, + { + title: "Horror", + filter: "category/movies-by-genres/horror/", + }, + { + title: "Music", + filter: "category/movies-by-genres/music/", + }, + { + title: "Mystery", + filter: "category/movies-by-genres/mystery/", + }, + { + title: "Romance", + filter: "category/movies-by-genres/romance/", + }, + { + title: "Sci-Fi", + filter: "category/movies-by-genres/sci-fi/", + }, + { + title: "Sport", + filter: "category/movies-by-genres/sport/", + }, + { + title: "Thriller", + filter: "category/movies-by-genres/thriller/", + }, + { + title: "War", + filter: "category/movies-by-genres/war/", + }, + { + title: "Western", + filter: "category/movies-by-genres/western/", + }, +]; diff --git a/dist/luxMovies/episodes.js b/dist/luxMovies/episodes.js index e557d88..a634180 100644 --- a/dist/luxMovies/episodes.js +++ b/dist/luxMovies/episodes.js @@ -1 +1,45 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))(function(r,i){function c(e){try{s(o.next(e))}catch(e){i(e)}}function a(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(c,a)}s((o=o.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getEpisodes=void 0;const getEpisodes=function(e){return __awaiter(this,arguments,void 0,function*({url:e,providerContext:t}){const{axios:n,cheerio:o,commonHeaders:r}=t;try{const t=yield n.get(e,{headers:r}),i=o.load(t.data),c=i(".entry-content,.entry-inner");i(".unili-content,.code-block-1").remove();const a=[];return c.find("h4").each((e,t)=>{const n=i(t),o=n.text().replace(/-/g,"").replace(/:/g,""),r=n.next("p").find('.btn-outline[style="background:linear-gradient(135deg,#ed0b0b,#f2d152); color: white;"]').parent().attr("href");o&&r&&a.push({title:o,link:r})}),a}catch(e){return[]}})};exports.getEpisodes=getEpisodes; \ No newline at end of file +"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 }); +exports.getEpisodes = void 0; +const getEpisodes = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) { + const { axios, cheerio, commonHeaders: headers } = providerContext; + console.log("getEpisodeLinks", url); + try { + const res = yield axios.get(url, { headers }); + const $ = cheerio.load(res.data); + const container = $(".entry-content,.entry-inner"); + $(".unili-content,.code-block-1").remove(); + const episodes = []; + container.find("h4").each((index, element) => { + const el = $(element); + const title = el.text().replace(/-/g, "").replace(/:/g, ""); + const link = el + .next("p") + .find('.btn-outline[style="background:linear-gradient(135deg,#ed0b0b,#f2d152); color: white;"]') + .parent() + .attr("href"); + if (title && link) { + episodes.push({ title, link }); + } + }); + // console.log(episodes); + return episodes; + } + catch (err) { + console.log("getEpisodeLinks error: "); + // console.error(err); + return []; + } + }); +}; +exports.getEpisodes = getEpisodes; diff --git a/dist/luxMovies/meta.js b/dist/luxMovies/meta.js index b1a9183..e34b34e 100644 --- a/dist/luxMovies/meta.js +++ b/dist/luxMovies/meta.js @@ -1 +1,127 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(o,l){function d(e){try{v(n.next(e))}catch(e){l(e)}}function a(e){try{v(n.throw(e))}catch(e){l(e)}}function v(e){var t;e.done?o(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(d,a)}v((n=n.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const headers={Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,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",Cookie:"_lscache_vary=62abf8b96599676eb8ec211cffaeb8ff; ext_name=ojplmecpdpgccookcobabopnaifgidhf; cf_clearance=n4Y1XTKZ5TfIMBNQuAXzerwKpx0U35KoOm3imfT0GpU-1732097818-1.2.1.1-ZeAnEu.8D9TSZHYDoj7vwo1A1rpdKl304ZpaBn_QbAQOr211JFAb7.JRQU3EL2eIy1Dfl8HhYvH7_259.22lUz8gbchHcQ8hvfuQXMtFMCbqDBLzjNUZa9stuk.39l28IcPhH9Z2szsf3SGtNI1sAfo66Djt7sOReLK3lHw9UkJp7BdGqt6a2X9qAc8EsAI3lE480Tmt0fkHv14Oc30LSbPB_WwFmiqAki2W.Gv9hV7TN_QBFESleTDlXd.6KGflfd4.KwWF7rpSRo_cgoc9ALLLIafpxHVbe7_g5r7zvpml_Pj8fEL75fw.1GBuy16bciHBuB8s_kahuJYUnhtQFFgfTQl8_Gn6KeovBWx.PJ7nFv5sklHUfAyBVq3t30xKe8ZDydsQ_G.yipfj_In5GmmWcXGb6E4.bioDOwW_sKLtxwdTQt7Nu.RkILX_mKvXNpyLqflIVj8G7X5E8I.unw","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"},getMeta=e=>__awaiter(void 0,[e],void 0,function*({link:e,providerContext:t}){var i,n,o,l,d,a,v,r,c,u,s,f,p,h,b,g,x,m,w;try{const{axios:_,cheerio:y}=t,k=e,L=k.split("/").slice(0,3).join("/"),A=yield _.get(k,{headers:Object.assign(Object.assign({},headers),{Referer:L})}),I=y.load(A.data),K=I(".entry-content,.post-inner"),M=null==K?void 0:K.find("h3"),S=(null===(a=null===(d=null===(l=null===(o=null===(n=null===(i=null==M?void 0:M.next("p"))||void 0===i?void 0:i.find("a"))||void 0===n?void 0:n[0])||void 0===o?void 0:o.attribs)||void 0===l?void 0:l.href)||void 0===d?void 0:d.match(/tt\d+/g))||void 0===a?void 0:a[0])||(null===(v=K.text().match(/tt\d+/g))||void 0===v?void 0:v[0])||"",U=(null===(c=null===(r=null==M?void 0:M.next("p"))||void 0===r?void 0:r.text())||void 0===c?void 0:c.includes("Series Name"))?"series":"movie",q=/Name: (.+)/,B=(null===(f=null===(s=null===(u=null==M?void 0:M.next("p"))||void 0===u?void 0:u.text())||void 0===s?void 0:s.match(q))||void 0===f?void 0:f[1])||"",F=null===(x=null===(g=null===(b=null===(h=null===(p=null==K?void 0:K.find("p"))||void 0===p?void 0:p.next("h3,h4"))||void 0===h?void 0:h.next("p"))||void 0===b?void 0:b[0])||void 0===g?void 0:g.children)||void 0===x?void 0:x[0],G=F&&"data"in F?F.data:"";let T=(null===(m=null==K?void 0:K.find("img[data-lazy-src]"))||void 0===m?void 0:m.attr("data-lazy-src"))||"";T.startsWith("//")&&(T="https:"+T);const j=null===(w=null==K?void 0:K.first())||void 0===w?void 0:w.find("hr"),H=null==j?void 0:j.nextUntil("hr"),N=[];return H.each((e,t)=>{var i,n,o,l,d,a,v,r,c;const u=(null==(t=I(t))?void 0:t.text())||"",s=(null===(i=null==t?void 0:t.text().match(/\d+p\b/))||void 0===i?void 0:i[0])||"",f=(null==t?void 0:t.next().find(".dwd-button").text().toLowerCase().includes("download"))?null===(o=null===(n=null==t?void 0:t.next().find(".dwd-button"))||void 0===n?void 0:n.parent())||void 0===o?void 0:o.attr("href"):"",p=null===(d=null===(l=null==t?void 0:t.next().find(".btn-outline[style='background:linear-gradient(135deg,#ed0b0b,#f2d152); color: white;'],.btn-outline[style='background:linear-gradient(135deg,#ed0b0b,#f2d152); color: #fdf8f2;']"))||void 0===l?void 0:l.parent())||void 0===d?void 0:d.attr("href"),h=p||((null==t?void 0:t.next().find(".dwd-button").text().toLowerCase().includes("episode"))?null===(v=null===(a=null==t?void 0:t.next().find(".dwd-button"))||void 0===a?void 0:a.parent())||void 0===v?void 0:v.attr("href"):"")||(null===(c=null===(r=null==t?void 0:t.next().find(".btn-outline[style='background:linear-gradient(135deg,#0ebac3,#09d261); color: white;']"))||void 0===r?void 0:r.parent())||void 0===c?void 0:c.attr("href"));(f||h)&&N.push({title:u,directLinks:f?[{title:"Movie",link:f,type:"movie"}]:[],episodesLink:h,quality:s})}),{title:B,synopsis:G,image:T,imdbId:S,type:U,linkList:N}}catch(e){return{title:"",synopsis:"",image:"",imdbId:"",type:"",linkList:[]}}});exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const headers = { + Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,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", + Cookie: "_lscache_vary=62abf8b96599676eb8ec211cffaeb8ff; ext_name=ojplmecpdpgccookcobabopnaifgidhf; cf_clearance=n4Y1XTKZ5TfIMBNQuAXzerwKpx0U35KoOm3imfT0GpU-1732097818-1.2.1.1-ZeAnEu.8D9TSZHYDoj7vwo1A1rpdKl304ZpaBn_QbAQOr211JFAb7.JRQU3EL2eIy1Dfl8HhYvH7_259.22lUz8gbchHcQ8hvfuQXMtFMCbqDBLzjNUZa9stuk.39l28IcPhH9Z2szsf3SGtNI1sAfo66Djt7sOReLK3lHw9UkJp7BdGqt6a2X9qAc8EsAI3lE480Tmt0fkHv14Oc30LSbPB_WwFmiqAki2W.Gv9hV7TN_QBFESleTDlXd.6KGflfd4.KwWF7rpSRo_cgoc9ALLLIafpxHVbe7_g5r7zvpml_Pj8fEL75fw.1GBuy16bciHBuB8s_kahuJYUnhtQFFgfTQl8_Gn6KeovBWx.PJ7nFv5sklHUfAyBVq3t30xKe8ZDydsQ_G.yipfj_In5GmmWcXGb6E4.bioDOwW_sKLtxwdTQt7Nu.RkILX_mKvXNpyLqflIVj8G7X5E8I.unw", + "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", +}; +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 { + const { axios, cheerio } = providerContext; + const url = link; + console.log("url", url); + const baseUrl = url.split("/").slice(0, 3).join("/"); + const response = yield axios.get(url, { + headers: Object.assign(Object.assign({}, headers), { Referer: baseUrl }), + }); + const $ = cheerio.load(response.data); + const infoContainer = $(".entry-content,.post-inner"); + const heading = infoContainer === null || infoContainer === void 0 ? void 0 : infoContainer.find("h3"); + const imdbId = + //@ts-ignore + ((_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]) || + ((_h = infoContainer.text().match(/tt\d+/g)) === null || _h === void 0 ? void 0 : _h[0]) || + ""; + // console.log(imdbId) + 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" + : "movie"; + // console.log(type); + // title + const titleRegex = /Name: (.+)/; + 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); + // synopsis + const synopsisNode = //@ts-ignore + (_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 : ""; + // console.log(synopsis); + // image + 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("//")) { + image = "https:" + image; + } + // console.log(image); + // console.log({title, synopsis, image, imdbId, type}); + /// Links + const hr = (_v = infoContainer === null || infoContainer === void 0 ? void 0 : infoContainer.first()) === null || _v === void 0 ? void 0 : _v.find("hr"); + const list = hr === null || hr === void 0 ? void 0 : hr.nextUntil("hr"); + const links = []; + list.each((index, element) => { + var _a, _b, _c, _d, _e, _f, _g, _h, _j; + element = $(element); + // title + const title = (element === null || element === void 0 ? void 0 : element.text()) || ""; + 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); + // movieLinks + const movieLinks = (element === null || element === void 0 ? void 0 : element.next().find(".dwd-button").text().toLowerCase().includes("download")) + ? (_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") + : ""; + // episode links + 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"); + console.log(title); + const episodesLink = (vcloudLinks + ? vcloudLinks + : (element === null || element === void 0 ? void 0 : element.next().find(".dwd-button").text().toLowerCase().includes("episode")) + ? (_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") + : "") || + ((_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")); + if (movieLinks || episodesLink) { + links.push({ + title, + directLinks: movieLinks + ? [{ title: "Movie", link: movieLinks, type: "movie" }] + : [], + episodesLink, + quality, + }); + } + }); + // console.log(links); + return { + title, + synopsis, + image, + imdbId, + type, + linkList: links, + }; + } + catch (error) { + console.log("getInfo error"); + console.error(error); + // ToastAndroid.show('No response', ToastAndroid.SHORT); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "", + linkList: [], + }; + } +}); +exports.getMeta = getMeta; diff --git a/dist/luxMovies/posts.js b/dist/luxMovies/posts.js index 4a6caf3..dc314b4 100644 --- a/dist/luxMovies/posts.js +++ b/dist/luxMovies/posts.js @@ -1 +1,85 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,i,o){return new(i||(i=Promise))(function(a,n){function r(e){try{c(o.next(e))}catch(e){n(e)}}function s(e){try{c(o.throw(e))}catch(e){n(e)}}function c(e){var t;e.done?a(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(r,s)}c((o=o.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const 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",Cookie:"ext_name=ojplmecpdpgccookcobabopnaifgidhf; cf_clearance=lDWFqLsHL5LZ.VpfxQRtHY2_mpXRuq3OFTbVDKNIZGw-1752051595-1.2.1.1-VZ2S8yUrcCuOMLUgWfNv9a1LrtuhUKEd.uPN1Au_9tuTFYLra7ugoFBYKfsunvzrBOlYSYM0q8J7vpw.JhGZH0RO6MlaVBKH5olmoryhd6s11LXg7ZF1Ld_NedYoA7uKk_SBhbb1CCsj11S52U9VUve7twrLEjILmw3MEURU1eGqOOi3YGxtGgpQBNYgfnkJCoRkLB_6vQESw4RcIvO1j1BHMuyMVEkbn7sBtLEX52w","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0"},getPosts=e=>__awaiter(void 0,[e],void 0,function*({filter:e,page:t,providerValue:i,signal:o,providerContext:a}){const{getBaseUrl:n}=a;return posts(`${yield n("lux")}/${e}/page/${t}/`,o,a)});exports.getPosts=getPosts;const getSearchPosts=e=>__awaiter(void 0,[e],void 0,function*({searchQuery:e,page:t,providerValue:i,signal:o,providerContext:a}){const{getBaseUrl:n}=a,r=yield n("lux");return posts(1===t?`${r}/?s=${e}`:`${r}/page/${t}/?s=${e}`,o,a)});function posts(e,t,i){return __awaiter(this,void 0,void 0,function*(){var o,a;try{const{axios:n,cheerio:r}=i,s=yield n.get(e,{headers:Object.assign(Object.assign({},headers),{Referer:e}),signal:t}),c=r.load(s.data),d=[];return null===(a=null===(o=c(".blog-items"))||void 0===o?void 0:o.children("article"))||void 0===a||a.each((e,t)=>{var i,o,a,n,r,s,l,u,v,g;const p={title:(null===(r=null===(n=null===(a=null===(o=null===(i=c(t))||void 0===i?void 0:i.find("a"))||void 0===o?void 0:o.attr("title"))||void 0===a?void 0:a.replace("Download",""))||void 0===n?void 0:n.match(/^(.*?)\s*\((\d{4})\)|^(.*?)\s*\((Season \d+)\)/))||void 0===r?void 0:r[0])||(null===(u=null===(l=null===(s=c(t))||void 0===s?void 0:s.find("a"))||void 0===l?void 0:l.attr("title"))||void 0===u?void 0:u.replace("Download",""))||"",link:(null===(g=null===(v=c(t))||void 0===v?void 0:v.find("a"))||void 0===g?void 0:g.attr("href"))||"",image:c(t).find("a").find("img").attr("data-lazy-src")||c(t).find("a").find("img").attr("data-src")||c(t).find("a").find("img").attr("src")||""};p.image.startsWith("//")&&(p.image="https:"+p.image),d.push(p)}),d}catch(e){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const 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", + Cookie: "ext_name=ojplmecpdpgccookcobabopnaifgidhf; cf_clearance=lDWFqLsHL5LZ.VpfxQRtHY2_mpXRuq3OFTbVDKNIZGw-1752051595-1.2.1.1-VZ2S8yUrcCuOMLUgWfNv9a1LrtuhUKEd.uPN1Au_9tuTFYLra7ugoFBYKfsunvzrBOlYSYM0q8J7vpw.JhGZH0RO6MlaVBKH5olmoryhd6s11LXg7ZF1Ld_NedYoA7uKk_SBhbb1CCsj11S52U9VUve7twrLEjILmw3MEURU1eGqOOi3YGxtGgpQBNYgfnkJCoRkLB_6vQESw4RcIvO1j1BHMuyMVEkbn7sBtLEX52w", + "Upgrade-Insecure-Requests": "1", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0", +}; +const getPosts = (_a) => __awaiter(void 0, [_a], void 0, function* ({ filter, page, providerValue, signal, providerContext, }) { + const { getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("lux"); + console.log("vegaGetPosts baseUrl:", providerValue, baseUrl); + const url = `${baseUrl}/${filter}/page/${page}/`; + console.log("lux url:", url); + return posts(url, signal, providerContext); +}); +exports.getPosts = getPosts; +const getSearchPosts = (_a) => __awaiter(void 0, [_a], void 0, function* ({ searchQuery, page, providerValue, signal, providerContext, }) { + const { getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("lux"); + console.log("vegaGetPosts baseUrl:", providerValue, baseUrl); + const url = page === 1 + ? `${baseUrl}/?s=${searchQuery}` + : `${baseUrl}/page/${page}/?s=${searchQuery}`; + console.log("lux url:", url); + return posts(url, signal, providerContext); +}); +exports.getSearchPosts = getSearchPosts; +function posts(url, signal, providerContext) { + return __awaiter(this, void 0, void 0, function* () { + var _a, _b; + try { + const { axios, cheerio } = providerContext; + const urlRes = yield axios.get(url, { + headers: Object.assign(Object.assign({}, headers), { Referer: url }), + signal, + }); + const $ = cheerio.load(urlRes.data); + const posts = []; + (_b = (_a = $(".blog-items")) === null || _a === void 0 ? void 0 : _a.children("article")) === null || _b === void 0 ? void 0 : _b.each((index, element) => { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; + const post = { + 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]) || + ((_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", "")) || + "", + link: ((_k = (_j = $(element)) === null || _j === void 0 ? void 0 : _j.find("a")) === null || _k === void 0 ? void 0 : _k.attr("href")) || "", + 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; + } + posts.push(post); + }); + // console.log(posts); + return posts; + } + catch (error) { + console.error("vegaGetPosts error:", error); + return []; + } + }); +} diff --git a/dist/luxMovies/stream.js b/dist/luxMovies/stream.js index 84de674..71a2787 100644 --- a/dist/luxMovies/stream.js +++ b/dist/luxMovies/stream.js @@ -1 +1,103 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,a,n){return new(a||(a=Promise))(function(o,i){function c(e){try{r(n.next(e))}catch(e){i(e)}}function l(e){try{r(n.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?o(e.value):(t=e.value,t instanceof a?t:new a(function(e){e(t)})).then(c,l)}r((n=n.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=getStream;const headers={Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,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",Cookie:"_lscache_vary=62abf8b96599676eb8ec211cffaeb8ff; ext_name=ojplmecpdpgccookcobabopnaifgidhf; cf_clearance=n4Y1XTKZ5TfIMBNQuAXzerwKpx0U35KoOm3imfT0GpU-1732097818-1.2.1.1-ZeAnEu.8D9TSZHYDoj7vwo1A1rpdKl304ZpaBn_QbAQOr211JFAb7.JRQU3EL2eIy1Dfl8HhYvH7_259.22lUz8gbchHcQ8hvfuQXMtFMCbqDBLzjNUZa9stuk.39l28IcPhH9Z2szsf3SGtNI1sAfo66Djt7sOReLK3lHw9UkJp7BdGqt6a2X9qAc8EsAI3lE480Tmt0fkHv14Oc30LSbPB_WwFmiqAki2W.Gv9hV7TN_QBFESleTDlXd.6KGflfd4.KwWF7rpSRo_cgoc9ALLLIafpxHVbe7_g5r7zvpml_Pj8fEL75fw.1GBuy16bciHBuB8s_kahuJYUnhtQFFgfTQl8_Gn6KeovBWx.PJ7nFv5sklHUfAyBVq3t30xKe8ZDydsQ_G.yipfj_In5GmmWcXGb6E4.bioDOwW_sKLtxwdTQt7Nu.RkILX_mKvXNpyLqflIVj8G7X5E8I.unw","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"};function getStream(e){return __awaiter(this,arguments,void 0,function*({link:e,type:t,signal:a,providerContext:n}){var o,i,c,l;const{axios:r,cheerio:d,extractors:s}=n,{hubcloudExtracter:p}=s;try{const n=[];if("movie"===t){const t=(yield r(`${e}`,{headers:headers})).data;e=(t.match(/{const n=r(e).text(),i=r(e).find("a").attr("href");i&&"#"!==i&&a.push({title:n.trim()||"No title found",link:i||""})}),r("a.maxbutton").map((t,e)=>{const n=r(e).children("span").text(),i=r(e).attr("href");i&&"#"!==i&&a.push({title:n.trim()||"No title found",link:i||""})}),a}catch(t){return[]}})};exports.getEpisodes=getEpisodes; \ No newline at end of file +"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 }); +exports.getEpisodes = void 0; +const getEpisodes = 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 []; + } + }); +}; +exports.getEpisodes = getEpisodes; diff --git a/dist/mod/meta.js b/dist/mod/meta.js index f3350e8..43ca4ca 100644 --- a/dist/mod/meta.js +++ b/dist/mod/meta.js @@ -1 +1,75 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(o,a){function r(t){try{d(n.next(t))}catch(t){a(t)}}function s(t){try{d(n.throw(t))}catch(t){a(t)}}function d(t){var e;t.done?o(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(r,s)}d((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){var i;try{const{axios:n,cheerio:o}=e,a=t,r=(yield n.get(a)).data,s=o.load(r),d={title:s(".imdbwp__title").text(),synopsis:s(".imdbwp__teaser").text(),image:s(".imdbwp__thumb").find("img").attr("src")||"",imdbId:(null===(i=s(".imdbwp__link").attr("href"))||void 0===i?void 0:i.split("/")[4])||"",type:s(".thecontent").text().toLocaleLowerCase().includes("season")?"series":"movie"},l=[];return s("h3,h4").map((t,e)=>{var i;const n=s(e).text(),o=s(e).next("p").find(".maxbutton-episode-links,.maxbutton-g-drive,.maxbutton-af-download").attr("href"),a=s(e).next("p").find(".maxbutton-download-links").attr("href");(a||o&&"javascript:void(0);"!==o)&&l.push({title:n.replace("Download ","").trim()||"Download",episodesLink:o||"",directLinks:a?[{link:a,title:"Movie",type:"movie"}]:[],quality:(null===(i=null==n?void 0:n.match(/\d+p\b/))||void 0===i?void 0:i[0])||""})}),Object.assign(Object.assign({},d),{linkList:l})}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b; + try { + const { axios, cheerio } = providerContext; + const url = link; + const res = yield axios.get(url); + const data = res.data; + const $ = cheerio.load(data); + const meta = { + title: $(".imdbwp__title").text(), + synopsis: $(".imdbwp__teaser").text(), + image: $(".imdbwp__thumb").find("img").attr("src") || "", + imdbId: ((_b = $(".imdbwp__link").attr("href")) === null || _b === void 0 ? void 0 : _b.split("/")[4]) || "", + type: $(".thecontent").text().toLocaleLowerCase().includes("season") + ? "series" + : "movie", + }; + const links = []; + $("h3,h4").map((i, element) => { + var _a; + const seriesTitle = $(element).text(); + // const batchZipLink = $(element) + // .next("p") + // .find(".maxbutton-batch-zip,.maxbutton-zip-download") + // .attr("href"); + const episodesLink = $(element) + .next("p") + .find(".maxbutton-episode-links,.maxbutton-g-drive,.maxbutton-af-download") + .attr("href"); + const movieLink = $(element) + .next("p") + .find(".maxbutton-download-links") + .attr("href"); + if (movieLink || + (episodesLink && episodesLink !== "javascript:void(0);")) { + links.push({ + title: seriesTitle.replace("Download ", "").trim() || "Download", + episodesLink: episodesLink || "", + 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 Object.assign(Object.assign({}, meta), { linkList: links }); + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/mod/posts.js b/dist/mod/posts.js index 25da297..25fae11 100644 --- a/dist/mod/posts.js +++ b/dist/mod/posts.js @@ -1 +1,59 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,i){return new(r||(r=Promise))(function(o,s){function n(t){try{c(i.next(t))}catch(t){s(t)}}function a(t){try{c(i.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(n,a)}c((i=i.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,signal:r,providerContext:i}){const{getBaseUrl:o,axios:s,cheerio:n}=i;return posts({url:`${(yield o("Moviesmod"))+t}/page/${e}/`,signal:r,axios:s,cheerio:n})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:r,providerContext:i}){const{getBaseUrl:o,axios:s,cheerio:n}=i;return posts({url:`${yield o("Moviesmod")}/search/${t}/page/${e}/`,signal:r,axios:s,cheerio:n})})};function posts(t){return __awaiter(this,arguments,void 0,function*({url:t,signal:e,axios:r,cheerio:i}){try{const o=(yield r.get(t,{signal:e})).data,s=i.load(o),n=[];return s(".post-cards").find("article").map((t,e)=>{const r=s(e).find("a").attr("title"),i=s(e).find("a").attr("href"),o=s(e).find("img").attr("src");r&&i&&o&&n.push({title:r,link:i,image:o})}),n}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) { + const { getBaseUrl, axios, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("Moviesmod"); + const url = `${baseUrl + filter}/page/${page}/`; + return posts({ url, signal, axios, cheerio }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) { + const { getBaseUrl, axios, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("Moviesmod"); + const url = `${baseUrl}/search/${searchQuery}/page/${page}/`; + return posts({ url, signal, axios, cheerio }); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ url, signal, axios, cheerio, }) { + try { + const res = yield axios.get(url, { signal }); + const data = res.data; + const $ = cheerio.load(data); + const catalog = []; + $(".post-cards") + .find("article") + .map((i, element) => { + const title = $(element).find("a").attr("title"); + const link = $(element).find("a").attr("href"); + const image = $(element).find("img").attr("src"); + if (title && link && image) { + catalog.push({ + title: title, + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + console.error("modGetPosts error ", err); + return []; + } + }); +} diff --git a/dist/mod/stream.js b/dist/mod/stream.js index 5eae7d8..3dea75c 100644 --- a/dist/mod/stream.js +++ b/dist/mod/stream.js @@ -1 +1,274 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,a,i){return new(a||(a=Promise))(function(o,r){function n(e){try{d(i.next(e))}catch(e){r(e)}}function c(e){try{d(i.throw(e))}catch(e){r(e)}}function d(e){var t;e.done?o(e.value):(t=e.value,t instanceof a?t:new a(function(e){e(t)})).then(n,c)}d((i=i.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const 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"},getStream=function(e){return __awaiter(this,arguments,void 0,function*({link:e,type:t,providerContext:a}){var i,o;const{axios:r,cheerio:n}=a;try{const c=function(e){return __awaiter(this,arguments,void 0,function*({url:e,providerContext:t}){var a;const{axios:i,cheerio:o}=t;try{e.includes("url=")&&(e=atob(e.split("url=")[1]));const t=(yield i.get(e)).data;let r=o.load(t);if(e.includes("url=")){const t=null===(a=r("meta[http-equiv='refresh']").attr("content"))||void 0===a?void 0:a.split("url=")[1],n=(yield i.get(t||e)).data;r=o.load(n)}const n=[];return r("h3,h4").map((e,t)=>{const a=r(t).text(),i=r(t).find("a").attr("href");i&&"#"!==i&&n.push({title:a.trim()||"No title found",link:i||""})}),r("a.maxbutton").map((e,t)=>{const a=r(t).children("span").text(),i=r(t).attr("href");i&&"#"!==i&&n.push({title:a.trim()||"No title found",link:i||""})}),n}catch(e){return[]}})};if("movie"===t){e=(yield c({url:e,providerContext:a}))[0].link||e}let d=yield modExtractor(e,a);const s=(null===(o=null===(i=null==d?void 0:d.data)||void 0===i?void 0:i.match(/content="0;url=(.*?)"/))||void 0===o?void 0:o[1])||e,l=[],h=yield isDriveLink(s),p=(yield r.get(h,{headers:headers})).data,u=n.load(p);try{const e=u(".btn.btn-light").attr("href")||"",t=yield r.get(e,{headers:headers}),a=t.data.match(/formData\.append\('token', '([a-f0-9]+)'\)/)[1],i=new FormData;i.append("token",a);const o=t.data.match(/fetch\('\/download\?id=([a-zA-Z0-9\/+]+)'/)[1],n=e.split("/download")[0],c=yield fetch(n+"/download?id="+o,{method:"POST",body:i,headers:{Referer:e,Cookie:"PHPSESSID=7e9658ce7c805dab5bbcea9046f7f308"}}),d=yield c.json();l.push({server:"ResumeBot",link:d.url,type:"mkv"})}catch(e){}try{const e=h.replace("/file","/wfile")+"?type=1",t=(yield r.get(e,{headers:headers})).data,a=n.load(t);a(".btn-success").each((e,t)=>{var a;const i=null===(a=t.attribs)||void 0===a?void 0:a.href;i&&l.push({server:"Cf Worker 1."+e,link:i,type:"mkv"})})}catch(e){}try{const e=h.replace("/file","/wfile")+"?type=2",t=(yield r.get(e,{headers:headers})).data,a=n.load(t);a(".btn-success").each((e,t)=>{var a;const i=null===(a=t.attribs)||void 0===a?void 0:a.href;i&&l.push({server:"Cf Worker 2."+e,link:i,type:"mkv"})})}catch(e){}try{const e=u(".btn-danger").attr("href")||"",t=e.split("=")[1],a=new FormData;a.append("keys",t);const i=e.split("/").slice(0,3).join("/")+"/api",o=yield fetch(i,{method:"POST",body:a,headers:{"x-token":i}}),r=yield o.json();if(!1===r.error){const e=r.url;l.push({server:"Gdrive-Instant",link:e,type:"mkv"})}}catch(e){}return l}catch(e){return[]}})};exports.getStream=getStream;const isDriveLink=e=>__awaiter(void 0,void 0,void 0,function*(){if(e.includes("drive")){const t=yield fetch(e),a=(yield t.text()).match(/window\.location\.replace\("([^"]+)"\)/),i=null==a?void 0:a[1];return`https://${e.split("/")[2]}${i}`}return e});function modExtractor(e,t){return __awaiter(this,void 0,void 0,function*(){const{axios:a,cheerio:i}=t;try{const t=e.split("sid=")[1];var o=new FormData;o.append("_wp_http",t);const n=yield fetch(e.split("?")[0],{method:"POST",body:o}),c=yield n.text(),d=i.load(c),s=d("input").attr("name","_wp_http2").val();var r=new FormData;r.append("_wp_http2",s);const l=d("form").attr("action")||e.split("?")[0],h=yield fetch(l,{method:"POST",body:r}),p=(yield h.text()).match(/setAttribute\("href",\s*"(.*?)"/)[1],u=p.split("=")[1];return yield a.get(p,{headers:{Referer:l,Cookie:`${u}=${s}`}})}catch(e){}})} \ No newline at end of file +"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 }); +exports.getStream = void 0; +const 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", +}; +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link: url, type, providerContext, }) { + var _b, _c; + 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 { + const resumeBot = $drive(".btn.btn-light").attr("href") || ""; + const resumeBotRes = yield 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 = yield fetch(resumeBotBaseUrl + "/download?id=" + resumeBotPath, { + method: "POST", + body: resumeBotBody, + headers: { + Referer: resumeBot, + Cookie: "PHPSESSID=7e9658ce7c805dab5bbcea9046f7f308", + }, + }); + const resumeBotDownloadData = yield 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 = 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) { + console.log("getStream error", err); + return []; + } + }); +}; +exports.getStream = getStream; +const isDriveLink = (ddl) => __awaiter(void 0, void 0, void 0, function* () { + if (ddl.includes("drive")) { + const driveLeach = yield fetch(ddl); + const driveLeachData = yield driveLeach.text(); + const pathMatch = driveLeachData.match(/window\.location\.replace\("([^"]+)"\)/); + const path = pathMatch === null || pathMatch === void 0 ? void 0 : pathMatch[1]; + const mainUrl = ddl.split("/")[2]; + console.log(`driveUrl = https://${mainUrl}${path}`); + return `https://${mainUrl}${path}`; + } + else { + return ddl; + } +}); +function modExtractor(url, providerContext) { + return __awaiter(this, void 0, void 0, function* () { + const { axios, cheerio } = providerContext; + try { + const wpHttp = url.split("sid=")[1]; + var bodyFormData0 = new FormData(); + bodyFormData0.append("_wp_http", wpHttp); + const res = yield fetch(url.split("?")[0], { + method: "POST", + body: bodyFormData0, + }); + const data = yield res.text(); + // console.log('', data); + const html = data; + const $ = cheerio.load(html); + // find input with name="_wp_http2" + const wpHttp2 = $("input").attr("name", "_wp_http2").val(); + // console.log('wpHttp2', wpHttp2); + // form data + var bodyFormData = new FormData(); + bodyFormData.append("_wp_http2", wpHttp2); + const formUrl1 = $("form").attr("action"); + const formUrl = formUrl1 || url.split("?")[0]; + const res2 = yield fetch(formUrl, { + method: "POST", + body: bodyFormData, + }); + const html2 = yield res2.text(); + const link = html2.match(/setAttribute\("href",\s*"(.*?)"/)[1]; + console.log(link); + const cookie = link.split("=")[1]; + console.log("cookie", cookie); + const downloadLink = yield axios.get(link, { + headers: { + Referer: formUrl, + Cookie: `${cookie}=${wpHttp2}`, + }, + }); + return downloadLink; + } + catch (err) { + console.log("modGetStream error", err); + } + }); +} diff --git a/dist/moviesApi/stream.js b/dist/moviesApi/stream.js index 51bf7f4..00f770b 100644 --- a/dist/moviesApi/stream.js +++ b/dist/moviesApi/stream.js @@ -1 +1,97 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(r,o){function c(e){try{l(n.next(e))}catch(e){o(e)}}function a(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(c,a)}l((n=n.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.mpGetStream=void 0;const mpGetStream=function(e){return __awaiter(this,arguments,void 0,function*({link:e,type:t,providerContext:i}){var n,r;try{const{getBaseUrl:o,cheerio:c}=i,a=[],{season:l,episode:s,tmdbId:d}=JSON.parse(e),u=yield o("moviesapi"),p="movie"===t?`${u}/movie/${d}`:`${u}/tv/${d}-${l}-${s}`,h=yield fetch(p,{headers:{referer:u}}),v=yield h.text(),m=c.load(v)("iframe").attr("src")||"",f=yield fetch(m,{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:u},referrer:u,method:"GET",mode:"cors"}),x=(null===(n=(yield f.text()).match(/const\s+Encrypted\s*=\s*['"]({.*})['"]/))||void 0===n?void 0:n[1])||"";if(m){const e=yield fetch("https://ext.8man.me/api/decrypt?passphrase==JV[t}{trEV=Ilh5",{method:"POST",body:x}),t=yield e.json(),i=null===(r=null==t?void 0:t.subtitles)||void 0===r?void 0:r.map(e=>{var t;return{title:(null==e?void 0:e.label)||"Unknown",language:null==e?void 0:e.label,type:(null===(t=null==e?void 0:e.file)||void 0===t?void 0:t.includes(".vtt"))?"text/vtt":"application/x-subrip",uri:null==e?void 0:e.file}});a.push({server:"vidstreaming ",type:"m3u8",subtitles:i,link:null==t?void 0:t.videoUrl,headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0",Referer:u,Origin:u,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 a}catch(e){return[]}})};exports.mpGetStream=mpGetStream; \ No newline at end of file +"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 }); +exports.mpGetStream = void 0; +const mpGetStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link: id, type, providerContext, }) { + var _b, _c; + try { + const { getBaseUrl, cheerio } = providerContext; + const streams = []; + const { season, episode, tmdbId } = JSON.parse(id); + const baseUrl = yield getBaseUrl("moviesapi"); + const link = type === "movie" + ? `${baseUrl}/movie/${tmdbId}` + : `${baseUrl}/tv/${tmdbId}-${season}-${episode}`; + const res = yield fetch(link, { + headers: { + referer: baseUrl, + }, + }); + 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")) ? "text/vtt" : "application/x-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; + } + catch (err) { + console.error(err); + return []; + } + }); +}; +exports.mpGetStream = mpGetStream; diff --git a/dist/moviezwap/catalog.js b/dist/moviezwap/catalog.js index 026bec3..c33f15e 100644 --- a/dist/moviezwap/catalog.js +++ b/dist/moviezwap/catalog.js @@ -1 +1,22 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Telugu Movies",filter:"/category/Telugu-(2025)-Movies.html"},{title:"Tamil Movies",filter:"/category/Tamil-(2025)-Movies.html"},{title:"Hollywood Telugu Dubbed",filter:"/category/Telugu-Dubbed-Hollywood-Movies-Complete-Set.html"},{title:"Web Series",filter:"/category/Telugu-Web-Series.html"}],exports.genres=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Telugu Movies", + filter: "/category/Telugu-(2025)-Movies.html", + }, + { + title: "Tamil Movies", + filter: "/category/Tamil-(2025)-Movies.html", + }, + { + title: "Hollywood Telugu Dubbed", + filter: "/category/Telugu-Dubbed-Hollywood-Movies-Complete-Set.html", + }, + { + title: "Web Series", + filter: "/category/Telugu-Web-Series.html", + }, +]; +exports.genres = []; diff --git a/dist/moviezwap/episodes.js b/dist/moviezwap/episodes.js index b414ef3..4a86787 100644 --- a/dist/moviezwap/episodes.js +++ b/dist/moviezwap/episodes.js @@ -1 +1,46 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,o,n){return new(o||(o=Promise))(function(i,r){function a(e){try{d(n.next(e))}catch(e){r(e)}}function s(e){try{d(n.throw(e))}catch(e){r(e)}}function d(e){var t;e.done?i(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,s)}d((n=n.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getEpisodes=void 0;const getEpisodes=function(e){return __awaiter(this,arguments,void 0,function*({url:e,providerContext:t}){const{axios:o,cheerio:n,getBaseUrl:i}=t;try{const t=yield o.get(e),r=yield i("moviezwap"),a=t.data,s=n.load(a),d=[];return s('a[href*="download.php?file="], a[href*="dwload.php?file="]').each((e,t)=>{var o;const n=(null===(o=s(t).attr("href"))||void 0===o?void 0:o.replace("dwload.php","download.php"))||"";let i=s(t).text().trim();i.includes("Download page")&&(i="Play"),n&&i&&d.push({title:i,link:r+n})}),d}catch(e){return[]}})};exports.getEpisodes=getEpisodes; \ No newline at end of file +"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 }); +exports.getEpisodes = void 0; +const getEpisodes = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) { + const { axios, cheerio, getBaseUrl } = providerContext; + try { + const res = yield axios.get(url); + const baseUrl = yield getBaseUrl("moviezwap"); + const html = res.data; + const $ = cheerio.load(html); + const episodeLinks = []; + $('a[href*="download.php?file="], a[href*="dwload.php?file="]').each((i, el) => { + var _a; + const downloadPage = ((_a = $(el).attr("href")) === null || _a === void 0 ? void 0 : _a.replace("dwload.php", "download.php")) || ""; + let text = $(el).text().trim(); + if (text.includes("Download page")) { + // Remove "Download" from the text + text = "Play"; + } + if (downloadPage && text) { + // Only add links with quality in text + episodeLinks.push({ + title: text, + link: baseUrl + downloadPage, + }); + } + }); + return episodeLinks; + } + catch (err) { + console.error(err); + return []; + } + }); +}; +exports.getEpisodes = getEpisodes; diff --git a/dist/moviezwap/meta.js b/dist/moviezwap/meta.js index 7716b65..fe1ca83 100644 --- a/dist/moviezwap/meta.js +++ b/dist/moviezwap/meta.js @@ -1 +1,106 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(o,a){function r(t){try{l(n.next(t))}catch(t){a(t)}}function s(t){try{l(n.throw(t))}catch(t){a(t)}}function l(t){var e;t.done?o(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(r,s)}l((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){try{const{axios:i,cheerio:n,getBaseUrl:o}=e,a=yield o("moviezwap"),r=t.startsWith("http")?t:`${a}${t}`,s=(yield i.get(r)).data,l=n.load(s);let c=l('img[width="260"]').attr("src")||"";c&&!c.startsWith("http")&&(c=a+c);const p=l("font[color='steelblue']").map((t,e)=>l(e).text().trim()).get().slice(0,2),d=l("title").text().replace(" - MoviezWap","").trim()||"";let h="",u="",m="movie",f=[];l("td:contains('Movie Information')").parent().nextAll("tr").each((t,e)=>{const i=l(e).find("td");if(2===i.length){const t=i.eq(0).text().trim(),e=i.eq(1).text().trim();f.push(`${t}: ${e}`),t.toLowerCase().includes("plot")&&(h=e),t.toLowerCase().includes("imdb")&&(u=e)}}),h||(h=l("p:contains('plot')").text().trim());const g=[];return l('a[href*="download.php?file="], a[href*="dwload.php?file="]').each((t,e)=>{var i;const n=(null===(i=l(e).attr("href"))||void 0===i?void 0:i.replace("dwload.php","download.php"))||"",o=l(e).text().trim();n&&/\d+p/i.test(o)&&g.push({title:o,directLinks:[{title:"Movie",link:a+n}]})}),l("img[src*='/images/play.png']").each((t,e)=>{const i=l(e).siblings("a").attr("href"),n=l(e).siblings("a").text().trim();i&&n&&g.push({title:n,episodesLink:a+i})}),{title:d,synopsis:h,image:c,imdbId:u,tags:p,type:m,linkList:g}}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + try { + const { axios, cheerio, getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("moviezwap"); + const url = link.startsWith("http") ? link : `${baseUrl}${link}`; + const res = yield axios.get(url); + const data = res.data; + const $ = cheerio.load(data); + // 1. Poster image find image with width 260 + let image = $('img[width="260"]').attr("src") || ""; + if (image && !image.startsWith("http")) { + image = baseUrl + image; + } + const tags = $("font[color='steelblue']") + .map((i, el) => $(el).text().trim()) + .get() + .slice(0, 2); + // 2. Title + const title = $("title").text().replace(" - MoviezWap", "").trim() || ""; + // 3. Info table + let synopsis = ""; + let imdbId = ""; + let type = "movie"; + let infoRows = []; + $("td:contains('Movie Information')") + .parent() + .nextAll("tr") + .each((i, el) => { + const tds = $(el).find("td"); + if (tds.length === 2) { + const key = tds.eq(0).text().trim(); + const value = tds.eq(1).text().trim(); + infoRows.push(`${key}: ${value}`); + if (key.toLowerCase().includes("plot")) + synopsis = value; + if (key.toLowerCase().includes("imdb")) + imdbId = value; + } + }); + if (!synopsis) { + // fallback: try to find a

with plot + synopsis = $("p:contains('plot')").text().trim(); + } + // 4. Download links (multiple qualities) + const links = []; + $('a[href*="download.php?file="], a[href*="dwload.php?file="]').each((i, el) => { + var _a; + const downloadPage = ((_a = $(el).attr("href")) === null || _a === void 0 ? void 0 : _a.replace("dwload.php", "download.php")) || ""; + const text = $(el).text().trim(); + if (downloadPage && /\d+p/i.test(text)) { + // Only add links with quality in text + links.push({ + title: text, + directLinks: [{ title: "Movie", link: baseUrl + downloadPage }], + }); + } + }); + $("img[src*='/images/play.png']").each((i, el) => { + const downloadPage = $(el).siblings("a").attr("href"); + const text = $(el).siblings("a").text().trim(); + console.log("Found link:🔥🔥", text, downloadPage); + if (downloadPage && text) { + links.push({ + title: text, + episodesLink: baseUrl + downloadPage, + }); + } + }); + return { + title, + synopsis, + image, + imdbId, + tags, + type, + linkList: links, + //info: infoRows.join("\n"), + }; + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/moviezwap/posts.js b/dist/moviezwap/posts.js index 791a6ad..b696579 100644 --- a/dist/moviezwap/posts.js +++ b/dist/moviezwap/posts.js @@ -1 +1,57 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,o){return new(r||(r=Promise))(function(n,i){function s(t){try{c(o.next(t))}catch(t){i(t)}}function a(t){try{c(o.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}c((o=o.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,signal:r,providerContext:o}){const{getBaseUrl:n,cheerio:i}=o;return posts({url:`${yield n("moviezwap")}${t}`,signal:r,cheerio:i})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:r,providerContext:o}){const{getBaseUrl:n,cheerio:i}=o;return posts({url:`${yield n("moviezwap")}/search.php?q=${encodeURIComponent(t)}`,signal:r,cheerio:i})})};function posts(t){return __awaiter(this,arguments,void 0,function*({url:t,signal:e,cheerio:r}){try{const o=yield fetch(t,{signal:e}),n=yield o.text(),i=r.load(n),s=[];return i('a[href^="/movie/"]').each((t,e)=>{const r=i(e).text().trim(),o=i(e).attr("href");r&&o&&s.push({title:r,link:o,image:""})}),s}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) { + const { getBaseUrl, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("moviezwap"); + const url = `${baseUrl}${filter}`; + return posts({ url, signal, cheerio }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) { + const { getBaseUrl, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("moviezwap"); + const url = `${baseUrl}/search.php?q=${encodeURIComponent(searchQuery)}`; + return posts({ url, signal, cheerio }); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ url, signal, cheerio, }) { + try { + const res = yield fetch(url, { signal }); + const data = yield res.text(); + const $ = cheerio.load(data); + const catalog = []; + $('a[href^="/movie/"]').each((i, el) => { + const title = $(el).text().trim(); + const link = $(el).attr("href"); + const image = ""; + if (title && link) { + catalog.push({ + title: title, + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + console.error("moviezwapGetPosts error ", err); + return []; + } + }); +} diff --git a/dist/moviezwap/stream.js b/dist/moviezwap/stream.js index 4b283e2..a71a814 100644 --- a/dist/moviezwap/stream.js +++ b/dist/moviezwap/stream.js @@ -1 +1,35 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,n,a){return new(n||(n=Promise))(function(r,o){function i(e){try{c(a.next(e))}catch(e){o(e)}}function s(e){try{c(a.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(i,s)}c((a=a.apply(e,t||[])).next())})};function getStream(e){return __awaiter(this,arguments,void 0,function*({link:e,signal:t,providerContext:n}){const{axios:a,cheerio:r,commonHeaders:o}=n,i=(yield a.get(e,{headers:o,signal:t})).data,s=r.load(i),c=[];return s('a:contains("Fast Download Server")').each((e,t)=>{const n=s(t).attr("href");n&&n.toLocaleLowerCase().includes(".mp4")&&c.push({link:n,type:"mp4",server:"Fast Download",headers:o})}),c})}Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = getStream; +function getStream(_a) { + return __awaiter(this, arguments, void 0, function* ({ link, signal, providerContext, }) { + const { axios, cheerio, commonHeaders: headers } = providerContext; + const res = yield axios.get(link, { headers, signal }); + const html = res.data; + const $ = cheerio.load(html); + const Streams = []; + // Find the actual .mp4 download link + let downloadLink = null; + $('a:contains("Fast Download Server")').each((i, el) => { + const href = $(el).attr("href"); + if (href && href.toLocaleLowerCase().includes(".mp4")) { + Streams.push({ + link: href, + type: "mp4", + server: "Fast Download", + headers: headers, + }); + } + }); + return Streams; + }); +} diff --git a/dist/multi/catalog.js b/dist/multi/catalog.js index 7d7016c..c8a00cd 100644 --- a/dist/multi/catalog.js +++ b/dist/multi/catalog.js @@ -1 +1,79 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Trending",filter:"/trending/"},{title:"Netflix",filter:"/genre/netflix/"},{title:"Amazon Prime",filter:"/genre/amazon-prime/"},{title:"Disney Hotstar",filter:"/genre/disney-hotstar/"}],exports.genres=[{title:"Action",filter:"/genre/action/"},{title:"Adventure",filter:"/genre/adventure/"},{title:"Animation",filter:"/genre/animation/"},{title:"Comedy",filter:"/genre/comedy/"},{title:"Crime",filter:"/genre/crime/"},{title:"Drama",filter:"/genre/drama/"},{title:"Family",filter:"/genre/family/"},{title:"Fantasy",filter:"/genre/fantasy/"},{title:"History",filter:"/genre/history/"},{title:"Horror",filter:"/genre/horror/"},{title:"Mystery",filter:"/genre/mystery/"},{title:"Romance",filter:"/genre/romance/"},{title:"Science Fiction",filter:"/genre/science-fiction/"},{title:"Thriller",filter:"/genre/thriller/"}]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Trending", + filter: "/trending/", + }, + { + title: "Netflix", + filter: "/genre/netflix/", + }, + { + title: "Amazon Prime", + filter: "/genre/amazon-prime/", + }, + { + title: "Disney Hotstar", + filter: "/genre/disney-hotstar/", + }, +]; +exports.genres = [ + { + title: "Action", + filter: "/genre/action/", + }, + { + title: "Adventure", + filter: "/genre/adventure/", + }, + { + title: "Animation", + filter: "/genre/animation/", + }, + { + title: "Comedy", + filter: "/genre/comedy/", + }, + { + title: "Crime", + filter: "/genre/crime/", + }, + { + title: "Drama", + filter: "/genre/drama/", + }, + { + title: "Family", + filter: "/genre/family/", + }, + { + title: "Fantasy", + filter: "/genre/fantasy/", + }, + { + title: "History", + filter: "/genre/history/", + }, + { + title: "Horror", + filter: "/genre/horror/", + }, + { + title: "Mystery", + filter: "/genre/mystery/", + }, + { + title: "Romance", + filter: "/genre/romance/", + }, + { + title: "Science Fiction", + filter: "/genre/science-fiction/", + }, + { + title: "Thriller", + filter: "/genre/thriller/", + }, +]; diff --git a/dist/multi/meta.js b/dist/multi/meta.js index bd161ad..1192299 100644 --- a/dist/multi/meta.js +++ b/dist/multi/meta.js @@ -1 +1,87 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(s,r){function o(t){try{c(n.next(t))}catch(t){r(t)}}function a(t){try{c(n.throw(t))}catch(t){r(t)}}function c(t){var e;t.done?s(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(o,a)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){try{const{axios:i,cheerio:n}=e,s=t,r=(yield i.get(s)).data,o=n.load(r),a=s.includes("tvshows")?"series":"movie",c="",d=s.split("/")[4].replace(/-/g," "),l=o(".g-item").find("a").attr("href")||"",p=o(".wp-content").find("p").text()||"",u=[];return"series"===a?o("#seasons").children().map((t,e)=>{const i=o(e).find(".title").children().remove().end().text();let n=[];o(e).find(".episodios").children().map((t,e)=>{const i="Episode"+o(e).find(".numerando").text().trim().split("-")[1],s=o(e).find("a").attr("href");i&&s&&n.push({title:i,link:s})}),i&&n.length>0&&u.push({title:i,directLinks:n})}):u.push({title:d,directLinks:[{title:d,link:s.slice(0,-1),type:"movie"}]}),{title:d,synopsis:p,image:l,imdbId:c,type:a,linkList:u}}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + try { + const { axios, cheerio } = providerContext; + const url = link; + const res = yield axios.get(url); + const data = res.data; + const $ = cheerio.load(data); + const type = url.includes("tvshows") ? "series" : "movie"; + const imdbId = ""; + const title = url.split("/")[4].replace(/-/g, " "); + const image = $(".g-item").find("a").attr("href") || ""; + const synopsis = $(".wp-content").find("p").text() || ""; + // Links + const links = []; + if (type === "series") { + $("#seasons") + .children() + .map((i, element) => { + const title = $(element) + .find(".title") + .children() + .remove() + .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, + }); + } + }); + } + else { + links.push({ + 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, + }; + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/multi/posts.js b/dist/multi/posts.js index e81a766..1aa8c61 100644 --- a/dist/multi/posts.js +++ b/dist/multi/posts.js @@ -1 +1,60 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,i){return new(r||(r=Promise))(function(n,s){function o(t){try{c(i.next(t))}catch(t){s(t)}}function a(t){try{c(i.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}c((i=i.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,signal:r,providerContext:i}){const{getBaseUrl:n,cheerio:s}=i;return posts({url:`${(yield n("multi"))+t}page/${e}/`,signal:r,cheerio:s})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,signal:e,providerContext:r}){const{getBaseUrl:i,cheerio:n}=r;return posts({url:`${yield i("multi")}/?s=${t}`,signal:e,cheerio:n})})};function posts(t){return __awaiter(this,arguments,void 0,function*({url:t,signal:e,cheerio:r}){try{const i=yield fetch(t,{signal:e}),n=yield i.text(),s=r.load(n),o=[];return s(".items.full").children().map((t,e)=>{const r=s(e).find(".poster").find("img").attr("alt"),i=s(e).find(".poster").find("a").attr("href"),n=s(e).find(".poster").find("img").attr("data-src")||s(e).find(".poster").find("img").attr("src");r&&i&&n&&o.push({title:r,link:i,image:n})}),o}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) { + const { getBaseUrl, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("multi"); + const url = `${baseUrl + filter}page/${page}/`; + return posts({ url, signal, cheerio }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, signal, providerContext, }) { + const { getBaseUrl, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("multi"); + const url = `${baseUrl}/?s=${searchQuery}`; + return posts({ url, signal, cheerio }); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ url, signal, cheerio, }) { + try { + const res = yield fetch(url, { signal }); + const data = yield res.text(); + const $ = cheerio.load(data); + const catalog = []; + $(".items.full") + .children() + .map((i, element) => { + const title = $(element).find(".poster").find("img").attr("alt"); + const link = $(element).find(".poster").find("a").attr("href"); + const image = $(element).find(".poster").find("img").attr("data-src") || + $(element).find(".poster").find("img").attr("src"); + if (title && link && image) { + catalog.push({ + title: title, + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + console.error("multiGetPosts error ", err); + return []; + } + }); +} diff --git a/dist/multi/stream.js b/dist/multi/stream.js index 7599e9b..7ba51e6 100644 --- a/dist/multi/stream.js +++ b/dist/multi/stream.js @@ -1 +1,139 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,i,o){return new(i||(i=Promise))(function(n,l){function a(e){try{s(o.next(e))}catch(e){l(e)}}function r(e){try{s(o.throw(e))}catch(e){l(e)}}function s(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(a,r)}s((o=o.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=function(e){return __awaiter(this,arguments,void 0,function*({link:e,providerContext:t}){var i,o,n,l,a,r,s,d,p;const{axios:c,cheerio:u}=t,v={"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"',Referer:"https://multimovies.online/","Sec-Fetch-User":"?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"};try{const t=(yield c.get(e,{headers:v})).data,y=u.load(t),g=[],w=y("#player-option-1").attr("data-post"),b=y("#player-option-1").attr("data-nume"),_=y("#player-option-1").attr("data-type"),x=e.split("/").slice(0,3).join("/"),j=new FormData;j.append("action","doo_player_ajax"),j.append("post",w||""),j.append("nume",b||""),j.append("type",_||"");const S=yield fetch(`${x}/wp-admin/admin-ajax.php`,{headers:v,body:j,method:"POST"}),O=yield S.json();let M=(null===(o=null===(i=null==O?void 0:O.embed_url)||void 0===i?void 0:i.match(/]+src="([^"]+)"[^>]*>/i))||void 0===o?void 0:o[1])||(null==O?void 0:O.embed_url);if(!M.includes("multimovies")){let e=M.split("/").slice(0,3).join("/");const t=yield c.head(e,{headers:v});t&&(e=null===(l=null===(n=t.request)||void 0===n?void 0:n.responseURL)||void 0===l?void 0:l.split("/").slice(0,3).join("/"));const i=M.split("/").pop(),o=new FormData;o.append("sid",i);const d=yield fetch(`${e}/embedhelper.php`,{headers:v,body:o,method:"POST"}),p=yield d.json(),u=null===(a=null==p?void 0:p.siteUrls)||void 0===a?void 0:a.smwh,h=u+((null===(r=JSON.parse(atob(null==p?void 0:p.mresult)))||void 0===r?void 0:r.smwh)||(null===(s=null==p?void 0:p.mresult)||void 0===s?void 0:s.smwh));h&&(M=h)}const k=(yield c.get(M,{headers:Object.assign(Object.assign({},v),{Referer:e})})).data;var h=/eval\(function\((.*?)\)\{.*?return p\}.*?\('(.*?)'\.split/.exec(k);let A="";if(h){var m=h[2];A=null===(d=m.split("',36,"))||void 0===d?void 0:d[0].trim();let e=36,t=m.split("',36,")[1].slice(2).split("|").length,i=m.split("',36,")[1].slice(2).split("|");for(;t--;)if(i[t]){var f=new RegExp("\\b"+t.toString(e)+"\\b","g");A=A.replace(f,i[t])}}const E=null===(p=null==A?void 0:A.match(/https?:\/\/[^"]+?\.m3u8[^"]*/))||void 0===p?void 0:p[0],P=[],R=null==A?void 0:A.match(/https:\/\/[^\s"]+\.vtt/g);return(null==R?void 0:R.length)&&R.forEach(e=>{const t=e.match(/_([a-zA-Z]{3})\.vtt$/)[1];P.push({language:t,uri:e,type:"text/vtt",title:t})}),E&&g.push({server:"Multi",link:E.replace(/&i=\d+,'\.4&/,"&i=0.4&"),type:"m3u8",subtitles:P}),g}catch(e){return[]}})};exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link: url, providerContext, }) { + var _b, _c, _d, _e, _f, _g, _h, _j, _k; + const { axios, cheerio } = providerContext; + const headers = { + "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"', + Referer: "https://multimovies.online/", + "Sec-Fetch-User": "?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", + }; + try { + const res = yield axios.get(url, { headers }); + const html = res.data; + const $ = cheerio.load(html); + const streamLinks = []; + const postId = $("#player-option-1").attr("data-post"); + const nume = $("#player-option-1").attr("data-nume"); + const typeValue = $("#player-option-1").attr("data-type"); + const baseUrl = url.split("/").slice(0, 3).join("/"); + console.log("baseUrl", baseUrl); + const formData = new FormData(); + formData.append("action", "doo_player_ajax"); + formData.append("post", postId || ""); + formData.append("nume", nume || ""); + formData.append("type", typeValue || ""); + console.log("formData", formData); + const playerRes = yield fetch(`${baseUrl}/wp-admin/admin-ajax.php`, { + headers: headers, + body: formData, + method: "POST", + }); + const playerData = yield playerRes.json(); + console.log("playerData", playerData); + let ifameUrl = ((_c = (_b = playerData === null || playerData === void 0 ? void 0 : playerData.embed_url) === null || _b === void 0 ? void 0 : _b.match(/]+src="([^"]+)"[^>]*>/i)) === null || _c === void 0 ? void 0 : _c[1]) || + (playerData === null || playerData === void 0 ? void 0 : playerData.embed_url); + console.log("ifameUrl", ifameUrl); + if (!ifameUrl.includes("multimovies")) { + let playerBaseUrl = ifameUrl.split("/").slice(0, 3).join("/"); + const newPlayerBaseUrl = yield axios.head(playerBaseUrl, { headers }); + 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 playerId = ifameUrl.split("/").pop(); + const NewformData = new FormData(); + NewformData.append("sid", playerId); + console.log("NewformData", playerBaseUrl + "/embedhelper.php", NewformData); + const playerRes = yield fetch(`${playerBaseUrl}/embedhelper.php`, { + headers: headers, + body: NewformData, + method: "POST", + }); + const playerData = yield playerRes.json(); + // console.log('playerData', playerData); + const siteUrl = (_f = playerData === null || playerData === void 0 ? void 0 : playerData.siteUrls) === null || _f === void 0 ? void 0 : _f.smwh; + const siteId = ((_g = JSON.parse(atob(playerData === null || playerData === void 0 ? void 0 : playerData.mresult))) === null || _g === void 0 ? void 0 : _g.smwh) || + ((_h = playerData === null || playerData === void 0 ? void 0 : playerData.mresult) === null || _h === void 0 ? void 0 : _h.smwh); + const newIframeUrl = siteUrl + siteId; + console.log("newIframeUrl", newIframeUrl); + if (newIframeUrl) { + ifameUrl = newIframeUrl; + } + } + const iframeRes = yield axios.get(ifameUrl, { + headers: Object.assign(Object.assign({}, headers), { Referer: url }), + }); + const iframeData = iframeRes.data; + // Step 1: Extract the function parameters and the encoded string + var functionRegex = /eval\(function\((.*?)\)\{.*?return p\}.*?\('(.*?)'\.split/; + var match = functionRegex.exec(iframeData); + let p = ""; + if (match) { + // var params = match[1].split(',').map(param => param.trim()); + var encodedString = match[2]; + // console.log('Parameters:', params); + // console.log('Encoded String:', encodedString.split("',36,")[0], '🔥🔥'); + p = (_j = encodedString.split("',36,")) === null || _j === void 0 ? void 0 : _j[0].trim(); + let a = 36; + 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); + } + 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: "text/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; + } + catch (err) { + console.error(err); + return []; + } + }); +}; +exports.getStream = getStream; diff --git a/dist/netflixMirror/catalog.js b/dist/netflixMirror/catalog.js index 8e65032..f01210e 100644 --- a/dist/netflixMirror/catalog.js +++ b/dist/netflixMirror/catalog.js @@ -1 +1,18 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Home",filter:"/mobile/home?app=1"},{title:"Series",filter:"/mobile/series"},{title:"Movies",filter:"/mobile/movies"}],exports.genres=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Home", + filter: "/mobile/home?app=1", + }, + { + title: "Series", + filter: "/mobile/series", + }, + { + title: "Movies", + filter: "/mobile/movies", + }, +]; +exports.genres = []; diff --git a/dist/netflixMirror/episodes.js b/dist/netflixMirror/episodes.js index 0e75cea..65ec8ea 100644 --- a/dist/netflixMirror/episodes.js +++ b/dist/netflixMirror/episodes.js @@ -1 +1,64 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{p(i.next(e))}catch(e){r(e)}}function a(e){try{p(i.throw(e))}catch(e){r(e)}}function p(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(s,a)}p((i=i.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getEpisodes=void 0;const getEpisodes=function(e){return __awaiter(this,arguments,void 0,function*({url:e,providerContext:t}){var n;const{getBaseUrl:i,axios:o}=t;try{const t=`${yield i("nfMirror")}/episodes.php?s=`+e+"&t="+Math.round((new Date).getTime()/1e3);let r=1,s=!0;const a=[];for(;s;){const e=(yield o.get(t+`&page=${r}`,{headers:{"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"}})).data;null===(n=null==e?void 0:e.episodes)||void 0===n||n.map(e=>{a.push({title:"Episode "+(null==e?void 0:e.ep.replace("E","")),link:null==e?void 0:e.id})}),(null==e?void 0:e.nextPageShow)?r++:s=!1}return a.sort((e,t)=>parseInt(e.title.replace("Episode ",""))-parseInt(t.title.replace("Episode ","")))}catch(e){return[]}})};exports.getEpisodes=getEpisodes; \ No newline at end of file +"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 }); +exports.getEpisodes = void 0; +const getEpisodes = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ url: link, providerContext, }) { + var _b; + const { getBaseUrl, axios } = providerContext; + let providerValue = "netflixMirror"; + try { + const baseUrl = yield getBaseUrl("nfMirror"); + const url = `${baseUrl}${providerValue === "netflixMirror" + ? "/episodes.php?s=" + : "/pv/episodes.php?s="}` + + link + + "&t=" + + Math.round(new Date().getTime() / 1000); + console.log("nfEpisodesUrl", url); + let page = 1; + let hasMorePages = true; + const episodeList = []; + while (hasMorePages) { + const res = yield axios.get(url + `&page=${page}`, { + headers: { + "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; + (_b = data === null || data === void 0 ? void 0 : data.episodes) === null || _b === void 0 ? void 0 : _b.map((episode) => { + episodeList.push({ + title: "Episode " + (episode === null || episode === void 0 ? void 0 : episode.ep.replace("E", "")), + link: episode === null || episode === void 0 ? void 0 : episode.id, + }); + }); + if (data === null || data === void 0 ? void 0 : data.nextPageShow) { + page++; + } + else { + hasMorePages = false; + } + } + return episodeList.sort((a, b) => { + const aNum = parseInt(a.title.replace("Episode ", "")); + const bNum = parseInt(b.title.replace("Episode ", "")); + return aNum - bNum; + }); + } + catch (err) { + console.error("nfGetEpisodes error", err); + return []; + } + }); +}; +exports.getEpisodes = getEpisodes; diff --git a/dist/netflixMirror/meta.js b/dist/netflixMirror/meta.js index 2887659..45dc3ec 100644 --- a/dist/netflixMirror/meta.js +++ b/dist/netflixMirror/meta.js @@ -1 +1,66 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,i,e,n){return new(e||(e=Promise))(function(s,o){function l(t){try{a(n.next(t))}catch(t){o(t)}}function r(t){try{a(n.throw(t))}catch(t){o(t)}}function a(t){var i;t.done?s(t.value):(i=t.value,i instanceof e?i:new e(function(t){t(i)})).then(l,r)}a((n=n.apply(t,i||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t}){var i,e,n,s;try{const o=`https://netmirror.zendax.tech/api/net-proxy?${"isPrime=false"}&url=${encodeURIComponent(t)}`,l=yield fetch(o,{credentials:"omit"}),r=yield l.json(),a=null===(i=t.split("id=")[1])||void 0===i?void 0:i.split("&")[0],d={title:r.title,synopsis:r.desc,image:`https://img.nfmirrorcdn.top/poster/h/${a}.jpg`,cast:null===(e=null==r?void 0:r.short_cast)||void 0===e?void 0:e.split(","),tags:[null==r?void 0:r.year,null==r?void 0:r.hdsd,...null===(n=null==r?void 0:r.thismovieis)||void 0===n?void 0:n.split(",")],imdbId:"",type:"series"},u=[];return(null===(s=null==r?void 0:r.season)||void 0===s?void 0:s.length)>0?r.season.map(t=>{u.push({title:"Season "+(null==t?void 0:t.s),episodesLink:null==t?void 0:t.id})}):u.push({title:d.title,directLinks:[{link:a,title:"Movie",type:"movie"}]}),Object.assign(Object.assign({},d),{linkList:u})}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, }) { + var _b, _c, _d, _e; + let providerValue = "netflixMirror"; + try { + const isPrime = providerValue === "primeMirror" ? "isPrime=true" : "isPrime=false"; + const url = `https://netmirror.zendax.tech/api/net-proxy?${isPrime}&url=${encodeURIComponent(link)}`; + console.log("nfifo", url); + const res = yield fetch(url, { + credentials: "omit", + }); + const data = yield res.json(); + const id = (_b = link.split("id=")[1]) === null || _b === void 0 ? void 0 : _b.split("&")[0]; + const meta = { + title: data.title, + synopsis: data.desc, + image: `https://img.nfmirrorcdn.top/poster/h/${id}.jpg`, + cast: (_c = data === null || data === void 0 ? void 0 : data.short_cast) === null || _c === void 0 ? void 0 : _c.split(","), + 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: "", + type: "series", + }; + console.log("nfinfo", meta); + const linkList = []; + if (((_e = data === null || data === void 0 ? void 0 : data.season) === null || _e === void 0 ? void 0 : _e.length) > 0) { + data.season.map((season) => { + 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 }); + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/netflixMirror/posts.js b/dist/netflixMirror/posts.js index 778bdd1..8d82817 100644 --- a/dist/netflixMirror/posts.js +++ b/dist/netflixMirror/posts.js @@ -1 +1,108 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,i){return new(r||(r=Promise))(function(o,n){function s(t){try{c(i.next(t))}catch(t){n(t)}}function a(t){try{c(i.throw(t))}catch(t){n(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}c((i=i.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,providerValue:r,signal:i,providerContext:o}){try{const{getBaseUrl:n,cheerio:s}=o,a=yield n("nfMirror"),c=[];if(e>1)return[];const p=`https://netmirror.zendax.tech/api/net-proxy?${"primeMirror"===r?"isPrime=true":"isPrime=false"}&url=${a+t}`,l=yield fetch(p,{signal:i,method:"GET",credentials:"omit"}),d=yield l.text(),u=s.load(d);return u("a.post-data").map((t,e)=>{const i=u(e).attr("data-post"),o=u(e).find("img").attr("data-src")||"";i&&c.push({title:"",link:a+""+("netflixMirror"===r?"/post.php?id=":"/pv/post.php?id=")+i+"&t="+Math.round((new Date).getTime()/1e3),image:o})}),c}catch(t){return[]}})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,providerValue:r,signal:i,providerContext:o}){var n;const{getBaseUrl:s}=o;try{if(e>1)return[];const o=[],a=yield s("nfMirror"),c=`https://netmirror.zendax.tech/api/net-proxy?${"primeMirror"===r?"isPrime=true":"isPrime=false"}&url=${a}${"netflixMirror"===r?"":"/pv"}/search.php?s=${encodeURI(t)}`,p=yield fetch(c,{signal:i,method:"GET",credentials:"omit"}),l=yield p.json();return null===(n=null==l?void 0:l.searchResult)||void 0===n||n.forEach(t=>{const e=(null==t?void 0:t.t)||"",i=null==t?void 0:t.id,n="netflixMirror"===r?`https://imgcdn.media/poster/v/${i}.jpg`:"";i&&o.push({title:e,link:a+""+("netflixMirror"===r?"/mobile/post.php?id=":"/mobile/pv/post.php?id=")+i+"&t="+Math.round((new Date).getTime()/1e3),image:n})}),o}catch(t){return[]}})};exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, providerValue, signal, providerContext, }) { + try { + const { getBaseUrl, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("nfMirror"); + const catalog = []; + if (page > 1) { + return []; + } + // console.log(filter); + const isPrime = providerValue === "primeMirror" ? "isPrime=true" : "isPrime=false"; + const url = `https://netmirror.zendax.tech/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 []; + } + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, providerValue, signal, providerContext, }) { + var _b; + 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.zendax.tech/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 []; + } + }); +}; +exports.getSearchPosts = getSearchPosts; diff --git a/dist/netflixMirror/stream.js b/dist/netflixMirror/stream.js index 0752bd5..f19e3f4 100644 --- a/dist/netflixMirror/stream.js +++ b/dist/netflixMirror/stream.js @@ -1 +1,49 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))(function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function l(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(a,l)}c((n=n.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=e=>__awaiter(void 0,[e],void 0,function*({link:e,providerContext:t}){const{getBaseUrl:r}=t;try{const t="https://netfree2.cc",r=`https://netmirror.zendax.tech/api/net-proxy?url=${t}${"netflixMirror"==="netflixMirror"?"/mobile/playlist.php?id=":"/pv/playlist.php?id="}${e}&t=${Math.round((new Date).getTime()/1e3)}`,n=yield fetch(r,{credentials:"omit"}),i=yield n.json(),o=null==i?void 0:i[0],a=[];return null==o||o.sources.forEach(e=>{var r;a.push({server:e.label,link:null===(r=e.file)||void 0===r?void 0:r.replace(":su",":ni"),type:"m3u8",headers:{Referer:t,origin:t,Cookie:"hd=on"}})}),a}catch(e){return[]}});exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = (_a) => __awaiter(void 0, [_a], void 0, function* ({ link: id, providerContext, }) { + const { getBaseUrl } = providerContext; + try { + let providerValue = "netflixMirror"; + const baseUrl = "https://netfree2.cc"; + const url = `https://netmirror.zendax.tech/api/net-proxy?url=${baseUrl}${providerValue === "netflixMirror" + ? "/mobile/playlist.php?id=" + : "/pv/playlist.php?id="}${id}&t=${Math.round(new Date().getTime() / 1000)}`; + console.log("nfGetStream, url:", url); + const res = yield fetch(url, { + credentials: "omit", + }); + const resJson = yield res.json(); + const data = resJson === null || resJson === void 0 ? void 0 : resJson[0]; + const streamLinks = []; + data === null || data === void 0 ? void 0 : data.sources.forEach((source) => { + var _a; + streamLinks.push({ + server: source.label, + link: (_a = source.file) === null || _a === void 0 ? void 0 : _a.replace(":su", ":ni"), + type: "m3u8", + headers: { + Referer: baseUrl, + origin: baseUrl, + Cookie: "hd=on", + }, + }); + }); + console.log(streamLinks); + return streamLinks; + } + catch (err) { + console.error(err); + return []; + } +}); +exports.getStream = getStream; diff --git a/dist/primeMirror/catalog.js b/dist/primeMirror/catalog.js index 8e65032..f01210e 100644 --- a/dist/primeMirror/catalog.js +++ b/dist/primeMirror/catalog.js @@ -1 +1,18 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Home",filter:"/mobile/home?app=1"},{title:"Series",filter:"/mobile/series"},{title:"Movies",filter:"/mobile/movies"}],exports.genres=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Home", + filter: "/mobile/home?app=1", + }, + { + title: "Series", + filter: "/mobile/series", + }, + { + title: "Movies", + filter: "/mobile/movies", + }, +]; +exports.genres = []; diff --git a/dist/primeMirror/episodes.js b/dist/primeMirror/episodes.js index 8c6b328..c337367 100644 --- a/dist/primeMirror/episodes.js +++ b/dist/primeMirror/episodes.js @@ -1 +1,62 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{p(i.next(e))}catch(e){r(e)}}function a(e){try{p(i.throw(e))}catch(e){r(e)}}function p(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(s,a)}p((i=i.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getEpisodes=void 0;const getEpisodes=function(e){return __awaiter(this,arguments,void 0,function*({url:e,providerContext:t}){var n;const{getBaseUrl:i,axios:o}=t;try{const t=`${yield i("nfMirror")}/pv/episodes.php?s=`+e+"&t="+Math.round((new Date).getTime()/1e3);let r=1,s=!0;const a=[];for(;s;){const e=(yield o.get(t+`&page=${r}`,{headers:{"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"}})).data;null===(n=null==e?void 0:e.episodes)||void 0===n||n.map(e=>{a.push({title:"Episode "+(null==e?void 0:e.ep.replace("E","")),link:null==e?void 0:e.id})}),(null==e?void 0:e.nextPageShow)?r++:s=!1}return a.sort((e,t)=>parseInt(e.title.replace("Episode ",""))-parseInt(t.title.replace("Episode ","")))}catch(e){return[]}})};exports.getEpisodes=getEpisodes; \ No newline at end of file +"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 }); +exports.getEpisodes = void 0; +const getEpisodes = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ url: link, providerContext, }) { + var _b; + const { getBaseUrl, axios } = providerContext; + let providerValue = "netflixMirror"; + try { + const baseUrl = yield getBaseUrl("nfMirror"); + const url = `${baseUrl}${"/pv/episodes.php?s="}` + + link + + "&t=" + + Math.round(new Date().getTime() / 1000); + console.log("nfEpisodesUrl", url); + let page = 1; + let hasMorePages = true; + const episodeList = []; + while (hasMorePages) { + const res = yield axios.get(url + `&page=${page}`, { + headers: { + "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; + (_b = data === null || data === void 0 ? void 0 : data.episodes) === null || _b === void 0 ? void 0 : _b.map((episode) => { + episodeList.push({ + title: "Episode " + (episode === null || episode === void 0 ? void 0 : episode.ep.replace("E", "")), + link: episode === null || episode === void 0 ? void 0 : episode.id, + }); + }); + if (data === null || data === void 0 ? void 0 : data.nextPageShow) { + page++; + } + else { + hasMorePages = false; + } + } + return episodeList.sort((a, b) => { + const aNum = parseInt(a.title.replace("Episode ", "")); + const bNum = parseInt(b.title.replace("Episode ", "")); + return aNum - bNum; + }); + } + catch (err) { + console.error("nfGetEpisodes error", err); + return []; + } + }); +}; +exports.getEpisodes = getEpisodes; diff --git a/dist/primeMirror/meta.js b/dist/primeMirror/meta.js index 9a8c875..978f710 100644 --- a/dist/primeMirror/meta.js +++ b/dist/primeMirror/meta.js @@ -1 +1,66 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,i,e,n){return new(e||(e=Promise))(function(o,s){function l(t){try{d(n.next(t))}catch(t){s(t)}}function r(t){try{d(n.throw(t))}catch(t){s(t)}}function d(t){var i;t.done?o(t.value):(i=t.value,i instanceof e?i:new e(function(t){t(i)})).then(l,r)}d((n=n.apply(t,i||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t}){var i,e,n,o;try{const s=`https://netmirror.zendax.tech/api/net-proxy?${"isPrime=true"}&url=${encodeURIComponent(t)}`,l=yield fetch(s,{credentials:"omit"}),r=yield l.json(),d=null===(i=t.split("id=")[1])||void 0===i?void 0:i.split("&")[0],a={title:r.title,synopsis:r.desc,image:`https://img.nfmirrorcdn.top/poster/h/${d}.jpg`,cast:null===(e=null==r?void 0:r.short_cast)||void 0===e?void 0:e.split(","),tags:[null==r?void 0:r.year,null==r?void 0:r.hdsd,...null===(n=null==r?void 0:r.thismovieis)||void 0===n?void 0:n.split(",")],imdbId:"",type:"series"},u=[];return(null===(o=null==r?void 0:r.season)||void 0===o?void 0:o.length)>0?r.season.map(t=>{u.push({title:"Season "+(null==t?void 0:t.s),episodesLink:null==t?void 0:t.id})}):u.push({title:a.title,directLinks:[{link:d,title:"Movie",type:"movie"}]}),Object.assign(Object.assign({},a),{linkList:u})}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, }) { + var _b, _c, _d, _e; + let providerValue = "primeMirror"; + try { + const isPrime = providerValue === "primeMirror" ? "isPrime=true" : "isPrime=false"; + const url = `https://netmirror.zendax.tech/api/net-proxy?${isPrime}&url=${encodeURIComponent(link)}`; + console.log("nfifo", url); + const res = yield fetch(url, { + credentials: "omit", + }); + const data = yield res.json(); + const id = (_b = link.split("id=")[1]) === null || _b === void 0 ? void 0 : _b.split("&")[0]; + const meta = { + title: data.title, + synopsis: data.desc, + image: `https://img.nfmirrorcdn.top/poster/h/${id}.jpg`, + cast: (_c = data === null || data === void 0 ? void 0 : data.short_cast) === null || _c === void 0 ? void 0 : _c.split(","), + 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: "", + type: "series", + }; + console.log("nfinfo", meta); + const linkList = []; + if (((_e = data === null || data === void 0 ? void 0 : data.season) === null || _e === void 0 ? void 0 : _e.length) > 0) { + data.season.map((season) => { + 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 }); + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/primeMirror/posts.js b/dist/primeMirror/posts.js index 5f9365d..0509a42 100644 --- a/dist/primeMirror/posts.js +++ b/dist/primeMirror/posts.js @@ -1 +1,108 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,i){return new(r||(r=Promise))(function(o,n){function s(t){try{p(i.next(t))}catch(t){n(t)}}function a(t){try{p(i.throw(t))}catch(t){n(t)}}function p(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}p((i=i.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,providerValue:r,signal:i,providerContext:o}){try{const{getBaseUrl:n,cheerio:s}=o,a=yield n("nfMirror"),p=[];if(e>1)return[];const c=`https://netmirror.zendax.tech/api/net-proxy?${"primeMirror"===r?"isPrime=true":"isPrime=false"}&url=${a+t}`,l=yield fetch(c,{signal:i,method:"GET",credentials:"omit"}),d=yield l.text(),u=s.load(d);return u("a.post-data").map((t,e)=>{const i=u(e).attr("data-post"),o=u(e).find("img").attr("data-src")||"";i&&p.push({title:"",link:a+""+("netflixMirror"===r?"/post.php?id=":"/pv/post.php?id=")+i+"&t="+Math.round((new Date).getTime()/1e3),image:o})}),p}catch(t){return[]}})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,providerValue:r,signal:i,providerContext:o}){var n;const{getBaseUrl:s}=o;try{if(e>1)return[];const o=[],a=yield s("nfMirror"),p=`https://netmirror.zendax.tech/api/net-proxy?${"primeMirror"===r?"isPrime=true":"isPrime=false"}&url=${a}${"netflixMirror"===r?"":"/pv"}/search.php?s=${encodeURI(t)}`,c=yield fetch(p,{signal:i,method:"GET",credentials:"omit"}),l=yield c.json();return null===(n=null==l?void 0:l.searchResult)||void 0===n||n.forEach(t=>{const e=(null==t?void 0:t.t)||"",i=null==t?void 0:t.id,n="netflixMirror"===r?`https://imgcdn.media/poster/v/${i}.jpg`:`https://imgcdn.media/pv/341/${i}.jpg`;i&&o.push({title:e,link:a+""+("netflixMirror"===r?"/mobile/post.php?id=":"/mobile/pv/post.php?id=")+i+"&t="+Math.round((new Date).getTime()/1e3),image:n})}),o}catch(t){return[]}})};exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, providerValue, signal, providerContext, }) { + try { + const { getBaseUrl, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("nfMirror"); + const catalog = []; + if (page > 1) { + return []; + } + // console.log(filter); + const isPrime = providerValue === "primeMirror" ? "isPrime=true" : "isPrime=false"; + const url = `https://netmirror.zendax.tech/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 []; + } + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, providerValue, signal, providerContext, }) { + var _b; + 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.zendax.tech/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` + : `https://imgcdn.media/pv/341/${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; diff --git a/dist/primeMirror/stream.js b/dist/primeMirror/stream.js index 4677054..a6bbc96 100644 --- a/dist/primeMirror/stream.js +++ b/dist/primeMirror/stream.js @@ -1 +1,49 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))(function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function l(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(a,l)}c((n=n.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=e=>__awaiter(void 0,[e],void 0,function*({link:e,providerContext:t}){const{getBaseUrl:r}=t;try{const t="https://netfree2.cc",r=`https://netmirror.zendax.tech/api/net-proxy?url=${t}${"netflixMirror"==="primeMirror"?"/mobile/playlist.php?id=":"/pv/playlist.php?id="}${e}&t=${Math.round((new Date).getTime()/1e3)}`,n=yield fetch(r,{credentials:"omit"}),i=yield n.json(),o=null==i?void 0:i[0],a=[];return null==o||o.sources.forEach(e=>{var r;a.push({server:e.label,link:null===(r=t+e.file)||void 0===r?void 0:r.replace(":su",":ni"),type:"m3u8",headers:{Referer:t,origin:t,Cookie:"hd=on"}})}),a}catch(e){return[]}});exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = (_a) => __awaiter(void 0, [_a], void 0, function* ({ link: id, providerContext, }) { + const { getBaseUrl } = providerContext; + try { + let providerValue = "primeMirror"; + const baseUrl = "https://netfree2.cc"; + const url = `https://netmirror.zendax.tech/api/net-proxy?url=${baseUrl}${providerValue === "netflixMirror" + ? "/mobile/playlist.php?id=" + : "/pv/playlist.php?id="}${id}&t=${Math.round(new Date().getTime() / 1000)}`; + console.log("nfGetStream, url:", url); + const res = yield fetch(url, { + credentials: "omit", + }); + const resJson = yield res.json(); + const data = resJson === null || resJson === void 0 ? void 0 : resJson[0]; + const streamLinks = []; + data === null || data === void 0 ? void 0 : data.sources.forEach((source) => { + var _a; + streamLinks.push({ + server: source.label, + link: (_a = (baseUrl + source.file)) === null || _a === void 0 ? void 0 : _a.replace(":su", ":ni"), + type: "m3u8", + headers: { + Referer: baseUrl, + origin: baseUrl, + Cookie: "hd=on", + }, + }); + }); + console.log(streamLinks); + return streamLinks; + } + catch (err) { + console.error(err); + return []; + } +}); +exports.getStream = getStream; diff --git a/dist/primewire/catalog.js b/dist/primewire/catalog.js index d1f8df3..ec3418d 100644 --- a/dist/primewire/catalog.js +++ b/dist/primewire/catalog.js @@ -1 +1,18 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Recently Added",filter:"/filter?sort=Just+Added&free_links=true"},{title:"TV Shows",filter:"/filter?sort=Trending+Today&type=tv"},{title:"Movies",filter:"/filter?sort=Trending+Today&type=movie"}],exports.genres=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Recently Added", + filter: "/filter?sort=Just+Added&free_links=true", + }, + { + title: "TV Shows", + filter: "/filter?sort=Trending+Today&type=tv", + }, + { + title: "Movies", + filter: "/filter?sort=Trending+Today&type=movie", + }, +]; +exports.genres = []; diff --git a/dist/primewire/meta.js b/dist/primewire/meta.js index f7c4d64..33c3d6b 100644 --- a/dist/primewire/meta.js +++ b/dist/primewire/meta.js @@ -1 +1,89 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(o,r){function s(t){try{c(n.next(t))}catch(t){r(t)}}function a(t){try{c(n.throw(t))}catch(t){r(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(s,a)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){var i;try{const{axios:n,cheerio:o}=e,r=t,s=t.split("/").slice(0,3).join("/"),a=yield n.get(r),c=yield a.data,d=o.load(c),l=(null===(i=d(".movie_info").find('a[href*="imdb.com/title/tt"]:not([href*="imdb.com/title/tt/"])').attr("href"))||void 0===i?void 0:i.split("/")[4])||"",h=d(".show_season").html()?"series":"movie",u=[];return d(".show_season").each((t,e)=>{const i="Season "+d(e).attr("data-id"),n=[];d(e).children().each((t,e)=>{const i=d(e).find("a").children().remove().end().text().trim().replace("E","Epiosode "),o=s+d(e).find("a").attr("href");i&&o&&n.push({title:i,link:o})}),u.push({title:i,directLinks:n})}),"movie"===h&&u.push({title:"Movie",directLinks:[{link:t,title:"Movie",type:"movie"}]}),{title:"",image:"",imdbId:l,synopsis:"",type:h,linkList:u}}catch(t){return{title:"",image:"",imdbId:"",synopsis:"",linkList:[],type:"uhd"}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b; + try { + const { axios, cheerio } = providerContext; + const url = link; + const baseUrl = link.split("/").slice(0, 3).join("/"); + const res = yield axios.get(url); + const html = yield res.data; + const $ = cheerio.load(html); + const imdbId = ((_b = $(".movie_info") + .find('a[href*="imdb.com/title/tt"]:not([href*="imdb.com/title/tt/"])') + .attr("href")) === null || _b === void 0 ? void 0 : _b.split("/")[4]) || ""; + const type = $(".show_season").html() ? "series" : "movie"; + const linkList = []; + $(".show_season").each((i, element) => { + const seasonTitle = "Season " + $(element).attr("data-id"); + const episodes = []; + $(element) + .children() + .each((i, element2) => { + const episodeTitle = $(element2) + .find("a") + .children() + .remove() + .end() + .text() + .trim() + .replace("E", "Epiosode "); + const episodeLink = baseUrl + $(element2).find("a").attr("href"); + if (episodeTitle && episodeLink) { + episodes.push({ + title: episodeTitle, + link: episodeLink, + }); + } + }); + linkList.push({ + title: seasonTitle, + directLinks: episodes, + }); + }); + if (type === "movie") { + linkList.push({ + title: "Movie", + directLinks: [ + { + link: link, + title: "Movie", + type: "movie", + }, + ], + }); + } + return { + title: "", + image: "", + imdbId: imdbId, + synopsis: "", + type: type, + linkList: linkList, + }; + } + catch (error) { + console.error(error); + return { + title: "", + image: "", + imdbId: "", + synopsis: "", + linkList: [], + type: "uhd", + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/primewire/posts.js b/dist/primewire/posts.js index 58ae5d5..0c04813 100644 --- a/dist/primewire/posts.js +++ b/dist/primewire/posts.js @@ -1 +1,63 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,r){return new(i||(i=Promise))(function(s,n){function o(t){try{c(r.next(t))}catch(t){n(t)}}function a(t){try{c(r.throw(t))}catch(t){n(t)}}function c(t){var e;t.done?s(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(o,a)}c((r=r.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,signal:i,providerContext:r}){const{getBaseUrl:s,axios:n,cheerio:o}=r,a=yield s("primewire");return posts({baseUrl:a,url:`${a+t}&page=${e}`,signal:i,axios:n,cheerio:o})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:i,providerContext:r}){const{getBaseUrl:s,axios:n,cheerio:o,Aes:a}=r,c=yield s("primewire");return posts({baseUrl:c,url:`${c}/filter?s=${t}&page=${e}&ds=${(yield function(t){return __awaiter(this,void 0,void 0,function*(){return yield a.sha1(t)})}(t+"JyjId97F9PVqUPuMO0")).slice(0,10)}`,signal:i,axios:n,cheerio:o})})};function posts(t){return __awaiter(this,arguments,void 0,function*({baseUrl:t,url:e,signal:i,axios:r,cheerio:s}){try{const n=(yield r.get(e,{signal:i})).data,o=s.load(n),a=[];return o(".index_item.index_item_ie").map((e,i)=>{const r=o(i).find("a").attr("title"),s=o(i).find("a").attr("href"),n=o(i).find("img").attr("src")||"";r&&s&&a.push({title:r,link:t+s,image:n})}),a}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) { + const { getBaseUrl, axios, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("primewire"); + const url = `${baseUrl + filter}&page=${page}`; + return posts({ baseUrl, url, signal, axios, cheerio }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) { + const { getBaseUrl, axios, cheerio, Aes } = providerContext; + const getSHA256ofJSON = function (input) { + return __awaiter(this, void 0, void 0, function* () { + return yield Aes.sha1(input); + }); + }; + 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; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ baseUrl, url, signal, axios, cheerio, }) { + try { + const res = yield axios.get(url, { signal }); + const data = res.data; + const $ = cheerio.load(data); + const catalog = []; + $(".index_item.index_item_ie").map((i, element) => { + const title = $(element).find("a").attr("title"); + const link = $(element).find("a").attr("href"); + const image = $(element).find("img").attr("src") || ""; + if (title && link) { + catalog.push({ + title: title, + link: baseUrl + link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + console.error("primewire error ", err); + return []; + } + }); +} diff --git a/dist/primewire/stream.js b/dist/primewire/stream.js index 73b5a4a..450ba55 100644 --- a/dist/primewire/stream.js +++ b/dist/primewire/stream.js @@ -1 +1,137 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))(function(r,o){function c(e){try{s(i.next(e))}catch(e){o(e)}}function a(e){try{s(i.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(c,a)}s((i=i.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=function(e){return __awaiter(this,arguments,void 0,function*({link:e,type:t,providerContext:n}){var i,r,o,c,a,s;const{axios:l,cheerio:p}=n;try{const t=e.split("/").slice(0,3).join("/"),n=[],h=[],f=(yield l.get(e)).data,m=p.load(f);m('tr:contains("mixdrop")').map((e,n)=>{const i=m(n).find(".wp-menu-btn").attr("data-wp-menu"),r=m(n).find(".wp-menu-btn").next().text();i&&h.push({id:t+"/links/go/"+i,size:r})});for(const e of h){const t=yield l.head(e.id),p=null===(i=t.request)||void 0===i?void 0:i.responseURL.replace("/f/","/e/"),h=yield fetch(p,{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:null===(r=t.request)||void 0===r?void 0:r.responseURL},referrer:null===(o=t.request)||void 0===o?void 0:o.responseURL,method:"GET",mode:"cors"}),f=yield h.text();var u=/eval\(function\((.*?)\)\{.*?return p\}.*?\('(.*?)'\.split/.exec(f);let m="";if(u){var d=u[2];const i=Number(d.split(",'|MDCore|")[0].split(",")[d.split(",'|MDCore|")[0].split(",").length-1]);m=null===(c=d.split(`',${i},`))||void 0===c?void 0:c[0].trim();let r=i,o=d.split(`',${i},`)[1].slice(2).split("|").length,l=d.split(`',${i},`)[1].slice(2).split("|");const p=function(e,t,n,i,r,o){if(r=function(e){return e.toString(36)},!"".replace(/^/,String)){for(;n--;)o[n.toString(t)]=i[n]||n.toString(t);i=[function(e){return o[e]}],r=function(){return"\\w+"},n=1}for(;n--;)i[n]&&(e=e.replace(new RegExp("\\b"+r(n)+"\\b","g"),i[n]));return e},h=p(m,r,o,l,0,{}),f="https:"+(null===(a=h.match(/MDCore\.wurl="([^"]+)"/))||void 0===a?void 0:a[1]);n.push({server:"Mixdrop "+e.size,link:f,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:null===(s=t.request)||void 0===s?void 0:s.responseURL}})}}return n}catch(e){return[]}})};exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link: url, type, providerContext, }) { + var _b, _c, _d, _e, _f, _g; + const { axios, cheerio } = providerContext; + try { + console.log("pwGetStream", type, url); + const baseUrl = url.split("/").slice(0, 3).join("/"); + const streamLinks = []; + const urls = []; + const res = yield axios.get(url); + const data = res.data; + const $ = cheerio.load(data); + $('tr:contains("mixdrop")').map((i, element) => { + const id = $(element).find(".wp-menu-btn").attr("data-wp-menu"); + 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 = yield axios.head(url.id); + const location = (_b = res2.request) === null || _b === void 0 ? void 0 : _b.responseURL.replace("/f/", "/e/"); + const res3 = yield 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: (_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"); + } + } + return streamLinks; + } + catch (err) { + console.error(err); + return []; + } + }); +}; +exports.getStream = getStream; diff --git a/dist/protonMovies/catalog.js b/dist/protonMovies/catalog.js index 040fedf..12fe1d9 100644 --- a/dist/protonMovies/catalog.js +++ b/dist/protonMovies/catalog.js @@ -1 +1,22 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Latest",filter:"/movies"},{title:"Netflix",filter:"/platform/netflix"},{title:"Disney +",filter:"/platform/disney-hotstar"},{title:"Amazon Prime",filter:"/platform/amazon-prime-video"}],exports.genres=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Latest", + filter: "/movies", + }, + { + title: "Netflix", + filter: "/platform/netflix", + }, + { + title: "Disney +", + filter: "/platform/disney-hotstar", + }, + { + title: "Amazon Prime", + filter: "/platform/amazon-prime-video", + }, +]; +exports.genres = []; diff --git a/dist/protonMovies/meta.js b/dist/protonMovies/meta.js index 5a61620..1873f1c 100644 --- a/dist/protonMovies/meta.js +++ b/dist/protonMovies/meta.js @@ -1 +1,102 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(o,l){function r(e){try{a(n.next(e))}catch(e){l(e)}}function s(e){try{a(n.throw(e))}catch(e){l(e)}}function a(e){var t;e.done?o(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(r,s)}a((n=n.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(e){return __awaiter(this,arguments,void 0,function*({link:e,providerContext:t}){var i,n,o,l,r;try{const{axios:s,cheerio:a,getBaseUrl:c}=t,d=yield c("protonMovies"),p=(yield s.get(`${d}${e}`)).data;const u=null===(r=null===(l=null===(o=null===(n=null===(i=a.load(p)('script:contains("decodeURIComponent")').text().split(" = "))||void 0===i?void 0:i[1])||void 0===n?void 0:n.split("protomovies"))||void 0===o?void 0:o[0])||void 0===l?void 0:l.trim())||void 0===r?void 0:r.slice(0,-1),v=JSON.parse(u).join("").replace(/\\"/g,'"').replace(/\\'/g,"'").replace(/\\n/g,"\n").replace(/\\t/g,"\t").replace(/\\r/g,"\r").replace(/"/g,'"').replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&"),f=a.load(v),m=f(".trending-text.fw-bold.texture-text.text-uppercase.my-0.fadeInLeft.animated.d-inline-block").text(),g=f("#thumbnail").attr("src"),x=e.includes("series")?"series":"movie",h=f(".col-12.iq-mb-30.animated.fadeIn").first().text()||f(".description-content").text(),y=f(".p-0.mt-2.list-inline.d-flex.flex-wrap.movie-tag").find("li").map((e,t)=>f(t).text()).slice(0,3).get(),b=[];if("movie"===x){const t=[];t.push({title:"Movie",link:d+e}),b.push({title:"Movie",directLinks:t})}else f("#episodes").children().map((e,t)=>{let i=[];f(t).find(".episode-block").map((e,t)=>{const n=d+f(t).find("a").attr("href")||"",o="Episode "+f(t).find(".episode-number").text().split("E")[1];i.push({title:o,link:n})}),b.push({title:"Season "+(e+1),directLinks:i})});return{image:g||"",imdbId:"",linkList:b,title:m||"",synopsis:h,tags:y,type:x}}catch(e){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b, _c, _d, _e, _f; + try { + const { axios, cheerio, getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("protonMovies"); + console.log("all", link); + const res = yield axios.get(`${baseUrl}${link}`); + const data = res.data; + function decodeHtml(encodedArray) { + // 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(/"/g, '"') + .replace(/</g, "<") + .replace(/>/g, ">") + .replace(/&/g, "&"); + return decoded; + } + const $$ = cheerio.load(data); + const htmlArray = (_f = (_e = (_d = (_c = (_b = $$('script:contains("decodeURIComponent")') + .text() + .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 + // console.log('protonGetInfo', htmlArray); + const html = decodeHtml(JSON.parse(htmlArray)); + // console.log('all', html); + const $ = cheerio.load(html); + const title = $(".trending-text.fw-bold.texture-text.text-uppercase.my-0.fadeInLeft.animated.d-inline-block").text(); + const image = $("#thumbnail").attr("src"); + const type = link.includes("series") ? "series" : "movie"; + const synopsis = $(".col-12.iq-mb-30.animated.fadeIn").first().text() || + $(".description-content").text(); + const tags = $(".p-0.mt-2.list-inline.d-flex.flex-wrap.movie-tag") + .find("li") + .map((i, el) => $(el).text()) + .slice(0, 3) + .get(); + const links = []; + if (type === "movie") { + const directLinks = []; + directLinks.push({ title: "Movie", link: baseUrl + link }); + links.push({ title: "Movie", directLinks: directLinks }); + } + else { + $("#episodes") + .children() + .map((i, element) => { + let directLinks = []; + $(element) + .find(".episode-block") + .map((j, ep) => { + const link = baseUrl + $(ep).find("a").attr("href") || ""; + const title = "Episode " + $(ep).find(".episode-number").text().split("E")[1]; + directLinks.push({ title, link }); + }); + links.push({ title: "Season " + (i + 1), directLinks: directLinks }); + }); + } + return { + image: image || "", + imdbId: "", + linkList: links, + title: title || "", + synopsis: synopsis, + tags: tags, + type: type, + }; + } + catch (err) { + console.error("prton", err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/protonMovies/posts.js b/dist/protonMovies/posts.js index f426463..a9c1900 100644 --- a/dist/protonMovies/posts.js +++ b/dist/protonMovies/posts.js @@ -1 +1,85 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,r,a){return new(r||(r=Promise))(function(s,o){function n(e){try{c(a.next(e))}catch(e){o(e)}}function i(e){try{c(a.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(n,i)}c((a=a.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(e){return __awaiter(this,arguments,void 0,function*({filter:e,page:t,signal:r,providerContext:a}){const{getBaseUrl:s,axios:o,cheerio:n}=a,i=yield s("protonMovies");return posts({url:`${i+e}/page/${t}/`,baseUrl:i,signal:r,axios:o,cheerio:n})})};exports.getPosts=getPosts;const getSearchPosts=function(e){return __awaiter(this,arguments,void 0,function*({searchQuery:e,page:t,signal:r,providerContext:a}){const{getBaseUrl:s,axios:o,cheerio:n}=a,i=yield s("protonMovies");return posts({url:`${i}/search/${e}/page/${t}/`,baseUrl:i,signal:r,axios:o,cheerio:n})})};function posts(e){return __awaiter(this,arguments,void 0,function*({url:e,baseUrl:t,signal:r,axios:a,cheerio:s}){try{const o=(yield a.get(e,{headers:{referer:t},signal:r})).data,n=/\[(?=.*?"

").replace(/&/g,"&"),l=s.load(c),g=[];return l(".col.mb-4").map((e,t)=>{const r=l(t).find("h5").text(),a=l(t).find("h5").find("a").attr("href"),s=l(t).find("img").attr("data-src")||l(t).find("img").attr("src")||"";r&&a&&s&&g.push({title:r,link:a,image:s})}),g}catch(e){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) { + const { getBaseUrl, axios, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("protonMovies"); + const url = `${baseUrl + filter}/page/${page}/`; + return posts({ url, baseUrl, signal, axios, cheerio }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) { + const { getBaseUrl, axios, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("protonMovies"); + const url = `${baseUrl}/search/${searchQuery}/page/${page}/`; + return posts({ url, baseUrl, signal, axios, cheerio }); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ url, baseUrl, signal, axios, cheerio, }) { + try { + function decodeHtml(encodedArray) { + // 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(/"/g, '"') + .replace(/</g, "<") + .replace(/>/g, ">") + .replace(/&/g, "&"); + return decoded; + } + const res = yield axios.get(url, { + headers: { + referer: baseUrl, + }, + signal, + }); + const data = res.data; + const regex = /\[(?=.*?"
{ + const title = $(element).find("h5").text(); + const link = $(element).find("h5").find("a").attr("href"); + const image = $(element).find("img").attr("data-src") || + $(element).find("img").attr("src") || + ""; + if (title && link && image) { + catalog.push({ + title: title, + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + console.error("protonGetPosts error ", err); + return []; + } + }); +} diff --git a/dist/protonMovies/stream.js b/dist/protonMovies/stream.js index 072d0b3..6f67f30 100644 --- a/dist/protonMovies/stream.js +++ b/dist/protonMovies/stream.js @@ -1 +1,171 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,o){return new(i||(i=Promise))(function(r,a){function n(t){try{l(o.next(t))}catch(t){a(t)}}function c(t){try{l(o.throw(t))}catch(t){a(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(n,c)}l((o=o.apply(t,e||[])).next())})};function LALLJLutmoZpvvbikjaWM(t){for(var e=new ArrayBuffer(2*t.length),i=new Uint8Array(e),o=0,r=t.length;o").replace(/&/g,"&"),v=u.load(g),y=[],b=null===(c=v('tr:contains("1080p")').find('button:contains("Info")').attr("id"))||void 0===c?void 0:c.split("-")[1];b&&y.push({id:b,quality:"1080p"});const A=null===(l=v('tr:contains("720p")').find('button:contains("Info")').attr("id"))||void 0===l?void 0:l.split("-")[1];A&&y.push({id:A,quality:"720p"});const j=null===(s=v('tr:contains("480p")').find('button:contains("Info")').attr("id"))||void 0===s?void 0:s.split("-")[1];j&&y.push({id:j,quality:"480p"});const x=t.split("/").slice(0,3).join("/"),k=[];return yield Promise.all(y.slice(0,2).map(t=>__awaiter(this,void 0,void 0,function*(){const e=new URLSearchParams;e.append("downloadid",t.id),e.append("token","ok");const i=(r=LALLJLutmoZpvvbikjaWM(`[hostname=${null==(o=x)?void 0:o.replace(/https?:\/\//,"").split("/")[0]}][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}]`),new Uint8Array(r).toString().replace(/2/g,"004").replace(/3/g,"005").replace(/7/g,"007").replace(/,0,0,0/g,""));var o,r;const a=getOrCreateUID(),n=yield fetch(`${x}/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=${t.id}&msg=${i}&uid=${a}&token=ok`,method:"POST"}),c=yield n.text();k.push({quality:t.quality,id:c})}))),yield Promise.all(k.map(t=>__awaiter(this,void 0,void 0,function*(){const i=yield d.post(`${x}/tmp/${t.id}`);if(i.data.ppd["gofile.io"]){const o=yield f(i.data.ppd["gofile.io"].link.split("/").pop());o.link&&e.push({link:o.link,server:"gofile "+t.quality,type:"mkv",headers:{referer:"https://gofile.io",connection:"keep-alive",contentType:"video/x-matroska",cookie:"accountToken="+o.token}})}}))),e}catch(t){return[]}})};exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +function LALLJLutmoZpvvbikjaWM(str) { + var buf = new ArrayBuffer(str.length * 2); + var bufView = new Uint8Array(buf); + for (var i = 0, strLen = str.length; i < strLen; i++) { + bufView[i] = str.charCodeAt(i); + } + return buf; +} +function getOrCreateUID() { + const uid = "uid_" + Date.now() + "_" + Math.random().toString(36).substr(2, 9); + return uid; +} +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b, _c, _d, _e, _f, _g, _h, _j; + const { axios, cheerio, commonHeaders: headers, extractors, } = providerContext; + const { gofileExtracter } = extractors; + function generateMessageToken(baseUrlL) { + const hostname = baseUrlL === null || baseUrlL === void 0 ? void 0 : baseUrlL.replace(/https?:\/\//, "").split("/")[0]; + console.log("generateMessageToken hostname", hostname); + 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 jRpeP = LALLJLutmoZpvvbikjaWM(NsmxUftCNibQ); + var jzKEwqEAcWFMNwHZnCCqJQ = new Uint8Array(jRpeP); + var kyMXQUxoFYuZIBlKvlHa = jzKEwqEAcWFMNwHZnCCqJQ.toString(); + var kyMXQUxoFYuZIBlKvlHa = kyMXQUxoFYuZIBlKvlHa.replace(/2/g, "004"); + var kyMXQUxoFYuZIBlKvlHa = kyMXQUxoFYuZIBlKvlHa.replace(/3/g, "005"); + var kyMXQUxoFYuZIBlKvlHa = kyMXQUxoFYuZIBlKvlHa.replace(/7/g, "007"); + var kyMXQUxoFYuZIBlKvlHa = kyMXQUxoFYuZIBlKvlHa.replace(/,0,0,0/g, ""); + return kyMXQUxoFYuZIBlKvlHa; + } + function decodeHtml(encodedArray) { + // 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(/"/g, '"') + .replace(/</g, "<") + .replace(/>/g, ">") + .replace(/&/g, "&"); + return decoded; + } + try { + const streamLinks = []; + const res = yield axios.get(link, { headers }); + const data = res.data; + // const regex = /\[(?=.*?"
__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; diff --git a/dist/providerContext.js b/dist/providerContext.js index f6309ae..5b6a8a9 100644 --- a/dist/providerContext.js +++ b/dist/providerContext.js @@ -1 +1,66 @@ -"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var a=Object.getOwnPropertyDescriptor(r,t);a&&!("get"in a?!r.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,a)}:function(e,r,t,o){void 0===o&&(o=t),e[o]=r[t]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),__importStar=this&&this.__importStar||function(){var e=function(r){return e=Object.getOwnPropertyNames||function(e){var r=[];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[r.length]=t);return r},e(r)};return function(r){if(r&&r.__esModule)return r;var t={};if(null!=r)for(var o=e(r),a=0;a{(null==i?void 0:i.season)<=0||(g.has(null==i?void 0:i.season)||g.set(null==i?void 0:i.season,[]),g.get(null==i?void 0:i.season).push({title:"Episode "+(null==i?void 0:i.episode),link:""}))});for(const[i,e]of g.entries())y.push({title:"Season "+i,directLinks:e})}else f.push({title:"Movie",link:i}),y.push({title:"Movie",directLinks:f});return Object.assign(Object.assign({},c),{linkList:y})}catch(i){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b, _c, _d, _e, _f, _g, _h; + try { + const { getBaseUrl, axios } = providerContext; + const res = yield axios.get(link); + const data = res.data; + 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 { + title: "", + synopsis: "", + image: "", + imdbId: (meta === null || meta === void 0 ? void 0 : meta.imdbId) || "", + type: (meta === null || meta === void 0 ? void 0 : meta.type) || "movie", + 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) { + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/ridoMovies/posts.js b/dist/ridoMovies/posts.js index 482bcd5..2fb59be 100644 --- a/dist/ridoMovies/posts.js +++ b/dist/ridoMovies/posts.js @@ -1 +1,79 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,o){return new(n||(n=Promise))(function(i,s){function a(t){try{c(o.next(t))}catch(t){s(t)}}function r(t){try{c(o.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(a,r)}c((o=o.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,signal:e,providerContext:n}){try{const o=[],i="https://cinemeta-catalogs.strem.io"+t,s=(yield n.axios.get(i,{headers:n.commonHeaders,signal:e})).data;return null==s||s.metas.map(t=>{const e=null==t?void 0:t.name,n=(null==t?void 0:t.imdb_id)||(null==t?void 0:t.id),i=null==t?void 0:t.type,s=null==t?void 0:t.poster;n&&o.push({title:e,link:`https://v3-cinemeta.strem.io/meta/${i}/${n}.json`,image:s})}),o}catch(t){return[]}})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:n,providerContext:o}){try{const{axios:i,commonHeaders:s}=o;if(e>1)return[];const a=[],r=`https://v3-cinemeta.strem.io/catalog/movie/top/search=${encodeURI(t)}.json`,c=(yield i.get(r,{headers:s,signal:n})).data;return null==c||c.metas.map(t=>{const e=(null==t?void 0:t.name)||"",n=(null==t?void 0:t.imdb_id)||(null==t?void 0:t.id),o=null==t?void 0:t.poster,i=null==t?void 0:t.type;n&&a.push({title:e,link:`https://v3-cinemeta.strem.io/meta/${i}/${n}.json`,image:o})}),a}catch(t){return[]}})};exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, signal, providerContext, }) { + try { + const catalog = []; + const url = "https://cinemeta-catalogs.strem.io" + filter; + console.log("allGetPostUrl", url); + const res = yield providerContext.axios.get(url, { + headers: providerContext.commonHeaders, + signal, + }); + const data = res.data; + data === null || data === void 0 ? void 0 : data.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 type = result === null || result === void 0 ? void 0 : result.type; + const image = result === null || result === void 0 ? void 0 : result.poster; + if (id) { + catalog.push({ + title: title, + link: `https://v3-cinemeta.strem.io/meta/${type}/${id}.json`, + image: image, + }); + } + }); + console.log("catalog", catalog.length); + return catalog; + } + catch (err) { + console.error("AutoEmbed error ", err); + return []; + } + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) { + try { + const { axios, commonHeaders: headers } = providerContext; + if (page > 1) { + return []; + } + const catalog = []; + const url2 = `https://v3-cinemeta.strem.io/catalog/movie/top/search=${encodeURI(searchQuery)}.json`; + const res2 = yield axios.get(url2, { headers, 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; diff --git a/dist/ridoMovies/stream.js b/dist/ridoMovies/stream.js index d749a7f..916304e 100644 --- a/dist/ridoMovies/stream.js +++ b/dist/ridoMovies/stream.js @@ -1 +1,71 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,a){return new(r||(r=Promise))(function(n,i){function o(t){try{c(a.next(t))}catch(t){i(t)}}function s(t){try{c(a.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,s)}c((a=a.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=t=>__awaiter(void 0,[t],void 0,function*({link:t,providerContext:e}){var r,a;try{const{cheerio:n,commonHeaders:i,axios:o}=e,s=JSON.parse(t),c=[],l=(null==s?void 0:s.baseUrl)+"/api/"+(null==s?void 0:s.slug),u=yield o.get(l,{headers:i}),d=(null===(a=null===(r=u.data.data)||void 0===r?void 0:r[0])||void 0===a?void 0:a.url).split('src="')[1].split('"')[0],p=yield o.get(d,{headers:Object.assign(Object.assign({},i),{Referer:null==s?void 0:s.baseUrl})}),v=n.load(p.data)('script:contains("eval")').html();if(!v)throw new Error("Unable to find script");const h=unpackJavaScript(v.trim());return c.push({link:h,server:"rido",type:"m3u8",headers:{Referer:d}}),c}catch(t){return[]}});function unpackJavaScript(t){const e=t.split("|aHR")[1].split("|")[0];var r;return atob((r="aHR"+e)+"=".repeat((4-r.length%4)%4))}exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = (_a) => __awaiter(void 0, [_a], void 0, function* ({ link: data, providerContext, }) { + var _b, _c; + try { + const { cheerio, commonHeaders: headers, axios } = providerContext; + const streamData = JSON.parse(data); + const streamLinks = []; + // const path = + // streamData?.type === 'movie' + // ? `/${streamData?.slug}` + // : `/${streamData?.slug}/season-${streamData?.season}/episode-${streamData?.episode}`; + // const url = streamData?.baseUrl + path; + // console.log('all', url); + // const res = await axios.get(url, {headers}); + // const postId = res.data.split('\\"postid\\":\\"')[1].split('\\"')[0]; + // console.log('rido post id', postId); + 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); + const res = yield axios.get(url, { headers }); + 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); + const iframeUrl = iframe.split('src="')[1].split('"')[0]; + console.log("rido iframeUrl", iframeUrl); + const iframeRes = yield axios.get(iframeUrl, { + headers: Object.assign(Object.assign({}, headers), { Referer: streamData === null || streamData === void 0 ? void 0 : streamData.baseUrl }), + }); + const $ = cheerio.load(iframeRes.data); + const script = $('script:contains("eval")').html(); + if (!script) { + throw new Error("Unable to find script"); + } + // console.log('rido script', script); + const srcUrl = unpackJavaScript(script.trim()); + console.log("rido srcUrl", srcUrl); + streamLinks.push({ + link: srcUrl, + server: "rido", + type: "m3u8", + headers: { + Referer: iframeUrl, + }, + }); + return streamLinks; + } + catch (e) { + console.log("rido get stream err", e); + return []; + } +}); +exports.getStream = getStream; +function unpackJavaScript(packedCode) { + const encodedString = packedCode.split("|aHR")[1].split("|")[0]; + const base64Url = "aHR" + encodedString; + function addPadding(base64) { + return base64 + "=".repeat((4 - (base64.length % 4)) % 4); + } + console.log("rido base64Url", base64Url); + const unpackedCode = atob(addPadding(base64Url)); + return unpackedCode; +} diff --git a/dist/ringz/catalog.js b/dist/ringz/catalog.js index 0583029..9bc97ce 100644 --- a/dist/ringz/catalog.js +++ b/dist/ringz/catalog.js @@ -1 +1,18 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Movies",filter:"MOVIES"},{title:"TV Shows",filter:"SERIES"},{title:"Anime",filter:"ANIME"}],exports.genres=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Movies", + filter: "MOVIES", + }, + { + title: "TV Shows", + filter: "SERIES", + }, + { + title: "Anime", + filter: "ANIME", + }, +]; +exports.genres = []; diff --git a/dist/ringz/meta.js b/dist/ringz/meta.js index ab2b287..f848322 100644 --- a/dist/ringz/meta.js +++ b/dist/ringz/meta.js @@ -1 +1,95 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,i,t,n){return new(t||(t=Promise))(function(r,l){function o(e){try{u(n.next(e))}catch(e){l(e)}}function s(e){try{u(n.throw(e))}catch(e){l(e)}}function u(e){var i;e.done?r(e.value):(i=e.value,i instanceof t?i:new t(function(e){e(i)})).then(o,s)}u((n=n.apply(e,i||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(e){return __awaiter(this,arguments,void 0,function*({link:e}){var i,t;try{const n=JSON.parse(e),r=(null==n?void 0:n.kn)||(null==n?void 0:n.mn),l=(null==n?void 0:n.IH)||(null==n?void 0:n.IV),o=null==n?void 0:n.gn.split(",").slice(0,3).map(e=>e.trim()),s="webSeries"===(null==n?void 0:n.cg)?"series":"movie",u=[];if("webSeries"===(null==n?void 0:n.cg))null===(i=["1","2","3","4"])||void 0===i||i.forEach(e=>{var i;const t=[];"object"==typeof(null==n?void 0:n["eServer"+e])&&(null===(i=null==Object?void 0:Object.keys(null==n?void 0:n["eServer"+e]))||void 0===i?void 0:i.length)>0&&(Object.keys(null==n?void 0:n["eServer"+e]).forEach(i=>{t.push({title:"Episode "+i,link:JSON.stringify({url:null==n?void 0:n["eServer"+e][i],server:"Server "+e})})}),u.push({title:(null==n?void 0:n.pn)+" (Server "+e+")",directLinks:t}))});else{const e=[];null===(t=["1","2","3","4"])||void 0===t||t.forEach(i=>{(null==n?void 0:n["s"+i])&&e.push({title:"Server "+i+" (HD)",link:JSON.stringify({url:null==n?void 0:n.s1,server:"Server "+i})}),(null==n?void 0:n["4s"+i])&&e.push({title:"Server "+i+" (480p)",link:JSON.stringify({url:null==n?void 0:n["4s"+i],server:"Server "+i})})}),u.push({title:null==n?void 0:n.pn,directLinks:e})}return{title:r,image:l,imdbId:"",synopsis:"",type:s,linkList:u,tags:o}}catch(e){return{title:"",image:"",imdbId:"",synopsis:"",type:"movie",linkList:[],tags:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link: data, }) { + var _b, _c; + try { + const dataJson = JSON.parse(data); + const title = (dataJson === null || dataJson === void 0 ? void 0 : dataJson.kn) || (dataJson === null || dataJson === void 0 ? void 0 : dataJson.mn); + const image = (dataJson === null || dataJson === void 0 ? void 0 : dataJson.IH) || (dataJson === null || dataJson === void 0 ? void 0 : dataJson.IV); + const tags = dataJson === null || dataJson === void 0 ? void 0 : dataJson.gn.split(",").slice(0, 3).map((tag) => tag.trim()); + const type = (dataJson === null || dataJson === void 0 ? void 0 : dataJson.cg) === "webSeries" ? "series" : "movie"; + const linkList = []; + if ((dataJson === null || dataJson === void 0 ? void 0 : dataJson.cg) === "webSeries") { + (_b = ["1", "2", "3", "4"]) === null || _b === void 0 ? void 0 : _b.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 = []; + (_c = ["1", "2", "3", "4"]) === null || _c === void 0 ? void 0 : _c.forEach((item) => { + if (dataJson === null || dataJson === void 0 ? void 0 : dataJson["s" + item]) { + directLinks.push({ + title: "Server " + item + " (HD)", + link: JSON.stringify({ + url: dataJson === null || dataJson === void 0 ? void 0 : dataJson.s1, + server: "Server " + item, + }), + }); + } + if (dataJson === null || dataJson === void 0 ? void 0 : dataJson["4s" + item]) { + directLinks.push({ + 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, + }; + } + catch (err) { + return { + title: "", + image: "", + imdbId: "", + synopsis: "", + type: "movie", + linkList: [], + tags: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/ringz/posts.js b/dist/ringz/posts.js index 8b92d95..89781dd 100644 --- a/dist/ringz/posts.js +++ b/dist/ringz/posts.js @@ -1 +1,168 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))(function(s,o){function r(t){try{c(i.next(t))}catch(t){o(t)}}function a(t){try{c(i.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?s(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(r,a)}c((i=i.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ringzData=exports.headers=exports.getSearchPosts=exports.getPosts=void 0,exports.getRingzMovies=getRingzMovies,exports.getRingzShows=getRingzShows,exports.getRingzAnime=getRingzAnime,exports.getRingzAdult=getRingzAdult;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,signal:e,providerContext:n}){return posts({filter:t,signal:e,providerContext:n})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e}){if(e>1)return[];try{const e=[],n=[getRingzMovies(),getRingzShows(),getRingzAnime()];return(yield Promise.all(n)).map(n=>{const i=function(t,e){const n=e.toLowerCase();return t.filter(t=>t.mn.toLowerCase().includes(n))}(n,t);i.map(t=>{const n=(null==t?void 0:t.kn)||(null==t?void 0:t.mn),i=JSON.stringify(t),s=null==t?void 0:t.IV;n&&i&&e.push({title:n,link:i,image:s})})}),e}catch(t){return[]}})};function posts(t){return __awaiter(this,arguments,void 0,function*({filter:t}){try{let e;"MOVIES"===t&&(e=getRingzMovies()),"SERIES"===t&&(e=getRingzShows()),"ANIME"===t&&(e=getRingzAnime());const n=yield e,i=[];return n.map(t=>{const e=(null==t?void 0:t.kn)||(null==t?void 0:t.mn),n=JSON.stringify(t),s=null==t?void 0:t.IV;e&&n&&i.push({title:e,link:n,image:s})}),i}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts,exports.headers={"cf-access-client-id":"833049b087acf6e787cedfd85d1ccdb8.access","cf-access-client-secret":"02db296a961d7513c3102d7785df4113eff036b2d57d060ffcc2ba3ba820c6aa"};const BASE_URL="https://privatereporz.pages.dev";function getRingzMovies(){return __awaiter(this,void 0,void 0,function*(){try{const t=yield fetch(`${BASE_URL}/test.json`,{headers:Object.assign({},exports.headers)});return(yield t.json()).AllMovieDataList}catch(t){}})}function getRingzShows(){return __awaiter(this,void 0,void 0,function*(){try{const t=yield fetch(`${BASE_URL}/srs.json`,{headers:Object.assign({},exports.headers)});return(yield t.json()).webSeriesDataList}catch(t){}})}function getRingzAnime(){return __awaiter(this,void 0,void 0,function*(){try{const t=yield fetch(`${BASE_URL}/anime.json`,{headers:Object.assign({},exports.headers)});return(yield t.json()).webSeriesDataList}catch(t){}})}function getRingzAdult(){return __awaiter(this,void 0,void 0,function*(){try{const t=yield fetch(`${BASE_URL}/desihub.json`,{headers:Object.assign({},exports.headers)});return(yield t.json()).webSeriesDataList}catch(t){}})}exports.ringzData={getRingzMovies:getRingzMovies,getRingzShows:getRingzShows,getRingzAnime:getRingzAnime,getRingzAdult:getRingzAdult}; \ No newline at end of file +"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 }); +exports.ringzData = exports.headers = exports.getSearchPosts = exports.getPosts = void 0; +exports.getRingzMovies = getRingzMovies; +exports.getRingzShows = getRingzShows; +exports.getRingzAnime = getRingzAnime; +exports.getRingzAdult = getRingzAdult; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, signal, providerContext, }) { + return posts({ filter, signal, providerContext }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, // providerContext, + }) { + if (page > 1) + return []; + function searchData(data, query) { + // Convert query to lowercase for case-insensitive search + const searchQuery = query.toLowerCase(); + // Filter movies based on movie name (mn) + return data.filter((movie) => { + // Convert movie name to lowercase and check if it includes the search query + const movieName = movie.mn.toLowerCase(); + return movieName.includes(searchQuery); + }); + } + try { + const catalog = []; + const promises = [getRingzMovies(), getRingzShows(), getRingzAnime()]; + const responses = yield Promise.all(promises); + responses.map((response) => { + const searchResults = searchData(response, searchQuery); + 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 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.headers = { + "cf-access-client-id": "833049b087acf6e787cedfd85d1ccdb8.access", + "cf-access-client-secret": "02db296a961d7513c3102d7785df4113eff036b2d57d060ffcc2ba3ba820c6aa", +}; +const BASE_URL = "https://privatereporz.pages.dev"; +function getRingzMovies() { + return __awaiter(this, void 0, void 0, function* () { + try { + const response = yield fetch(`${BASE_URL}/test.json`, { + headers: Object.assign({}, exports.headers), + }); + const data = yield response.json(); + return data.AllMovieDataList; + } + catch (error) { + console.error(error); + } + }); +} +function getRingzShows() { + return __awaiter(this, void 0, void 0, function* () { + try { + const response = yield fetch(`${BASE_URL}/srs.json`, { + headers: Object.assign({}, exports.headers), + }); + const data = yield response.json(); + return data.webSeriesDataList; + } + catch (error) { + console.error(error); + } + }); +} +function getRingzAnime() { + return __awaiter(this, void 0, void 0, function* () { + try { + const response = yield fetch(`${BASE_URL}/anime.json`, { + headers: Object.assign({}, exports.headers), + }); + const data = yield response.json(); + return data.webSeriesDataList; + } + catch (error) { + console.error(error); + } + }); +} +function getRingzAdult() { + return __awaiter(this, void 0, void 0, function* () { + try { + const response = yield fetch(`${BASE_URL}/desihub.json`, { + headers: Object.assign({}, exports.headers), + }); + const data = yield response.json(); + return data.webSeriesDataList; + } + catch (error) { + console.error(error); + } + }); +} +exports.ringzData = { + getRingzMovies, + getRingzShows, + getRingzAnime, + getRingzAdult, +}; diff --git a/dist/ringz/stream.js b/dist/ringz/stream.js index c2f313f..eebb36f 100644 --- a/dist/ringz/stream.js +++ b/dist/ringz/stream.js @@ -1 +1,25 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))(function(i,o){function a(t){try{c(r.next(t))}catch(t){o(t)}}function u(t){try{c(r.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(a,u)}c((r=r.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=function(t){return __awaiter(this,arguments,void 0,function*({link:t}){const e=[],n=JSON.parse(t);return e.push({link:n.url,server:n.server,type:"mkv"}),e})};exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link: data, }) { + const streamLinks = []; + const dataJson = JSON.parse(data); + streamLinks.push({ + link: dataJson.url, + server: dataJson.server, + type: "mkv", + }); + return streamLinks; + }); +}; +exports.getStream = getStream; diff --git a/dist/showbox/catalog.js b/dist/showbox/catalog.js index 56794f4..a6b76ab 100644 --- a/dist/showbox/catalog.js +++ b/dist/showbox/catalog.js @@ -1 +1,18 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Home",filter:""},{title:"Movies",filter:"/movie"},{title:"TV Shows",filter:"/tv"}],exports.genres=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Home", + filter: "", + }, + { + title: "Movies", + filter: "/movie", + }, + { + title: "TV Shows", + filter: "/tv", + }, +]; +exports.genres = []; diff --git a/dist/showbox/episodes.js b/dist/showbox/episodes.js index 1e77c22..868273f 100644 --- a/dist/showbox/episodes.js +++ b/dist/showbox/episodes.js @@ -1 +1,54 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(s,o){function r(t){try{c(n.next(t))}catch(t){o(t)}}function a(t){try{c(n.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?s(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(r,a)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getEpisodes=void 0;const getEpisodes=function(t){return __awaiter(this,arguments,void 0,function*({url:t,providerContext:e}){const{axios:i}=e;try{const[e,n]=t.split("&"),s=n?`https://www.febbox.com/file/file_share_list?share_key=${e}&pwd=&parent_id=${n}&is_html=0`:`https://www.febbox.com/file/file_share_list?share_key=${e}&pwd=&is_html=0`,o=yield i.get(s),r=o.data.data.file_list,a=[];return null==r||r.map(t=>{const i=formatEpisodeName(t.file_name),n=null==t?void 0:t.fid;!t.is_dir&&i&&n&&a.push({title:i,link:`${e}&${n}`})}),a}catch(t){return[]}})};function formatEpisodeName(t){const e=t.match(/[sS](\d+)\s*[eE](\d+)/);if(e){return`Season${e[1].padStart(2,"0")} Episode${e[2].padStart(2,"0")}`}return t}exports.getEpisodes=getEpisodes; \ No newline at end of file +"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 }); +exports.getEpisodes = void 0; +const getEpisodes = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ url: id, providerContext, }) { + const { axios } = providerContext; + try { + const [fileId, febboxId] = id.split("&"); + const febLink = febboxId + ? `https://www.febbox.com/file/file_share_list?share_key=${fileId}&pwd=&parent_id=${febboxId}&is_html=0` + : `https://www.febbox.com/file/file_share_list?share_key=${fileId}&pwd=&is_html=0`; + const res = yield axios.get(febLink); + const data = res.data; + const fileList = data.data.file_list; + const episodeLinks = []; + fileList === null || fileList === void 0 ? void 0 : fileList.map((file) => { + const fileName = formatEpisodeName(file.file_name); + const epId = file === null || file === void 0 ? void 0 : file.fid; + if (!file.is_dir && fileName && epId) { + episodeLinks.push({ + title: fileName, + link: `${fileId}&${epId}`, + }); + } + }); + return episodeLinks; + } + catch (err) { + return []; + } + }); +}; +exports.getEpisodes = getEpisodes; +function formatEpisodeName(title) { + const regex = /[sS](\d+)\s*[eE](\d+)/; + const match = title.match(regex); + if (match) { + const season = match[1].padStart(2, "0"); + const episode = match[2].padStart(2, "0"); + return `Season${season} Episode${episode}`; + } + else { + return title; + } +} diff --git a/dist/showbox/meta.js b/dist/showbox/meta.js index 3cd8be7..36dca77 100644 --- a/dist/showbox/meta.js +++ b/dist/showbox/meta.js @@ -1 +1,76 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(i,t,e,n){return new(e||(e=Promise))(function(o,l){function a(i){try{s(n.next(i))}catch(i){l(i)}}function d(i){try{s(n.throw(i))}catch(i){l(i)}}function s(i){var t;i.done?o(i.value):(t=i.value,t instanceof e?t:new e(function(i){i(t)})).then(a,d)}s((n=n.apply(i,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(i){return __awaiter(this,arguments,void 0,function*({link:i,providerContext:t}){var e,n,o,l,a,d,s,r,v;try{const{axios:u,cheerio:c,getBaseUrl:p}=t,f=(yield p("showbox"))+i,h=(yield u.get(f)).data,_=c.load(h),g=f.includes("tv")?"series":"movie",m="",y=_(".heading-name").text(),x=(null===(n=null===(e=_(".btn-imdb").text())||void 0===e?void 0:e.match(/\d+(\.\d+)?/g))||void 0===n?void 0:n[0])||"",w=(null===(l=null===(o=_(".cover_follow").attr("style"))||void 0===o?void 0:o.split("url(")[1])||void 0===l?void 0:l.split(")")[0])||"",$=null===(d=null===(a=_(".description").text())||void 0===a?void 0:a.replace(/[\n\t]/g,""))||void 0===d?void 0:d.trim(),b=null===(r=null===(s=_(".heading-name").find("a").attr("href"))||void 0===s?void 0:s.split("/"))||void 0===r?void 0:r.pop(),k=`${f.split("/").slice(0,3).join("/")}/index/share_link?id=${b}&type=${"movie"===g?"1":"2"}`,M=yield u.get(k),L=M.data.data.link.split("/").pop(),j=`https://www.febbox.com/file/file_share_list?share_key=${L}&is_html=0`,I=(yield u.get(j)).data,P=null===(v=null==I?void 0:I.data)||void 0===v?void 0:v.file_list,z=[];return P&&P.map(i=>{const t=`${i.file_name} (${i.file_size})`,e=i.fid;z.push({title:t,episodesLink:i.is_dir?`${L}&${e}`:`${L}&`})}),{title:y,rating:x,synopsis:$,image:w,imdbId:m,type:g,linkList:z}}catch(i){return{title:"",rating:"",synopsis:"",image:"",imdbId:"",type:"",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b, _c, _d, _e, _f, _g, _h, _j, _k; + try { + const { axios, cheerio, getBaseUrl } = providerContext; + const baseUrlShowbox = yield getBaseUrl("showbox"); + const url = baseUrlShowbox + link; + const res = yield axios.get(url); + const data = res.data; + const $ = cheerio.load(data); + const type = url.includes("tv") ? "series" : "movie"; + const imdbId = ""; + const title = $(".heading-name").text(); + const rating = ((_c = (_b = $(".btn-imdb") + .text()) === null || _b === void 0 ? void 0 : _b.match(/\d+(\.\d+)?/g)) === null || _c === void 0 ? void 0 : _c[0]) || ""; + 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]) || ""; + const synopsis = (_g = (_f = $(".description") + .text()) === null || _f === void 0 ? void 0 : _f.replace(/[\n\t]/g, "")) === null || _g === void 0 ? void 0 : _g.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 baseUrl = url.split("/").slice(0, 3).join("/"); + const indexUrl = `${baseUrl}/index/share_link?id=${febID}&type=${type === "movie" ? "1" : "2"}`; + const indexRes = yield axios.get(indexUrl); + const indexData = indexRes.data; + const febKey = indexData.data.link.split("/").pop(); + const febLink = `https://www.febbox.com/file/file_share_list?share_key=${febKey}&is_html=0`; + const febRes = yield axios.get(febLink); + 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 links = []; + if (fileList) { + fileList.map((file) => { + const fileName = `${file.file_name} (${file.file_size})`; + const fileId = file.fid; + links.push({ + title: fileName, + episodesLink: file.is_dir ? `${febKey}&${fileId}` : `${febKey}&`, + }); + }); + } + return { + title, + rating, + synopsis, + image, + imdbId, + type, + linkList: links, + }; + } + catch (err) { + console.error("Error fetching metadata:", err); + return { + title: "", + rating: "", + synopsis: "", + image: "", + imdbId: "", + type: "", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/showbox/posts.js b/dist/showbox/posts.js index 1b1b8c0..71f82e1 100644 --- a/dist/showbox/posts.js +++ b/dist/showbox/posts.js @@ -1 +1,62 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,o){return new(r||(r=Promise))(function(i,s){function n(t){try{c(o.next(t))}catch(t){s(t)}}function a(t){try{c(o.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(n,a)}c((o=o.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,signal:r,providerContext:o}){const{getBaseUrl:i,axios:s,cheerio:n}=o,a=yield i("showbox");return posts({url:`${a+t}?page=${e}/`,signal:r,baseUrl:a,axios:s,cheerio:n})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:r,providerContext:o}){const{getBaseUrl:i,axios:s,cheerio:n}=o,a=yield i("showbox");return posts({url:`${a}/search?keyword=${t}&page=${e}`,signal:r,baseUrl:a,axios:s,cheerio:n})})};function posts(t){return __awaiter(this,arguments,void 0,function*({url:t,signal:e,axios:r,cheerio:o}){try{const i=(yield r.get(t,{signal:e})).data,s=o.load(i),n=[];return s(".movie-item,.flw-item").map((t,e)=>{const r=s(e).find(".film-name").text().trim(),o=s(e).find("a").attr("href"),i=s(e).find("img").attr("src");r&&o&&i&&n.push({title:r,link:o,image:i})}),n}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, + // providerValue, + signal, providerContext, }) { + const { getBaseUrl, axios, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("showbox"); + const url = `${baseUrl + filter}?page=${page}/`; + return posts({ url, signal, baseUrl, axios, cheerio }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, + // providerValue, + signal, providerContext, }) { + const { getBaseUrl, axios, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("showbox"); + const url = `${baseUrl}/search?keyword=${searchQuery}&page=${page}`; + return posts({ url, signal, baseUrl, axios, cheerio }); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ url, signal, + // baseUrl, + axios, cheerio, }) { + try { + const res = yield axios.get(url, { signal }); + const data = res.data; + const $ = cheerio.load(data); + const catalog = []; + $(".movie-item,.flw-item").map((i, element) => { + const title = $(element).find(".film-name").text().trim(); + const link = $(element).find("a").attr("href"); + const image = $(element).find("img").attr("src"); + if (title && link && image) { + catalog.push({ + title: title, + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + return []; + } + }); +} diff --git a/dist/showbox/stream.js b/dist/showbox/stream.js index ff8a041..d7f2258 100644 --- a/dist/showbox/stream.js +++ b/dist/showbox/stream.js @@ -1 +1,47 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))(function(r,a){function o(t){try{s(i.next(t))}catch(t){a(t)}}function c(t){try{s(i.throw(t))}catch(t){a(t)}}function s(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(o,c)}s((i=i.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=function(t){return __awaiter(this,arguments,void 0,function*({link:t,signal:e,providerContext:n}){try{const{axios:i,cheerio:r}=n,a=[],[,o]=t.split("&"),c=`https://febbox.vercel.app/api/video-quality?fid=${o}`,s=(yield i.get(c,{signal:e})).data,u=r.load(s.html);return u(".file_quality").each((t,e)=>{const n=u(e).find("p.name").text()+" - "+u(e).find("p.size").text()+" - "+u(e).find("p.speed").text(),i=u(e).attr("data-url");i&&a.push({server:n,type:"mkv",link:i})}),a}catch(t){return[]}})};exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link: id, + // type, + signal, providerContext, }) { + try { + const { axios, cheerio } = providerContext; + const stream = []; + const [, epId] = id.split("&"); + const url = `https://febbox.vercel.app/api/video-quality?fid=${epId}`; + const res = yield axios.get(url, { signal }); + const data = res.data; + const $ = cheerio.load(data.html); + $(".file_quality").each((i, el) => { + const server = $(el).find("p.name").text() + + " - " + + $(el).find("p.size").text() + + " - " + + $(el).find("p.speed").text(); + const link = $(el).attr("data-url"); + if (link) { + stream.push({ + server: server, + type: "mkv", + link: link, + }); + } + }); + return stream; + } + catch (err) { + return []; + } + }); +}; +exports.getStream = getStream; diff --git a/dist/superVideoExtractor.js b/dist/superVideoExtractor.js index b446adc..79f0660 100644 --- a/dist/superVideoExtractor.js +++ b/dist/superVideoExtractor.js @@ -1 +1,50 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,r){return new(i||(i=Promise))(function(n,o){function a(t){try{u(r.next(t))}catch(t){o(t)}}function c(t){try{u(r.throw(t))}catch(t){o(t)}}function u(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(a,c)}u((r=r.apply(t,e||[])).next())})};function superVideoExtractor(t){return __awaiter(this,void 0,void 0,function*(){var e,i;try{var r=/eval\(function\((.*?)\)\{.*?return p\}.*?\('(.*?)'\.split/.exec(t);let a="";if(r){var n=r[2];a=null===(e=n.split("',36,"))||void 0===e?void 0:e[0].trim();let t=36,i=n.split("',36,")[1].slice(2).split("|").length,c=n.split("',36,")[1].slice(2).split("|");for(;i--;)if(c[i]){var o=new RegExp("\\b"+i.toString(t)+"\\b","g");a=a.replace(o,c[i])}}return(null===(i=null==a?void 0:a.match(/file:\s*"([^"]+\.m3u8[^"]*)"/))||void 0===i?void 0:i[1])||""}catch(t){return""}})}Object.defineProperty(exports,"__esModule",{value:!0}),exports.superVideoExtractor=superVideoExtractor; \ No newline at end of file +"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 }); +exports.superVideoExtractor = superVideoExtractor; +function superVideoExtractor(data) { + return __awaiter(this, void 0, void 0, function* () { + var _a, _b; + try { + // Step 1: Extract the function parameters and the encoded string + var functionRegex = /eval\(function\((.*?)\)\{.*?return p\}.*?\('(.*?)'\.split/; + var match = functionRegex.exec(data); + let p = ''; + if (match) { + // var params = match[1].split(',').map(param => param.trim()); + var encodedString = match[2]; + // console.log('Parameters:', params); + // console.log('Encoded String:', encodedString.split("',36,")[0], '🔥🔥'); + p = (_a = encodedString.split("',36,")) === null || _a === void 0 ? void 0 : _a[0].trim(); + let a = 36; + 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); + } + 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 || ''; + } + catch (err) { + console.error('SuperVideoExtractor Error:', err); + return ''; + } + }); +} diff --git a/dist/tokyoInsider/catalog.js b/dist/tokyoInsider/catalog.js index 4281661..9d02423 100644 --- a/dist/tokyoInsider/catalog.js +++ b/dist/tokyoInsider/catalog.js @@ -1 +1,14 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Top Anime",filter:"anime/search?r=5"},{title:"Popular Anime",filter:"anime/"}],exports.genres=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Top Anime", + filter: "anime/search?r=5", + }, + { + title: "Popular Anime", + filter: "anime/", + }, +]; +exports.genres = []; diff --git a/dist/tokyoInsider/meta.js b/dist/tokyoInsider/meta.js index f873e09..99f1bd9 100644 --- a/dist/tokyoInsider/meta.js +++ b/dist/tokyoInsider/meta.js @@ -1 +1,68 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(r,a){function s(t){try{c(n.next(t))}catch(t){a(t)}}function o(t){try{c(n.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(s,o)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){try{const{cheerio:i}=e,n=t,r=yield fetch(n),a=yield r.text(),s=i.load(a),o={title:s('.c_h2:contains("Title(s):")').text().replace("Title(s):","").trim().split("\n")[0],synopsis:s('.c_h2b:contains("Summary:"),.c_h2:contains("Summary:")').text().replace("Summary:","").trim(),image:s(".a_img").attr("src")||"",imdbId:"",type:"series"},c=[];return s(".episode").map((t,e)=>{const i="https://www.tokyoinsider.com"+s(e).find("a").attr("href")||s(".download-link").attr("href");let n=s(e).find("a").find("em").text()+" "+s(e).find("a").find("strong").text();n.trim()||(n=s(".download-link").text()),i&&n.trim()&&c.push({title:n,link:i})}),Object.assign(Object.assign({},o),{linkList:[{title:o.title,directLinks:c}]})}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"series",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + try { + const { cheerio } = providerContext; + const url = link; + const res = yield fetch(url); + const data = yield res.text(); + const $ = cheerio.load(data); + const meta = { + title: $('.c_h2:contains("Title(s):")') + .text() + .replace("Title(s):", "") + .trim() + .split("\n")[0], + synopsis: $('.c_h2b:contains("Summary:"),.c_h2:contains("Summary:")') + .text() + .replace("Summary:", "") + .trim(), + image: $(".a_img").attr("src") || "", + imdbId: "", + type: "series", + }; + const episodesList = []; + $(".episode").map((i, element) => { + const link = "https://www.tokyoinsider.com" + $(element).find("a").attr("href") || + $(".download-link").attr("href"); + let title = $(element).find("a").find("em").text() + + " " + + $(element).find("a").find("strong").text(); + if (!title.trim()) { + title = $(".download-link").text(); + } + if (link && title.trim()) { + episodesList.push({ title, link }); + } + }); + return Object.assign(Object.assign({}, meta), { linkList: [ + { + title: meta.title, + directLinks: episodesList, + }, + ] }); + } + catch (err) { + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "series", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/tokyoInsider/posts.js b/dist/tokyoInsider/posts.js index a17c306..05a7278 100644 --- a/dist/tokyoInsider/posts.js +++ b/dist/tokyoInsider/posts.js @@ -1 +1,65 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,i){return new(r||(r=Promise))(function(s,o){function n(t){try{c(i.next(t))}catch(t){o(t)}}function a(t){try{c(i.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?s(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(n,a)}c((i=i.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,signal:r,providerContext:i}){const{getBaseUrl:s,axios:o,cheerio:n}=i,a=yield s("tokyoinsider");return posts({baseURL:a,url:`${a}/${t}&start=${e<2?0:20*(e-1)}`,signal:r,axios:o,cheerio:n})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:r,providerContext:i}){const{getBaseUrl:s,axios:o,cheerio:n}=i,a=yield s("tokyoinsider");return posts({baseURL:a,url:`${a}/anime/search?k=${t}&start=${e<2?0:20*(e-1)}`,signal:r,axios:o,cheerio:n})})};function posts(t){return __awaiter(this,arguments,void 0,function*({baseURL:t,url:e,signal:r,axios:i,cheerio:s}){try{const o=(yield i.get(e,{signal:r})).data,n=s.load(o),a=[];return n('td.c_h2[width="40"]').map((e,r)=>{var i;const s=null===(i=n(r).find(".a_img").attr("src"))||void 0===i?void 0:i.replace("small","default"),o=n(r).find("a").attr("title"),c=t+n(r).find("a").attr("href");o&&c&&s&&a.push({title:o,link:c,image:s})}),a}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, + // providerValue, + signal, providerContext, }) { + const { getBaseUrl, axios, cheerio } = providerContext; + const baseURL = yield getBaseUrl("tokyoinsider"); + const start = page < 2 ? 0 : (page - 1) * 20; + const url = `${baseURL}/${filter}&start=${start}`; + return posts({ baseURL, url, signal, axios, cheerio }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, + // providerValue, + signal, providerContext, }) { + const { getBaseUrl, axios, cheerio } = providerContext; + const baseURL = yield getBaseUrl("tokyoinsider"); + const start = page < 2 ? 0 : (page - 1) * 20; + const url = `${baseURL}/anime/search?k=${searchQuery}&start=${start}`; + return posts({ baseURL, url, signal, axios, cheerio }); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ baseURL, url, signal, axios, cheerio, }) { + try { + const res = yield axios.get(url, { signal }); + const data = res.data; + const $ = cheerio.load(data); + const catalog = []; + $('td.c_h2[width="40"]').map((i, element) => { + var _a; + const image = (_a = $(element) + .find(".a_img") + .attr("src")) === null || _a === void 0 ? void 0 : _a.replace("small", "default"); + const title = $(element).find("a").attr("title"); + const link = baseURL + $(element).find("a").attr("href"); + if (title && link && image) { + catalog.push({ + title: title, + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + return []; + } + }); +} diff --git a/dist/tokyoInsider/stream.js b/dist/tokyoInsider/stream.js index 26eb42f..bed2669 100644 --- a/dist/tokyoInsider/stream.js +++ b/dist/tokyoInsider/stream.js @@ -1 +1,41 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))(function(i,o){function a(t){try{s(r.next(t))}catch(t){o(t)}}function c(t){try{s(r.throw(t))}catch(t){o(t)}}function s(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(a,c)}s((r=r.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){try{const{cheerio:n}=e,r=t,i=yield fetch(r),o=yield i.text(),a=n.load(o),c=[];return a(".c_h1,.c_h2").map((t,e)=>{a(e).find("span").remove();const n=a(e).find("a").text()||"",r=a(e).find("a").attr("href")||"";n&&r.includes("media")&&c.push({server:n,link:r,type:r.split(".").pop()||"mkv"})}),c}catch(t){return[]}})};exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + try { + const { cheerio } = providerContext; + const url = link; + const res = yield fetch(url); + const data = yield res.text(); + const $ = cheerio.load(data); + const streamLinks = []; + $(".c_h1,.c_h2").map((i, element) => { + $(element).find("span").remove(); + const title = $(element).find("a").text() || ""; + const link = $(element).find("a").attr("href") || ""; + if (title && link.includes("media")) { + streamLinks.push({ + server: title, + link, + type: link.split(".").pop() || "mkv", + }); + } + }); + return streamLinks; + } + catch (err) { + return []; + } + }); +}; +exports.getStream = getStream; diff --git a/dist/topmovies/catalog.js b/dist/topmovies/catalog.js index a92511c..845bab8 100644 --- a/dist/topmovies/catalog.js +++ b/dist/topmovies/catalog.js @@ -1 +1,87 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Latest",filter:""},{title:"Netflix",filter:"/web-series/tv-shows-by-network/netflix"},{title:"Hotstar",filter:"/web-series/tv-shows-by-network/hotstar"},{title:"Amazon Prime",filter:"/web-series/tv-shows-by-network/amazon-prime-video"}],exports.genres=[{title:"Apple TV+",filter:"/ott/apple-tv"},{title:"Disney+",filter:"/ott/disney-plus"},{title:"Hulu",filter:"/ott/hulu"},{title:"Crunchyroll",filter:"/ott/crunchyroll"},{title:"Action",filter:"/movies-by-genre/action/"},{title:"Adventure",filter:"/movies-by-genre/adventure/"},{title:"Animation",filter:"/movies-by-genre/animated/"},{title:"Comedy",filter:"/movies-by-genre/comedy/"},{title:"Crime",filter:"/movies-by-genre/crime/"},{title:"Documentary",filter:"/movies-by-genre/documentary/"},{title:"Fantasy",filter:"/movies-by-genre/fantasy/"},{title:"Horror",filter:"/movies-by-genre/horror/"},{title:"Mystery",filter:"/movies-by-genre/mystery/"},{title:"Romance",filter:"/movies-by-genre/romance/"},{title:"Thriller",filter:"/movies-by-genre/thriller/"},{title:"Sci-Fi",filter:"/movies-by-genre/sci-fi/"}]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Latest", + filter: "", + }, + { + title: "Netflix", + filter: "/web-series/tv-shows-by-network/netflix", + }, + { + title: "Hotstar", + filter: "/web-series/tv-shows-by-network/hotstar", + }, + { + title: "Amazon Prime", + filter: "/web-series/tv-shows-by-network/amazon-prime-video", + }, +]; +exports.genres = [ + { + title: "Apple TV+", + filter: "/ott/apple-tv", + }, + { + title: "Disney+", + filter: "/ott/disney-plus", + }, + { + title: "Hulu", + filter: "/ott/hulu", + }, + { + title: "Crunchyroll", + filter: "/ott/crunchyroll", + }, + { + title: "Action", + filter: "/movies-by-genre/action/", + }, + { + title: "Adventure", + filter: "/movies-by-genre/adventure/", + }, + { + title: "Animation", + filter: "/movies-by-genre/animated/", + }, + { + title: "Comedy", + filter: "/movies-by-genre/comedy/", + }, + { + title: "Crime", + filter: "/movies-by-genre/crime/", + }, + { + title: "Documentary", + filter: "/movies-by-genre/documentary/", + }, + { + title: "Fantasy", + filter: "/movies-by-genre/fantasy/", + }, + { + title: "Horror", + filter: "/movies-by-genre/horror/", + }, + { + title: "Mystery", + filter: "/movies-by-genre/mystery/", + }, + { + title: "Romance", + filter: "/movies-by-genre/romance/", + }, + { + title: "Thriller", + filter: "/movies-by-genre/thriller/", + }, + { + title: "Sci-Fi", + filter: "/movies-by-genre/sci-fi/", + }, +]; diff --git a/dist/topmovies/episodes.js b/dist/topmovies/episodes.js index b0273a3..437d18d 100644 --- a/dist/topmovies/episodes.js +++ b/dist/topmovies/episodes.js @@ -1 +1,60 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))(function(o,r){function a(t){try{u(i.next(t))}catch(t){r(t)}}function s(t){try{u(i.throw(t))}catch(t){r(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(a,s)}u((i=i.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getEpisodes=void 0;const getEpisodes=function(t){return __awaiter(this,arguments,void 0,function*({url:t,providerContext:e}){var n;const{axios:i,cheerio:o}=e;try{t.includes("url=")&&(t=atob(t.split("url=")[1]));const e=(yield i.get(t)).data;let r=o.load(e);if(t.includes("url=")){const e=null===(n=r("meta[http-equiv='refresh']").attr("content"))||void 0===n?void 0:n.split("url=")[1],a=(yield i.get(e||t)).data;r=o.load(a)}const a=[];return r("h3,h4").map((t,e)=>{const n=r(e).text(),i=r(e).find("a").attr("href");i&&"#"!==i&&a.push({title:n.trim()||"No title found",link:i||""})}),r("a.maxbutton").map((t,e)=>{const n=r(e).children("span").text(),i=r(e).attr("href");i&&"#"!==i&&a.push({title:n.trim()||"No title found",link:i||""})}),a}catch(t){return[]}})};exports.getEpisodes=getEpisodes; \ No newline at end of file +"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 }); +exports.getEpisodes = void 0; +const getEpisodes = 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 []; + } + }); +}; +exports.getEpisodes = getEpisodes; diff --git a/dist/topmovies/meta.js b/dist/topmovies/meta.js index f3350e8..43ca4ca 100644 --- a/dist/topmovies/meta.js +++ b/dist/topmovies/meta.js @@ -1 +1,75 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(o,a){function r(t){try{d(n.next(t))}catch(t){a(t)}}function s(t){try{d(n.throw(t))}catch(t){a(t)}}function d(t){var e;t.done?o(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(r,s)}d((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){var i;try{const{axios:n,cheerio:o}=e,a=t,r=(yield n.get(a)).data,s=o.load(r),d={title:s(".imdbwp__title").text(),synopsis:s(".imdbwp__teaser").text(),image:s(".imdbwp__thumb").find("img").attr("src")||"",imdbId:(null===(i=s(".imdbwp__link").attr("href"))||void 0===i?void 0:i.split("/")[4])||"",type:s(".thecontent").text().toLocaleLowerCase().includes("season")?"series":"movie"},l=[];return s("h3,h4").map((t,e)=>{var i;const n=s(e).text(),o=s(e).next("p").find(".maxbutton-episode-links,.maxbutton-g-drive,.maxbutton-af-download").attr("href"),a=s(e).next("p").find(".maxbutton-download-links").attr("href");(a||o&&"javascript:void(0);"!==o)&&l.push({title:n.replace("Download ","").trim()||"Download",episodesLink:o||"",directLinks:a?[{link:a,title:"Movie",type:"movie"}]:[],quality:(null===(i=null==n?void 0:n.match(/\d+p\b/))||void 0===i?void 0:i[0])||""})}),Object.assign(Object.assign({},d),{linkList:l})}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b; + try { + const { axios, cheerio } = providerContext; + const url = link; + const res = yield axios.get(url); + const data = res.data; + const $ = cheerio.load(data); + const meta = { + title: $(".imdbwp__title").text(), + synopsis: $(".imdbwp__teaser").text(), + image: $(".imdbwp__thumb").find("img").attr("src") || "", + imdbId: ((_b = $(".imdbwp__link").attr("href")) === null || _b === void 0 ? void 0 : _b.split("/")[4]) || "", + type: $(".thecontent").text().toLocaleLowerCase().includes("season") + ? "series" + : "movie", + }; + const links = []; + $("h3,h4").map((i, element) => { + var _a; + const seriesTitle = $(element).text(); + // const batchZipLink = $(element) + // .next("p") + // .find(".maxbutton-batch-zip,.maxbutton-zip-download") + // .attr("href"); + const episodesLink = $(element) + .next("p") + .find(".maxbutton-episode-links,.maxbutton-g-drive,.maxbutton-af-download") + .attr("href"); + const movieLink = $(element) + .next("p") + .find(".maxbutton-download-links") + .attr("href"); + if (movieLink || + (episodesLink && episodesLink !== "javascript:void(0);")) { + links.push({ + title: seriesTitle.replace("Download ", "").trim() || "Download", + episodesLink: episodesLink || "", + 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 Object.assign(Object.assign({}, meta), { linkList: links }); + } + catch (err) { + console.error(err); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/topmovies/posts.js b/dist/topmovies/posts.js index fb9cd92..29007ec 100644 --- a/dist/topmovies/posts.js +++ b/dist/topmovies/posts.js @@ -1 +1,79 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,a,o){return new(a||(a=Promise))(function(i,n){function r(e){try{c(o.next(e))}catch(e){n(e)}}function s(e){try{c(o.throw(e))}catch(e){n(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof a?t:new a(function(e){e(t)})).then(r,s)}c((o=o.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const 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=function(e){return __awaiter(this,arguments,void 0,function*({filter:e,page:t,signal:a,providerContext:o}){const{getBaseUrl:i}=o;return posts(`${(yield i("Topmovies"))+e}/page/${t}/`,a,o)})};exports.getPosts=getPosts;const getSearchPosts=function(e){return __awaiter(this,arguments,void 0,function*({searchQuery:e,page:t,signal:a,providerContext:o}){const{getBaseUrl:i}=o;return posts(`${yield i("Topmovies")}/search/${e}/page/${t}/`,a,o)})};function posts(e,t,a){return __awaiter(this,void 0,void 0,function*(){try{const{axios:o,cheerio:i}=a,n=(yield o.get(e,{headers:headers,signal:t})).data,r=i.load(n),s=[];return r(".post-cards").find("article").map((e,t)=>{const a=r(t).find("a").attr("title"),o=r(t).find("a").attr("href"),i=r(t).find("img").attr("data-src")||r(t).find("img").attr("src")||"";a&&o&&s.push({title:a.replace("Download","").trim(),link:o,image:i})}),s}catch(e){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const 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", +}; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, signal, providerContext, }) { + const { getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("Topmovies"); + const url = `${baseUrl + filter}/page/${page}/`; + return posts(url, signal, providerContext); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, signal, providerContext, }) { + const { getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("Topmovies"); + const url = `${baseUrl}/search/${searchQuery}/page/${page}/`; + return posts(url, signal, providerContext); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(url, signal, providerContext) { + return __awaiter(this, void 0, void 0, function* () { + try { + const { axios, cheerio } = providerContext; + const res = yield axios.get(url, { headers, signal }); + const data = res.data; + const $ = cheerio.load(data); + const catalog = []; + $(".post-cards") + .find("article") + .map((i, element) => { + const title = $(element).find("a").attr("title"); + const link = $(element).find("a").attr("href"); + const image = $(element).find("img").attr("data-src") || + $(element).find("img").attr("src") || + ""; + if (title && link) { + catalog.push({ + title: title.replace("Download", "").trim(), + link: link, + image: image, + }); + } + }); + // console.log(catalog); + return catalog; + } + catch (err) { + console.error("mod error ", err); + return []; + } + }); +} diff --git a/dist/topmovies/stream.js b/dist/topmovies/stream.js index 5eae7d8..3dea75c 100644 --- a/dist/topmovies/stream.js +++ b/dist/topmovies/stream.js @@ -1 +1,274 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,a,i){return new(a||(a=Promise))(function(o,r){function n(e){try{d(i.next(e))}catch(e){r(e)}}function c(e){try{d(i.throw(e))}catch(e){r(e)}}function d(e){var t;e.done?o(e.value):(t=e.value,t instanceof a?t:new a(function(e){e(t)})).then(n,c)}d((i=i.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const 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"},getStream=function(e){return __awaiter(this,arguments,void 0,function*({link:e,type:t,providerContext:a}){var i,o;const{axios:r,cheerio:n}=a;try{const c=function(e){return __awaiter(this,arguments,void 0,function*({url:e,providerContext:t}){var a;const{axios:i,cheerio:o}=t;try{e.includes("url=")&&(e=atob(e.split("url=")[1]));const t=(yield i.get(e)).data;let r=o.load(t);if(e.includes("url=")){const t=null===(a=r("meta[http-equiv='refresh']").attr("content"))||void 0===a?void 0:a.split("url=")[1],n=(yield i.get(t||e)).data;r=o.load(n)}const n=[];return r("h3,h4").map((e,t)=>{const a=r(t).text(),i=r(t).find("a").attr("href");i&&"#"!==i&&n.push({title:a.trim()||"No title found",link:i||""})}),r("a.maxbutton").map((e,t)=>{const a=r(t).children("span").text(),i=r(t).attr("href");i&&"#"!==i&&n.push({title:a.trim()||"No title found",link:i||""})}),n}catch(e){return[]}})};if("movie"===t){e=(yield c({url:e,providerContext:a}))[0].link||e}let d=yield modExtractor(e,a);const s=(null===(o=null===(i=null==d?void 0:d.data)||void 0===i?void 0:i.match(/content="0;url=(.*?)"/))||void 0===o?void 0:o[1])||e,l=[],h=yield isDriveLink(s),p=(yield r.get(h,{headers:headers})).data,u=n.load(p);try{const e=u(".btn.btn-light").attr("href")||"",t=yield r.get(e,{headers:headers}),a=t.data.match(/formData\.append\('token', '([a-f0-9]+)'\)/)[1],i=new FormData;i.append("token",a);const o=t.data.match(/fetch\('\/download\?id=([a-zA-Z0-9\/+]+)'/)[1],n=e.split("/download")[0],c=yield fetch(n+"/download?id="+o,{method:"POST",body:i,headers:{Referer:e,Cookie:"PHPSESSID=7e9658ce7c805dab5bbcea9046f7f308"}}),d=yield c.json();l.push({server:"ResumeBot",link:d.url,type:"mkv"})}catch(e){}try{const e=h.replace("/file","/wfile")+"?type=1",t=(yield r.get(e,{headers:headers})).data,a=n.load(t);a(".btn-success").each((e,t)=>{var a;const i=null===(a=t.attribs)||void 0===a?void 0:a.href;i&&l.push({server:"Cf Worker 1."+e,link:i,type:"mkv"})})}catch(e){}try{const e=h.replace("/file","/wfile")+"?type=2",t=(yield r.get(e,{headers:headers})).data,a=n.load(t);a(".btn-success").each((e,t)=>{var a;const i=null===(a=t.attribs)||void 0===a?void 0:a.href;i&&l.push({server:"Cf Worker 2."+e,link:i,type:"mkv"})})}catch(e){}try{const e=u(".btn-danger").attr("href")||"",t=e.split("=")[1],a=new FormData;a.append("keys",t);const i=e.split("/").slice(0,3).join("/")+"/api",o=yield fetch(i,{method:"POST",body:a,headers:{"x-token":i}}),r=yield o.json();if(!1===r.error){const e=r.url;l.push({server:"Gdrive-Instant",link:e,type:"mkv"})}}catch(e){}return l}catch(e){return[]}})};exports.getStream=getStream;const isDriveLink=e=>__awaiter(void 0,void 0,void 0,function*(){if(e.includes("drive")){const t=yield fetch(e),a=(yield t.text()).match(/window\.location\.replace\("([^"]+)"\)/),i=null==a?void 0:a[1];return`https://${e.split("/")[2]}${i}`}return e});function modExtractor(e,t){return __awaiter(this,void 0,void 0,function*(){const{axios:a,cheerio:i}=t;try{const t=e.split("sid=")[1];var o=new FormData;o.append("_wp_http",t);const n=yield fetch(e.split("?")[0],{method:"POST",body:o}),c=yield n.text(),d=i.load(c),s=d("input").attr("name","_wp_http2").val();var r=new FormData;r.append("_wp_http2",s);const l=d("form").attr("action")||e.split("?")[0],h=yield fetch(l,{method:"POST",body:r}),p=(yield h.text()).match(/setAttribute\("href",\s*"(.*?)"/)[1],u=p.split("=")[1];return yield a.get(p,{headers:{Referer:l,Cookie:`${u}=${s}`}})}catch(e){}})} \ No newline at end of file +"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 }); +exports.getStream = void 0; +const 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", +}; +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link: url, type, providerContext, }) { + var _b, _c; + 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 { + const resumeBot = $drive(".btn.btn-light").attr("href") || ""; + const resumeBotRes = yield 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 = yield fetch(resumeBotBaseUrl + "/download?id=" + resumeBotPath, { + method: "POST", + body: resumeBotBody, + headers: { + Referer: resumeBot, + Cookie: "PHPSESSID=7e9658ce7c805dab5bbcea9046f7f308", + }, + }); + const resumeBotDownloadData = yield 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 = 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) { + console.log("getStream error", err); + return []; + } + }); +}; +exports.getStream = getStream; +const isDriveLink = (ddl) => __awaiter(void 0, void 0, void 0, function* () { + if (ddl.includes("drive")) { + const driveLeach = yield fetch(ddl); + const driveLeachData = yield driveLeach.text(); + const pathMatch = driveLeachData.match(/window\.location\.replace\("([^"]+)"\)/); + const path = pathMatch === null || pathMatch === void 0 ? void 0 : pathMatch[1]; + const mainUrl = ddl.split("/")[2]; + console.log(`driveUrl = https://${mainUrl}${path}`); + return `https://${mainUrl}${path}`; + } + else { + return ddl; + } +}); +function modExtractor(url, providerContext) { + return __awaiter(this, void 0, void 0, function* () { + const { axios, cheerio } = providerContext; + try { + const wpHttp = url.split("sid=")[1]; + var bodyFormData0 = new FormData(); + bodyFormData0.append("_wp_http", wpHttp); + const res = yield fetch(url.split("?")[0], { + method: "POST", + body: bodyFormData0, + }); + const data = yield res.text(); + // console.log('', data); + const html = data; + const $ = cheerio.load(html); + // find input with name="_wp_http2" + const wpHttp2 = $("input").attr("name", "_wp_http2").val(); + // console.log('wpHttp2', wpHttp2); + // form data + var bodyFormData = new FormData(); + bodyFormData.append("_wp_http2", wpHttp2); + const formUrl1 = $("form").attr("action"); + const formUrl = formUrl1 || url.split("?")[0]; + const res2 = yield fetch(formUrl, { + method: "POST", + body: bodyFormData, + }); + const html2 = yield res2.text(); + const link = html2.match(/setAttribute\("href",\s*"(.*?)"/)[1]; + console.log(link); + const cookie = link.split("=")[1]; + console.log("cookie", cookie); + const downloadLink = yield axios.get(link, { + headers: { + Referer: formUrl, + Cookie: `${cookie}=${wpHttp2}`, + }, + }); + return downloadLink; + } + catch (err) { + console.log("modGetStream error", err); + } + }); +} diff --git a/dist/types.js b/dist/types.js index f5d6053..c8ad2e5 100644 --- a/dist/types.js +++ b/dist/types.js @@ -1 +1,2 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}); \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/dist/uhd/catalog.js b/dist/uhd/catalog.js index 38d1da6..1d35fc2 100644 --- a/dist/uhd/catalog.js +++ b/dist/uhd/catalog.js @@ -1 +1,39 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Latest",filter:""},{title:"Web Series",filter:"/web-series"},{title:"Movies",filter:"/movies"},{title:"4K HDR",filter:"/4k-hdr"}],exports.genres=[{title:"4K HEVC",filter:"/2160p-hevc"},{title:"HD 10bit",filter:"/1080p-10bit"},{title:"English Movies",filter:"/movies/english-movies"},{title:"Dual Audio",filter:"/movies/dual-audio-movies"}]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Latest", + filter: "", + }, + { + title: "Web Series", + filter: "/web-series", + }, + { + title: "Movies", + filter: "/movies", + }, + { + title: "4K HDR", + filter: "/4k-hdr", + }, +]; +exports.genres = [ + { + title: "4K HEVC", + filter: "/2160p-hevc", + }, + { + title: "HD 10bit", + filter: "/1080p-10bit", + }, + { + title: "English Movies", + filter: "/movies/english-movies", + }, + { + title: "Dual Audio", + filter: "/movies/dual-audio-movies", + }, +]; diff --git a/dist/uhd/meta.js b/dist/uhd/meta.js index a16fc12..20ab4ae 100644 --- a/dist/uhd/meta.js +++ b/dist/uhd/meta.js @@ -1 +1,121 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(a,o){function c(e){try{r(n.next(e))}catch(e){o(e)}}function s(e){try{r(n.throw(e))}catch(e){o(e)}}function r(e){var t;e.done?a(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(c,s)}r((n=n.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const 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/120.0.0.0 Safari/537.36 Edg/120.0.0.0"},getMeta=function(e){return __awaiter(this,arguments,void 0,function*({link:e,providerContext:t}){var i;try{const{axios:n,cheerio:a}=t,o=e,c=yield n.get(o,{headers:headers}),s=yield c.data,r=a.load(s),l=r("h2:first").text()||"",h=r("h2").siblings().find("img").attr("src")||"",d=[];return r(".mks_separator,p:contains('mks_separator')").each((e,t)=>{r(t).nextUntil(".mks_separator").each((e,t)=>{const i=r(t).text(),n=[];r(t).next("p").find("a").each((e,t)=>{const i=r(t).text(),a=r(t).attr("href");i&&a&&!i.toLocaleLowerCase().includes("zip")&&n.push({title:i,link:a})}),i&&n.length>0&&d.push({title:i,directLinks:n})})}),r("hr").each((e,t)=>{r(t).nextUntil("hr").each((e,t)=>{const i=r(t).text(),n=[];r(t).next("p").find("a").each((e,t)=>{const i=r(t).text(),a=r(t).attr("href");i&&a&&!i.toLocaleLowerCase().includes("zip")&&n.push({title:i,link:a})}),i&&n.length>0&&d.push({title:i,directLinks:n})})}),{title:l.match(/^Download\s+([^(\[]+)/i)?(null===(i=null==l?void 0:l.match(/^Download\s+([^(\[]+)/i))||void 0===i?void 0:i[1])||"":l.replace("Download","")||"",image:h,imdbId:"",synopsis:l,type:"",linkList:d}}catch(e){return{title:"",image:"",imdbId:"",synopsis:"",linkList:[],type:"uhd"}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const 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/120.0.0.0 Safari/537.36 Edg/120.0.0.0", +}; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b; + try { + const { axios, cheerio } = providerContext; + console.log("Fetching metadata from UHD...", link, providerContext); + const url = link; + const res = yield axios.get(url, { headers }); + const html = yield res.data; + const $ = cheerio.load(html); + const title = $("h2:first").text() || ""; + const image = $("h2").siblings().find("img").attr("src") || ""; + // const trailer = $('iframe').attr('src') || ''; + // console.log({ title, image, trailer }); + // Links + const episodes = []; + // new structure + $(".mks_separator,p:contains('mks_separator')").each((index, element) => { + $(element) + .nextUntil(".mks_separator") + .each((index, element) => { + const title = $(element).text(); + const episodesList = []; + $(element) + .next("p") + .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, + }); + } + }); + }); + // old structure + $("hr").each((index, element) => { + $(element) + .nextUntil("hr") + .each((index, element) => { + const title = $(element).text(); + const episodesList = []; + $(element) + .next("p") + .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, + }); + } + }); + }); + // console.log(episodes); + return { + 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.replace("Download", "") || "", + image, + imdbId: "", + synopsis: title, + type: "", + linkList: episodes, + }; + } + catch (error) { + console.error(error); + return { + title: "", + image: "", + imdbId: "", + synopsis: "", + linkList: [], + type: "uhd", + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/uhd/posts.js b/dist/uhd/posts.js index a0eced5..38acb6f 100644 --- a/dist/uhd/posts.js +++ b/dist/uhd/posts.js @@ -1 +1,76 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,o,a){return new(o||(o=Promise))(function(i,n){function s(e){try{c(a.next(e))}catch(e){n(e)}}function r(e){try{c(a.throw(e))}catch(e){n(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(s,r)}c((a=a.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const 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/120.0.0.0 Safari/537.36 Edg/120.0.0.0"},getPosts=e=>__awaiter(void 0,[e],void 0,function*({filter:e,page:t,signal:o,providerContext:a}){const{getBaseUrl:i}=a,n=yield i("UhdMovies");return posts(n,1===t?`${n}/${e}/`:`${n+e}/page/${t}/`,o,a)});exports.getPosts=getPosts;const getSearchPosts=e=>__awaiter(void 0,[e],void 0,function*({searchQuery:e,page:t,signal:o,providerContext:a}){const{getBaseUrl:i}=a,n=yield i("UhdMovies");return posts(n,`${n}/search/${e}/page/${t}/`,o,a)});function posts(e,t,o,a){return __awaiter(this,void 0,void 0,function*(){try{const{axios:e,cheerio:i}=a,n=(yield e.get(t,{headers:headers,signal:o})).data,s=i.load(n),r=[];return s(".gridlove-posts").find(".layout-masonry").each((e,t)=>{const o=s(t).find("a").attr("title"),a=s(t).find("a").attr("href"),i=s(t).find("a").find("img").attr("src");o&&a&&i&&r.push({title:o.replace("Download","").trim(),link:a,image:i})}),r}catch(e){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const 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/120.0.0.0 Safari/537.36 Edg/120.0.0.0", +}; +const getPosts = (_a) => __awaiter(void 0, [_a], void 0, function* ({ filter, page, +// providerValue, +signal, providerContext, }) { + const { getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("UhdMovies"); + const url = page === 1 ? `${baseUrl}/${filter}/` : `${baseUrl + filter}/page/${page}/`; + console.log("url", url); + return posts(baseUrl, url, signal, providerContext); +}); +exports.getPosts = getPosts; +const getSearchPosts = (_a) => __awaiter(void 0, [_a], void 0, function* ({ searchQuery, page, +// providerValue, +signal, providerContext, }) { + const { getBaseUrl } = providerContext; + const baseUrl = yield getBaseUrl("UhdMovies"); + const url = `${baseUrl}/search/${searchQuery}/page/${page}/`; + return posts(baseUrl, url, signal, providerContext); +}); +exports.getSearchPosts = getSearchPosts; +function posts(baseURL, url, signal, providerContext) { + return __awaiter(this, void 0, void 0, function* () { + try { + const { axios, cheerio } = providerContext; + const res = yield axios.get(url, { headers, signal }); + const html = res.data; + const $ = cheerio.load(html); + const uhdCatalog = []; + $(".gridlove-posts") + .find(".layout-masonry") + .each((index, element) => { + const title = $(element).find("a").attr("title"); + const link = $(element).find("a").attr("href"); + const image = $(element).find("a").find("img").attr("src"); + if (title && link && image) { + uhdCatalog.push({ + title: title.replace("Download", "").trim(), + link: link, + image: image, + }); + } + }); + return uhdCatalog; + } + catch (err) { + console.error("uhd error ", err); + return []; + } + }); +} diff --git a/dist/uhd/stream.js b/dist/uhd/stream.js index e8c52db..f66b93b 100644 --- a/dist/uhd/stream.js +++ b/dist/uhd/stream.js @@ -1 +1,206 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,i,r){return new(i||(i=Promise))(function(a,o){function n(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(n,c)}s((r=r.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const 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/120.0.0.0 Safari/537.36 Edg/120.0.0.0"},getStream=e=>__awaiter(void 0,[e],void 0,function*({link:e,providerContext:t}){var i,r;try{const{axios:a,cheerio:o}=t;let n=yield modExtractor(e,t);const c=(null===(r=null===(i=null==n?void 0:n.data)||void 0===i?void 0:i.match(/content="0;url=(.*?)"/))||void 0===r?void 0:r[1])||e,s=yield isDriveLink(c),d=[],l=(yield a.get(s,{headers:headers})).data,h=o.load(l);try{const e=h(".btn-danger").attr("href")||"",t=e.split("=")[1],i=new FormData;i.append("keys",t);const r=e.split("/").slice(0,3).join("/")+"/api",a=yield fetch(r,{method:"POST",body:i,headers:{"x-token":r}}),o=yield a.json();if(!1===o.error){const e=o.url;d.push({server:"Gdrive-Instant",link:e,type:"mkv"})}}catch(e){}try{const e=s.replace("/file","/zfile"),t=(yield a.get(e,{headers:headers})).data,i=o.load(t)(".btn-success").attr("href");i&&d.push({server:"ResumeCloud",link:i,type:"mkv"})}catch(e){}try{const e=s.replace("/file","/wfile")+"?type=1",t=(yield a.get(e,{headers:headers})).data,i=o.load(t);i(".btn-success").each((e,t)=>{var i;const r=null===(i=t.attribs)||void 0===i?void 0:i.href;r&&d.push({server:"Cf Worker 1."+e,link:r,type:"mkv"})})}catch(e){}try{const e=s.replace("/file","/wfile")+"?type=2",t=(yield a.get(e,{headers:headers})).data,i=o.load(t);i(".btn-success").each((e,t)=>{var i;const r=null===(i=t.attribs)||void 0===i?void 0:i.href;r&&d.push({server:"Cf Worker 2."+e,link:r,type:"mkv"})})}catch(e){}return d}catch(e){return[]}});exports.getStream=getStream;const isDriveLink=e=>__awaiter(void 0,void 0,void 0,function*(){if(e.includes("drive")){const t=yield fetch(e),i=(yield t.text()).match(/window\.location\.replace\("([^"]+)"\)/),r=null==i?void 0:i[1];return`https://${e.split("/")[2]}${r}`}return e});function modExtractor(e,t){return __awaiter(this,void 0,void 0,function*(){const{axios:i,cheerio:r}=t;try{const t=e.split("sid=")[1];var a=new FormData;a.append("_wp_http",t);const n=yield fetch(e.split("?")[0],{method:"POST",body:a}),c=yield n.text(),s=r.load(c),d=s("input").attr("name","_wp_http2").val();var o=new FormData;o.append("_wp_http2",d);const l=s("form").attr("action")||e.split("?")[0],h=yield fetch(l,{method:"POST",body:o}),p=(yield h.text()).match(/setAttribute\("href",\s*"(.*?)"/)[1],u=p.split("=")[1];return yield i.get(p,{headers:{Referer:l,Cookie:`${u}=${d}`}})}catch(e){}})} \ No newline at end of file +"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 }); +exports.getStream = void 0; +const 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/120.0.0.0 Safari/537.36 Edg/120.0.0.0", +}; +const getStream = (_a) => __awaiter(void 0, [_a], void 0, function* ({ link: url, providerContext, }) { + var _b, _c; + try { + const { axios, cheerio } = providerContext; + 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", ddl); + // console.log(ddl); + const driveLink = yield isDriveLink(ddl); + const ServerLinks = []; + const driveRes = yield axios.get(driveLink, { headers }); + const driveHtml = driveRes.data; + const $drive = cheerio.load(driveHtml); + //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; + ServerLinks.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); + } + // resume link + try { + const resumeDrive = driveLink.replace("/file", "/zfile"); + // console.log('resumeDrive', resumeDrive); + const resumeDriveRes = yield axios.get(resumeDrive, { headers }); + const resumeDriveHtml = resumeDriveRes.data; + const $resumeDrive = cheerio.load(resumeDriveHtml); + const resumeLink = $resumeDrive(".btn-success").attr("href"); + // console.log('resumeLink', resumeLink); + if (resumeLink) { + ServerLinks.push({ + server: "ResumeCloud", + link: resumeLink, + type: "mkv", + }); + } + } + catch (err) { + console.log("Resume link not found"); + } + // 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) { + ServerLinks.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) { + ServerLinks.push({ + server: "Cf Worker 2." + i, + link: link, + type: "mkv", + }); + } + }); + } + catch (err) { + console.log("CF workers link not found", err); + } + console.log("ServerLinks", ServerLinks); + return ServerLinks; + } + catch (err) { + console.log("getStream error", err); + return []; + } +}); +exports.getStream = getStream; +const isDriveLink = (ddl) => __awaiter(void 0, void 0, void 0, function* () { + if (ddl.includes("drive")) { + const driveLeach = yield fetch(ddl); + const driveLeachData = yield driveLeach.text(); + const pathMatch = driveLeachData.match(/window\.location\.replace\("([^"]+)"\)/); + const path = pathMatch === null || pathMatch === void 0 ? void 0 : pathMatch[1]; + const mainUrl = ddl.split("/")[2]; + console.log(`driveUrl = https://${mainUrl}${path}`); + return `https://${mainUrl}${path}`; + } + else { + return ddl; + } +}); +function modExtractor(url, providerContext) { + return __awaiter(this, void 0, void 0, function* () { + const { axios, cheerio } = providerContext; + try { + const wpHttp = url.split("sid=")[1]; + var bodyFormData0 = new FormData(); + bodyFormData0.append("_wp_http", wpHttp); + const res = yield fetch(url.split("?")[0], { + method: "POST", + body: bodyFormData0, + }); + const data = yield res.text(); + // console.log('', data); + const html = data; + const $ = cheerio.load(html); + // find input with name="_wp_http2" + const wpHttp2 = $("input").attr("name", "_wp_http2").val(); + // console.log('wpHttp2', wpHttp2); + // form data + var bodyFormData = new FormData(); + bodyFormData.append("_wp_http2", wpHttp2); + const formUrl1 = $("form").attr("action"); + const formUrl = formUrl1 || url.split("?")[0]; + const res2 = yield fetch(formUrl, { + method: "POST", + body: bodyFormData, + }); + const html2 = yield res2.text(); + const link = html2.match(/setAttribute\("href",\s*"(.*?)"/)[1]; + console.log(link); + const cookie = link.split("=")[1]; + console.log("cookie", cookie); + const downloadLink = yield axios.get(link, { + headers: { + Referer: formUrl, + Cookie: `${cookie}=${wpHttp2}`, + }, + }); + return downloadLink; + } + catch (err) { + console.log("modGetStream error", err); + } + }); +} diff --git a/dist/vadapav/catalog.js b/dist/vadapav/catalog.js index f69e31d..ea9cb23 100644 --- a/dist/vadapav/catalog.js +++ b/dist/vadapav/catalog.js @@ -1 +1,18 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"Movies",filter:"/608c853f-704e-48f0-b785-4ae1f48ea70d"},{title:"Tv Shows",filter:"/72983eef-a12f-4be4-99a7-e8f6afa568c1"},{title:"Anime",filter:"/36abf81c-1032-4fbf-9a55-347a05ce2ca3"}],exports.genres=[]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "Movies", + filter: "/608c853f-704e-48f0-b785-4ae1f48ea70d", + }, + { + title: "Tv Shows", + filter: "/72983eef-a12f-4be4-99a7-e8f6afa568c1", + }, + { + title: "Anime", + filter: "/36abf81c-1032-4fbf-9a55-347a05ce2ca3", + }, +]; +exports.genres = []; diff --git a/dist/vadapav/episodes.js b/dist/vadapav/episodes.js index 83bf9e7..94b66da 100644 --- a/dist/vadapav/episodes.js +++ b/dist/vadapav/episodes.js @@ -1 +1,42 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(o,r){function l(t){try{c(n.next(t))}catch(t){r(t)}}function s(t){try{c(n.throw(t))}catch(t){r(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(l,s)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getEpisodes=void 0;const getEpisodes=function(t){return __awaiter(this,arguments,void 0,function*({url:t,providerContext:e}){const{axios:i,cheerio:n}=e;try{const e=null==t?void 0:t.split("/").slice(0,3).join("/"),o=(yield i.get(t)).data;let r=n.load(o);const l=[];return r('.file-entry:not(:contains("Parent Directory"))').map((t,i)=>{var n,o,s,c,d,a;const u=r(i).attr("href");u&&((null===(n=r(i).text())||void 0===n?void 0:n.includes(".mp4"))||(null===(o=r(i).text())||void 0===o?void 0:o.includes(".mkv")))&&l.push({title:(null===(d=null===(c=null===(s=r(i).text())||void 0===s?void 0:s.match(/E\d+/))||void 0===c?void 0:c[0])||void 0===d?void 0:d.replace("E","Episode "))||t+1+". "+(null===(a=r(i).text())||void 0===a?void 0:a.replace(".mkv","")),link:e+u})}),l}catch(t){return[]}})};exports.getEpisodes=getEpisodes; \ No newline at end of file +"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 }); +exports.getEpisodes = void 0; +const getEpisodes = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) { + const { axios, cheerio } = providerContext; + try { + const baseUrl = url === null || url === void 0 ? void 0 : url.split("/").slice(0, 3).join("/"); + const res = yield axios.get(url); + const html = res.data; + let $ = cheerio.load(html); + const episodeLinks = []; + $('.file-entry:not(:contains("Parent Directory"))').map((i, element) => { + var _a, _b, _c, _d, _e, _f; + 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")))) { + episodeLinks.push({ + 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 []; + } + }); +}; +exports.getEpisodes = getEpisodes; diff --git a/dist/vadapav/meta.js b/dist/vadapav/meta.js index 08526cf..37760d3 100644 --- a/dist/vadapav/meta.js +++ b/dist/vadapav/meta.js @@ -1 +1,78 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))(function(o,r){function s(t){try{c(n.next(t))}catch(t){r(t)}}function a(t){try{c(n.throw(t))}catch(t){r(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(s,a)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){var i,n;try{const{axios:o,cheerio:r}=e,s=null==t?void 0:t.split("/").slice(0,3).join("/"),a=t,c=(yield o.get(a)).data,l=r.load(c),d=(null===(n=null===(i=l(".directory").children().first().text().trim())||void 0===i?void 0:i.split("/").pop())||void 0===n?void 0:n.trim())||"",u=[];l('.directory-entry:not(:contains("Parent Directory"))').map((t,e)=>{const i=l(e).attr("href");i&&u.push({episodesLink:s+i,title:l(e).text()})});const p=[];return l('.file-entry:not(:contains("Parent Directory"))').map((t,e)=>{var i,n;const o=l(e).attr("href");o&&((null===(i=l(e).text())||void 0===i?void 0:i.includes(".mp4"))||(null===(n=l(e).text())||void 0===n?void 0:n.includes(".mkv")))&&p.push({title:t+1+". "+l(e).text(),link:s+o})}),p.length>0&&u.push({title:d+" DL",directLinks:p}),{title:d,synopsis:"",image:"",imdbId:"",type:"movie",linkList:u}}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b, _c; + try { + const { axios, cheerio } = providerContext; + const baseUrl = link === null || link === void 0 ? void 0 : link.split("/").slice(0, 3).join("/"); + const url = link; + const res = yield axios.get(url); + const data = res.data; + const $ = cheerio.load(data); + const title = ((_c = (_b = $(".directory") + .children() + .first() + .text() + .trim()) === null || _b === void 0 ? void 0 : _b.split("/").pop()) === null || _c === void 0 ? void 0 : _c.trim()) || ""; + const links = []; + $('.directory-entry:not(:contains("Parent Directory"))').map((i, element) => { + const link = $(element).attr("href"); + if (link) { + links.push({ + episodesLink: baseUrl + link, + title: $(element).text(), + }); + } + }); + 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, + }; + } + catch (err) { + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/vadapav/posts.js b/dist/vadapav/posts.js index f08cd6c..de84f1e 100644 --- a/dist/vadapav/posts.js +++ b/dist/vadapav/posts.js @@ -1 +1,72 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,o){return new(r||(r=Promise))(function(n,i){function s(t){try{c(o.next(t))}catch(t){i(t)}}function a(t){try{c(o.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}c((o=o.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,signal:r,providerContext:o}){const{getBaseUrl:n,axios:i,cheerio:s}=o,a=yield n("vadapav");if(e>1)return[];return posts({baseUrl:a,url:`${a+t}`,signal:r,axios:i,cheerio:s})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:r,providerContext:o}){const{getBaseUrl:n,axios:i,cheerio:s}=o,a=yield n("vadapav");if(e>1)return[];return posts({baseUrl:a,url:`${a}/s/${t}`,signal:r,axios:i,cheerio:s})})};function posts(t){return __awaiter(this,arguments,void 0,function*({url:t,signal:e,axios:r,cheerio:o}){try{const n=(yield r.get(t,{signal:e})).data,i=o.load(n),s=[];return i('.directory-entry:not(:contains("Parent Directory"))').map((t,e)=>{var r;const o=i(e).text(),n=i(e).attr("href"),a=(null==o?void 0:o.length)>30?null===(r=null==o?void 0:o.slice(0,30))||void 0===r?void 0:r.replace(/\./g," "):null==o?void 0:o.replace(/\./g," "),c=`https://placehold.jp/23/000000/ffffff/200x400.png?text=${encodeURIComponent(a)}&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`;o&&n&&s.push({title:o,link:n,image:c})}),s}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, + // providerValue, + signal, providerContext, }) { + const { getBaseUrl, axios, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("vadapav"); + if (page > 1) { + return []; + } + const url = `${baseUrl + filter}`; + return posts({ baseUrl, url, signal, axios, cheerio }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, + // providerValue, + signal, providerContext, }) { + const { getBaseUrl, axios, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("vadapav"); + if (page > 1) { + return []; + } + const url = `${baseUrl}/s/${searchQuery}`; + return posts({ baseUrl, url, signal, axios, cheerio }); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ + // baseUrl, + url, signal, axios, cheerio, }) { + try { + const res = yield axios.get(url, { signal }); + const data = res.data; + const $ = cheerio.load(data); + const catalog = []; + $('.directory-entry:not(:contains("Parent Directory"))').map((i, element) => { + var _a; + const title = $(element).text(); + const link = $(element).attr("href"); + const imageTitle = (title === null || title === void 0 ? void 0 : title.length) > 30 + ? (_a = title === null || title === void 0 ? void 0 : title.slice(0, 30)) === null || _a === void 0 ? void 0 : _a.replace(/\./g, " ") + : title === null || title === void 0 ? void 0 : title.replace(/\./g, " "); + 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`; + if (title && link) { + catalog.push({ + title: title, + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + return []; + } + }); +} diff --git a/dist/vadapav/stream.js b/dist/vadapav/stream.js index 480e347..e111dc9 100644 --- a/dist/vadapav/stream.js +++ b/dist/vadapav/stream.js @@ -1 +1,30 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))(function(i,a){function o(t){try{u(r.next(t))}catch(t){a(t)}}function c(t){try{u(r.throw(t))}catch(t){a(t)}}function u(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(o,c)}u((r=r.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=function(t){return __awaiter(this,arguments,void 0,function*({link:t}){try{const e=[];return e.push({server:"vadapav",link:t,type:(null==t?void 0:t.split(".").pop())||"mkv"}),e}catch(t){return[]}})};exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link: url, // type, // providerContext, + }) { + try { + const stream = []; + stream.push({ + server: "vadapav", + link: url, + type: (url === null || url === void 0 ? void 0 : url.split(".").pop()) || "mkv", + }); + return stream; + } + catch (err) { + return []; + } + }); +}; +exports.getStream = getStream; diff --git a/dist/vega/catalog.js b/dist/vega/catalog.js index e3e33df..e2575e6 100644 --- a/dist/vega/catalog.js +++ b/dist/vega/catalog.js @@ -1 +1,103 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.genres=exports.catalog=void 0,exports.catalog=[{title:"New",filter:""},{title:"Netflix",filter:"web-series/netflix"},{title:"Amazon Prime",filter:"web-series/amazon-prime-video"},{title:"4K Movies",filter:"movies-by-quality/2160p"}],exports.genres=[{title:"Action",filter:"category/movies-by-genres/action"},{title:"Adventure",filter:"category/movies-by-genres/adventure"},{title:"Animation",filter:"category/movies-by-genres/animation"},{title:"Biography",filter:"category/movies-by-genres/biography"},{title:"Comedy",filter:"category/movies-by-genres/comedy"},{title:"Crime",filter:"category/movies-by-genres/crime"},{title:"Documentary",filter:"category/movies-by-genres/documentary"},{title:"Drama",filter:"category/movies-by-genres/drama"},{title:"Family",filter:"category/movies-by-genres/family"},{title:"Fantasy",filter:"category/movies-by-genres/fantasy"},{title:"History",filter:"category/movies-by-genres/history"},{title:"Horror",filter:"category/movies-by-genres/horror"},{title:"Music",filter:"category/movies-by-genres/music"},{title:"Mystery",filter:"category/movies-by-genres/mystery"},{title:"Romance",filter:"category/movies-by-genres/romance"},{title:"Sci-Fi",filter:"category/movies-by-genres/sci-fi"},{title:"Sport",filter:"category/movies-by-genres/sport"},{title:"Thriller",filter:"category/movies-by-genres/thriller"},{title:"War",filter:"category/movies-by-genres/war"},{title:"Western",filter:"category/movies-by-genres/western"}]; \ No newline at end of file +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genres = exports.catalog = void 0; +exports.catalog = [ + { + title: "New", + filter: "", + }, + { + title: "Netflix", + filter: "web-series/netflix", + }, + { + title: "Amazon Prime", + filter: "web-series/amazon-prime-video", + }, + { + title: "4K Movies", + filter: "movies-by-quality/2160p", + }, +]; +exports.genres = [ + { + title: "Action", + filter: "category/movies-by-genres/action", + }, + { + title: "Adventure", + filter: "category/movies-by-genres/adventure", + }, + { + title: "Animation", + filter: "category/movies-by-genres/animation", + }, + { + title: "Biography", + filter: "category/movies-by-genres/biography", + }, + { + title: "Comedy", + filter: "category/movies-by-genres/comedy", + }, + { + title: "Crime", + filter: "category/movies-by-genres/crime", + }, + { + title: "Documentary", + filter: "category/movies-by-genres/documentary", + }, + { + title: "Drama", + filter: "category/movies-by-genres/drama", + }, + { + title: "Family", + filter: "category/movies-by-genres/family", + }, + { + title: "Fantasy", + filter: "category/movies-by-genres/fantasy", + }, + { + title: "History", + filter: "category/movies-by-genres/history", + }, + { + title: "Horror", + filter: "category/movies-by-genres/horror", + }, + { + title: "Music", + filter: "category/movies-by-genres/music", + }, + { + title: "Mystery", + filter: "category/movies-by-genres/mystery", + }, + { + title: "Romance", + filter: "category/movies-by-genres/romance", + }, + { + title: "Sci-Fi", + filter: "category/movies-by-genres/sci-fi", + }, + { + title: "Sport", + filter: "category/movies-by-genres/sport", + }, + { + title: "Thriller", + filter: "category/movies-by-genres/thriller", + }, + { + title: "War", + filter: "category/movies-by-genres/war", + }, + { + title: "Western", + filter: "category/movies-by-genres/western", + }, +]; diff --git a/dist/vega/episodes.js b/dist/vega/episodes.js index e557d88..a634180 100644 --- a/dist/vega/episodes.js +++ b/dist/vega/episodes.js @@ -1 +1,45 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))(function(r,i){function c(e){try{s(o.next(e))}catch(e){i(e)}}function a(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(c,a)}s((o=o.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getEpisodes=void 0;const getEpisodes=function(e){return __awaiter(this,arguments,void 0,function*({url:e,providerContext:t}){const{axios:n,cheerio:o,commonHeaders:r}=t;try{const t=yield n.get(e,{headers:r}),i=o.load(t.data),c=i(".entry-content,.entry-inner");i(".unili-content,.code-block-1").remove();const a=[];return c.find("h4").each((e,t)=>{const n=i(t),o=n.text().replace(/-/g,"").replace(/:/g,""),r=n.next("p").find('.btn-outline[style="background:linear-gradient(135deg,#ed0b0b,#f2d152); color: white;"]').parent().attr("href");o&&r&&a.push({title:o,link:r})}),a}catch(e){return[]}})};exports.getEpisodes=getEpisodes; \ No newline at end of file +"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 }); +exports.getEpisodes = void 0; +const getEpisodes = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) { + const { axios, cheerio, commonHeaders: headers } = providerContext; + console.log("getEpisodeLinks", url); + try { + const res = yield axios.get(url, { headers }); + const $ = cheerio.load(res.data); + const container = $(".entry-content,.entry-inner"); + $(".unili-content,.code-block-1").remove(); + const episodes = []; + container.find("h4").each((index, element) => { + const el = $(element); + const title = el.text().replace(/-/g, "").replace(/:/g, ""); + const link = el + .next("p") + .find('.btn-outline[style="background:linear-gradient(135deg,#ed0b0b,#f2d152); color: white;"]') + .parent() + .attr("href"); + if (title && link) { + episodes.push({ title, link }); + } + }); + // console.log(episodes); + return episodes; + } + catch (err) { + console.log("getEpisodeLinks error: "); + // console.error(err); + return []; + } + }); +}; +exports.getEpisodes = getEpisodes; diff --git a/dist/vega/meta.js b/dist/vega/meta.js index b1a9183..e34b34e 100644 --- a/dist/vega/meta.js +++ b/dist/vega/meta.js @@ -1 +1,127 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(o,l){function d(e){try{v(n.next(e))}catch(e){l(e)}}function a(e){try{v(n.throw(e))}catch(e){l(e)}}function v(e){var t;e.done?o(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(d,a)}v((n=n.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const headers={Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,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",Cookie:"_lscache_vary=62abf8b96599676eb8ec211cffaeb8ff; ext_name=ojplmecpdpgccookcobabopnaifgidhf; cf_clearance=n4Y1XTKZ5TfIMBNQuAXzerwKpx0U35KoOm3imfT0GpU-1732097818-1.2.1.1-ZeAnEu.8D9TSZHYDoj7vwo1A1rpdKl304ZpaBn_QbAQOr211JFAb7.JRQU3EL2eIy1Dfl8HhYvH7_259.22lUz8gbchHcQ8hvfuQXMtFMCbqDBLzjNUZa9stuk.39l28IcPhH9Z2szsf3SGtNI1sAfo66Djt7sOReLK3lHw9UkJp7BdGqt6a2X9qAc8EsAI3lE480Tmt0fkHv14Oc30LSbPB_WwFmiqAki2W.Gv9hV7TN_QBFESleTDlXd.6KGflfd4.KwWF7rpSRo_cgoc9ALLLIafpxHVbe7_g5r7zvpml_Pj8fEL75fw.1GBuy16bciHBuB8s_kahuJYUnhtQFFgfTQl8_Gn6KeovBWx.PJ7nFv5sklHUfAyBVq3t30xKe8ZDydsQ_G.yipfj_In5GmmWcXGb6E4.bioDOwW_sKLtxwdTQt7Nu.RkILX_mKvXNpyLqflIVj8G7X5E8I.unw","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"},getMeta=e=>__awaiter(void 0,[e],void 0,function*({link:e,providerContext:t}){var i,n,o,l,d,a,v,r,c,u,s,f,p,h,b,g,x,m,w;try{const{axios:_,cheerio:y}=t,k=e,L=k.split("/").slice(0,3).join("/"),A=yield _.get(k,{headers:Object.assign(Object.assign({},headers),{Referer:L})}),I=y.load(A.data),K=I(".entry-content,.post-inner"),M=null==K?void 0:K.find("h3"),S=(null===(a=null===(d=null===(l=null===(o=null===(n=null===(i=null==M?void 0:M.next("p"))||void 0===i?void 0:i.find("a"))||void 0===n?void 0:n[0])||void 0===o?void 0:o.attribs)||void 0===l?void 0:l.href)||void 0===d?void 0:d.match(/tt\d+/g))||void 0===a?void 0:a[0])||(null===(v=K.text().match(/tt\d+/g))||void 0===v?void 0:v[0])||"",U=(null===(c=null===(r=null==M?void 0:M.next("p"))||void 0===r?void 0:r.text())||void 0===c?void 0:c.includes("Series Name"))?"series":"movie",q=/Name: (.+)/,B=(null===(f=null===(s=null===(u=null==M?void 0:M.next("p"))||void 0===u?void 0:u.text())||void 0===s?void 0:s.match(q))||void 0===f?void 0:f[1])||"",F=null===(x=null===(g=null===(b=null===(h=null===(p=null==K?void 0:K.find("p"))||void 0===p?void 0:p.next("h3,h4"))||void 0===h?void 0:h.next("p"))||void 0===b?void 0:b[0])||void 0===g?void 0:g.children)||void 0===x?void 0:x[0],G=F&&"data"in F?F.data:"";let T=(null===(m=null==K?void 0:K.find("img[data-lazy-src]"))||void 0===m?void 0:m.attr("data-lazy-src"))||"";T.startsWith("//")&&(T="https:"+T);const j=null===(w=null==K?void 0:K.first())||void 0===w?void 0:w.find("hr"),H=null==j?void 0:j.nextUntil("hr"),N=[];return H.each((e,t)=>{var i,n,o,l,d,a,v,r,c;const u=(null==(t=I(t))?void 0:t.text())||"",s=(null===(i=null==t?void 0:t.text().match(/\d+p\b/))||void 0===i?void 0:i[0])||"",f=(null==t?void 0:t.next().find(".dwd-button").text().toLowerCase().includes("download"))?null===(o=null===(n=null==t?void 0:t.next().find(".dwd-button"))||void 0===n?void 0:n.parent())||void 0===o?void 0:o.attr("href"):"",p=null===(d=null===(l=null==t?void 0:t.next().find(".btn-outline[style='background:linear-gradient(135deg,#ed0b0b,#f2d152); color: white;'],.btn-outline[style='background:linear-gradient(135deg,#ed0b0b,#f2d152); color: #fdf8f2;']"))||void 0===l?void 0:l.parent())||void 0===d?void 0:d.attr("href"),h=p||((null==t?void 0:t.next().find(".dwd-button").text().toLowerCase().includes("episode"))?null===(v=null===(a=null==t?void 0:t.next().find(".dwd-button"))||void 0===a?void 0:a.parent())||void 0===v?void 0:v.attr("href"):"")||(null===(c=null===(r=null==t?void 0:t.next().find(".btn-outline[style='background:linear-gradient(135deg,#0ebac3,#09d261); color: white;']"))||void 0===r?void 0:r.parent())||void 0===c?void 0:c.attr("href"));(f||h)&&N.push({title:u,directLinks:f?[{title:"Movie",link:f,type:"movie"}]:[],episodesLink:h,quality:s})}),{title:B,synopsis:G,image:T,imdbId:S,type:U,linkList:N}}catch(e){return{title:"",synopsis:"",image:"",imdbId:"",type:"",linkList:[]}}});exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const headers = { + Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,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", + Cookie: "_lscache_vary=62abf8b96599676eb8ec211cffaeb8ff; ext_name=ojplmecpdpgccookcobabopnaifgidhf; cf_clearance=n4Y1XTKZ5TfIMBNQuAXzerwKpx0U35KoOm3imfT0GpU-1732097818-1.2.1.1-ZeAnEu.8D9TSZHYDoj7vwo1A1rpdKl304ZpaBn_QbAQOr211JFAb7.JRQU3EL2eIy1Dfl8HhYvH7_259.22lUz8gbchHcQ8hvfuQXMtFMCbqDBLzjNUZa9stuk.39l28IcPhH9Z2szsf3SGtNI1sAfo66Djt7sOReLK3lHw9UkJp7BdGqt6a2X9qAc8EsAI3lE480Tmt0fkHv14Oc30LSbPB_WwFmiqAki2W.Gv9hV7TN_QBFESleTDlXd.6KGflfd4.KwWF7rpSRo_cgoc9ALLLIafpxHVbe7_g5r7zvpml_Pj8fEL75fw.1GBuy16bciHBuB8s_kahuJYUnhtQFFgfTQl8_Gn6KeovBWx.PJ7nFv5sklHUfAyBVq3t30xKe8ZDydsQ_G.yipfj_In5GmmWcXGb6E4.bioDOwW_sKLtxwdTQt7Nu.RkILX_mKvXNpyLqflIVj8G7X5E8I.unw", + "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", +}; +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 { + const { axios, cheerio } = providerContext; + const url = link; + console.log("url", url); + const baseUrl = url.split("/").slice(0, 3).join("/"); + const response = yield axios.get(url, { + headers: Object.assign(Object.assign({}, headers), { Referer: baseUrl }), + }); + const $ = cheerio.load(response.data); + const infoContainer = $(".entry-content,.post-inner"); + const heading = infoContainer === null || infoContainer === void 0 ? void 0 : infoContainer.find("h3"); + const imdbId = + //@ts-ignore + ((_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]) || + ((_h = infoContainer.text().match(/tt\d+/g)) === null || _h === void 0 ? void 0 : _h[0]) || + ""; + // console.log(imdbId) + 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" + : "movie"; + // console.log(type); + // title + const titleRegex = /Name: (.+)/; + 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); + // synopsis + const synopsisNode = //@ts-ignore + (_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 : ""; + // console.log(synopsis); + // image + 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("//")) { + image = "https:" + image; + } + // console.log(image); + // console.log({title, synopsis, image, imdbId, type}); + /// Links + const hr = (_v = infoContainer === null || infoContainer === void 0 ? void 0 : infoContainer.first()) === null || _v === void 0 ? void 0 : _v.find("hr"); + const list = hr === null || hr === void 0 ? void 0 : hr.nextUntil("hr"); + const links = []; + list.each((index, element) => { + var _a, _b, _c, _d, _e, _f, _g, _h, _j; + element = $(element); + // title + const title = (element === null || element === void 0 ? void 0 : element.text()) || ""; + 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); + // movieLinks + const movieLinks = (element === null || element === void 0 ? void 0 : element.next().find(".dwd-button").text().toLowerCase().includes("download")) + ? (_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") + : ""; + // episode links + 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"); + console.log(title); + const episodesLink = (vcloudLinks + ? vcloudLinks + : (element === null || element === void 0 ? void 0 : element.next().find(".dwd-button").text().toLowerCase().includes("episode")) + ? (_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") + : "") || + ((_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")); + if (movieLinks || episodesLink) { + links.push({ + title, + directLinks: movieLinks + ? [{ title: "Movie", link: movieLinks, type: "movie" }] + : [], + episodesLink, + quality, + }); + } + }); + // console.log(links); + return { + title, + synopsis, + image, + imdbId, + type, + linkList: links, + }; + } + catch (error) { + console.log("getInfo error"); + console.error(error); + // ToastAndroid.show('No response', ToastAndroid.SHORT); + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "", + linkList: [], + }; + } +}); +exports.getMeta = getMeta; diff --git a/dist/vega/posts.js b/dist/vega/posts.js index 4dbe06a..6fd8591 100644 --- a/dist/vega/posts.js +++ b/dist/vega/posts.js @@ -1 +1,83 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,i,o){return new(i||(i=Promise))(function(a,n){function s(e){try{c(o.next(e))}catch(e){n(e)}}function r(e){try{c(o.throw(e))}catch(e){n(e)}}function c(e){var t;e.done?a(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(s,r)}c((o=o.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const headers={Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,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",Cookie:"_lscache_vary=62abf8b96599676eb8ec211cffaeb8ff; ext_name=ojplmecpdpgccookcobabopnaifgidhf; cf_clearance=n4Y1XTKZ5TfIMBNQuAXzerwKpx0U35KoOm3imfT0GpU-1732097818-1.2.1.1-ZeAnEu.8D9TSZHYDoj7vwo1A1rpdKl304ZpaBn_QbAQOr211JFAb7.JRQU3EL2eIy1Dfl8HhYvH7_259.22lUz8gbchHcQ8hvfuQXMtFMCbqDBLzjNUZa9stuk.39l28IcPhH9Z2szsf3SGtNI1sAfo66Djt7sOReLK3lHw9UkJp7BdGqt6a2X9qAc8EsAI3lE480Tmt0fkHv14Oc30LSbPB_WwFmiqAki2W.Gv9hV7TN_QBFESleTDlXd.6KGflfd4.KwWF7rpSRo_cgoc9ALLLIafpxHVbe7_g5r7zvpml_Pj8fEL75fw.1GBuy16bciHBuB8s_kahuJYUnhtQFFgfTQl8_Gn6KeovBWx.PJ7nFv5sklHUfAyBVq3t30xKe8ZDydsQ_G.yipfj_In5GmmWcXGb6E4.bioDOwW_sKLtxwdTQt7Nu.RkILX_mKvXNpyLqflIVj8G7X5E8I.unw","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"},getPosts=e=>__awaiter(void 0,[e],void 0,function*({filter:e,page:t,providerValue:i,signal:o,providerContext:a}){const{getBaseUrl:n,axios:s,cheerio:r}=a,c=yield n("Vega");return posts(c,`${c}/${e}/page/${t}/`,o,headers,s,r)});exports.getPosts=getPosts;const getSearchPosts=e=>__awaiter(void 0,[e],void 0,function*({searchQuery:e,page:t,providerValue:i,signal:o,providerContext:a}){const{getBaseUrl:n,axios:s,commonHeaders:r,cheerio:c}=a,l=yield n("Vega");return posts(l,`${l}/page/${t}/?s=${e}`,o,r,s,c)});function posts(e,t,i){return __awaiter(this,arguments,void 0,function*(e,t,i,o={},a,n){var s,r;try{const c=yield a.get(t,{headers:Object.assign(Object.assign({},o),{Referer:e}),signal:i}),l=n.load(c.data),d=[];return null===(r=null===(s=l(".blog-items,.post-list"))||void 0===s?void 0:s.children("article"))||void 0===r||r.each((e,t)=>{var i,o,a,n,s,r,c,v,u,p,f,g;const h={title:((null===(s=null===(n=null===(a=null===(o=null===(i=l(t))||void 0===i?void 0:i.find("a"))||void 0===o?void 0:o.attr("title"))||void 0===a?void 0:a.replace("Download",""))||void 0===n?void 0:n.match(/^(.*?)\s*\((\d{4})\)|^(.*?)\s*\((Season \d+)\)/))||void 0===s?void 0:s[0])||(null===(v=null===(c=null===(r=l(t))||void 0===r?void 0:r.find("a"))||void 0===c?void 0:c.attr("title"))||void 0===v?void 0:v.replace("Download",""))||(null===(p=null===(u=l(t))||void 0===u?void 0:u.find(".post-title").text())||void 0===p?void 0:p.replace("Download",""))||"").trim(),link:(null===(g=null===(f=l(t))||void 0===f?void 0:f.find("a"))||void 0===g?void 0:g.attr("href"))||"",image:l(t).find("a").find("img").attr("data-lazy-src")||l(t).find("a").find("img").attr("data-src")||l(t).find("a").find("img").attr("src")||""};h.image.startsWith("//")&&(h.image="https:"+h.image),d.push(h)}),d}catch(e){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const headers = { + Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,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", + Cookie: "_lscache_vary=62abf8b96599676eb8ec211cffaeb8ff; ext_name=ojplmecpdpgccookcobabopnaifgidhf; cf_clearance=n4Y1XTKZ5TfIMBNQuAXzerwKpx0U35KoOm3imfT0GpU-1732097818-1.2.1.1-ZeAnEu.8D9TSZHYDoj7vwo1A1rpdKl304ZpaBn_QbAQOr211JFAb7.JRQU3EL2eIy1Dfl8HhYvH7_259.22lUz8gbchHcQ8hvfuQXMtFMCbqDBLzjNUZa9stuk.39l28IcPhH9Z2szsf3SGtNI1sAfo66Djt7sOReLK3lHw9UkJp7BdGqt6a2X9qAc8EsAI3lE480Tmt0fkHv14Oc30LSbPB_WwFmiqAki2W.Gv9hV7TN_QBFESleTDlXd.6KGflfd4.KwWF7rpSRo_cgoc9ALLLIafpxHVbe7_g5r7zvpml_Pj8fEL75fw.1GBuy16bciHBuB8s_kahuJYUnhtQFFgfTQl8_Gn6KeovBWx.PJ7nFv5sklHUfAyBVq3t30xKe8ZDydsQ_G.yipfj_In5GmmWcXGb6E4.bioDOwW_sKLtxwdTQt7Nu.RkILX_mKvXNpyLqflIVj8G7X5E8I.unw", + "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", +}; +const getPosts = (_a) => __awaiter(void 0, [_a], void 0, function* ({ filter, page, providerValue, signal, providerContext, }) { + const { getBaseUrl, axios, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("Vega"); + console.log("vegaGetPosts baseUrl:", providerValue, baseUrl); + const url = `${baseUrl}/${filter}/page/${page}/`; + console.log("vegaGetPosts url:", url); + return posts(baseUrl, url, signal, headers, axios, cheerio); +}); +exports.getPosts = getPosts; +const getSearchPosts = (_a) => __awaiter(void 0, [_a], void 0, function* ({ searchQuery, page, providerValue, signal, providerContext, }) { + const { getBaseUrl, axios, commonHeaders, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("Vega"); + console.log("vegaGetPosts baseUrl:", providerValue, baseUrl); + const url = `${baseUrl}/page/${page}/?s=${searchQuery}`; + console.log("vegaGetPosts url:", url); + return posts(baseUrl, url, signal, commonHeaders, axios, cheerio); +}); +exports.getSearchPosts = getSearchPosts; +function posts(baseUrl_1, url_1, signal_1) { + return __awaiter(this, arguments, void 0, function* (baseUrl, url, signal, headers = {}, axios, cheerio) { + var _a, _b; + try { + const urlRes = yield axios.get(url, { + headers: Object.assign(Object.assign({}, headers), { Referer: baseUrl }), + signal, + }); + const $ = cheerio.load(urlRes.data); + 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) => { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; + const post = { + 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]) || + ((_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", "")) || + ((_k = (_j = $(element)) === null || _j === void 0 ? void 0 : _j.find(".post-title").text()) === null || _k === void 0 ? void 0 : _k.replace("Download", "")) || + "").trim(), + link: ((_m = (_l = $(element)) === null || _l === void 0 ? void 0 : _l.find("a")) === null || _m === void 0 ? void 0 : _m.attr("href")) || "", + 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; + } + posts.push(post); + }); + // console.log(posts); + return posts; + } + catch (error) { + console.error("vegaGetPosts error:", error); + return []; + } + }); +} diff --git a/dist/vega/stream.js b/dist/vega/stream.js index 84de674..71a2787 100644 --- a/dist/vega/stream.js +++ b/dist/vega/stream.js @@ -1 +1,103 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,a,n){return new(a||(a=Promise))(function(o,i){function c(e){try{r(n.next(e))}catch(e){i(e)}}function l(e){try{r(n.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?o(e.value):(t=e.value,t instanceof a?t:new a(function(e){e(t)})).then(c,l)}r((n=n.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=getStream;const headers={Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,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",Cookie:"_lscache_vary=62abf8b96599676eb8ec211cffaeb8ff; ext_name=ojplmecpdpgccookcobabopnaifgidhf; cf_clearance=n4Y1XTKZ5TfIMBNQuAXzerwKpx0U35KoOm3imfT0GpU-1732097818-1.2.1.1-ZeAnEu.8D9TSZHYDoj7vwo1A1rpdKl304ZpaBn_QbAQOr211JFAb7.JRQU3EL2eIy1Dfl8HhYvH7_259.22lUz8gbchHcQ8hvfuQXMtFMCbqDBLzjNUZa9stuk.39l28IcPhH9Z2szsf3SGtNI1sAfo66Djt7sOReLK3lHw9UkJp7BdGqt6a2X9qAc8EsAI3lE480Tmt0fkHv14Oc30LSbPB_WwFmiqAki2W.Gv9hV7TN_QBFESleTDlXd.6KGflfd4.KwWF7rpSRo_cgoc9ALLLIafpxHVbe7_g5r7zvpml_Pj8fEL75fw.1GBuy16bciHBuB8s_kahuJYUnhtQFFgfTQl8_Gn6KeovBWx.PJ7nFv5sklHUfAyBVq3t30xKe8ZDydsQ_G.yipfj_In5GmmWcXGb6E4.bioDOwW_sKLtxwdTQt7Nu.RkILX_mKvXNpyLqflIVj8G7X5E8I.unw","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"};function getStream(e){return __awaiter(this,arguments,void 0,function*({link:e,type:t,signal:a,providerContext:n}){var o,i,c,l;const{axios:r,cheerio:d,extractors:s}=n,{hubcloudExtracter:p}=s;try{const n=[];if("movie"===t){const t=(yield r(`${e}`,{headers:headers})).data;e=(t.match(/{const n=i(e).text(),o=i(e).parent().parent().next("h4").find("a").attr("href");o&&!n.includes("zip")&&r.push({title:n,link:o})}),r}catch(e){return[{title:"Server 1",link:t}]}})};exports.getEpisodes=getEpisodes; \ No newline at end of file +"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 }); +exports.getEpisodes = void 0; +const getEpisodes = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ url, providerContext, }) { + const { axios, cheerio } = providerContext; + try { + const res = yield axios.get(url); + const html = res.data; + let $ = cheerio.load(html); + const episodeLinks = []; + $('strong:contains("Episode"),strong:contains("1080"),strong:contains("720"),strong:contains("480")').map((i, element) => { + const title = $(element).text(); + const link = $(element) + .parent() + .parent() + .next("h4") + .find("a") + .attr("href"); + if (link && !title.includes("zip")) { + episodeLinks.push({ + title: title, + link, + }); + } + }); + return episodeLinks; + } + catch (err) { + return [ + { + title: "Server 1", + link: url, + }, + ]; + } + }); +}; +exports.getEpisodes = getEpisodes; diff --git a/dist/world4u/meta.js b/dist/world4u/meta.js index 2a4d7b1..5e9467b 100644 --- a/dist/world4u/meta.js +++ b/dist/world4u/meta.js @@ -1 +1,89 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))(function(o,r){function a(t){try{c(i.next(t))}catch(t){r(t)}}function s(t){try{c(i.throw(t))}catch(t){r(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(a,s)}c((i=i.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(t){return __awaiter(this,arguments,void 0,function*({link:t,providerContext:e}){var n;try{const{axios:i,cheerio:o}=e,r=t,a=(yield i.get(r)).data,s=o.load(a),c=s(".entry-content").text().toLocaleLowerCase().includes("movie name")?"movie":"series",d=(null===(n=s(".imdb_left").find("a").attr("href"))||void 0===n?void 0:n.split("/")[4])||"",p=s(".entry-content").find('strong:contains("Name")').children().remove().end().text().replace(":",""),l=s(".entry-content").find('p:contains("Synopsis"),p:contains("Plot"),p:contains("Story")').children().remove().end().text(),u=s(".wp-caption").find("img").attr("data-src")||s(".entry-content").find("img").attr("data-src")||"",v=[];return s(".my-button").map((t,e)=>{var n;const i=s(e).parent().parent().prev().text(),o=s(e).attr("href"),r=(null===(n=i.match(/\b(480p|720p|1080p|2160p)\b/i))||void 0===n?void 0:n[0])||"";o&&i&&v.push({title:i,episodesLink:"series"===c?o:"",directLinks:"movie"===c?[{link:o,title:i,type:"movie"}]:[],quality:r})}),{title:p,synopsis:l,image:u,imdbId:d,type:c,linkList:v}}catch(t){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta; \ No newline at end of file +"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 }); +exports.getMeta = void 0; +const getMeta = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link, providerContext, }) { + var _b; + try { + const { axios, cheerio } = providerContext; + const url = link; + const res = yield axios.get(url); + const data = res.data; + const $ = cheerio.load(data); + const type = $(".entry-content") + .text() + .toLocaleLowerCase() + .includes("movie name") + ? "movie" + : "series"; + const imdbId = ((_b = $(".imdb_left").find("a").attr("href")) === null || _b === void 0 ? void 0 : _b.split("/")[4]) || ""; + const title = $(".entry-content") + .find('strong:contains("Name")') + .children() + .remove() + .end() + .text() + .replace(":", ""); + const synopsis = $(".entry-content") + .find('p:contains("Synopsis"),p:contains("Plot"),p:contains("Story")') + .children() + .remove() + .end() + .text(); + const image = $(".wp-caption").find("img").attr("data-src") || + $(".entry-content").find("img").attr("data-src") || + ""; + const links = []; + $(".my-button").map((i, element) => { + var _a; + const title = $(element).parent().parent().prev().text(); + const episodesLink = $(element).attr("href"); + const quality = ((_a = title.match(/\b(480p|720p|1080p|2160p)\b/i)) === null || _a === void 0 ? void 0 : _a[0]) || ""; + if (episodesLink && title) { + links.push({ + title, + episodesLink: type === "series" ? episodesLink : "", + directLinks: type === "movie" + ? [ + { + link: episodesLink, + title, + type: "movie", + }, + ] + : [], + quality, + }); + } + }); + return { + title, + synopsis, + image, + imdbId, + type, + linkList: links, + }; + } + catch (err) { + return { + title: "", + synopsis: "", + image: "", + imdbId: "", + type: "movie", + linkList: [], + }; + } + }); +}; +exports.getMeta = getMeta; diff --git a/dist/world4u/posts.js b/dist/world4u/posts.js index ca5a266..ff42fcf 100644 --- a/dist/world4u/posts.js +++ b/dist/world4u/posts.js @@ -1 +1,63 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,r){return new(i||(i=Promise))(function(n,s){function o(t){try{c(r.next(t))}catch(t){s(t)}}function a(t){try{c(r.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i(function(t){t(e)})).then(o,a)}c((r=r.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSearchPosts=exports.getPosts=void 0;const getPosts=function(t){return __awaiter(this,arguments,void 0,function*({filter:t,page:e,signal:i,providerContext:r}){const{getBaseUrl:n,axios:s,cheerio:o}=r;return posts({url:`${(yield n("w4u"))+t}/page/${e}/`,signal:i,axios:s,cheerio:o})})};exports.getPosts=getPosts;const getSearchPosts=function(t){return __awaiter(this,arguments,void 0,function*({searchQuery:t,page:e,signal:i,providerContext:r}){const{getBaseUrl:n,axios:s,cheerio:o}=r;return posts({url:`${yield n("w4u")}/page/${e}/?s=${t}`,signal:i,axios:s,cheerio:o})})};function posts(t){return __awaiter(this,arguments,void 0,function*({url:t,signal:e,axios:i,cheerio:r}){try{const n=(yield i.get(t,{signal:e})).data,s=r.load(n),o=[];return s(".recent-posts").children().map((t,e)=>{const i=s(e).find(".post-thumb").find("a").attr("title"),r=s(e).find(".post-thumb").find("a").attr("href"),n=s(e).find(".post-thumb").find("img").attr("data-src")||s(e).find(".post-thumb").find("img").attr("src");i&&r&&n&&o.push({title:i.replace("Download","").trim(),link:r,image:n})}),o}catch(t){return[]}})}exports.getSearchPosts=getSearchPosts; \ No newline at end of file +"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 }); +exports.getSearchPosts = exports.getPosts = void 0; +const getPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ filter, page, + // providerValue, + signal, providerContext, }) { + const { getBaseUrl, axios, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("w4u"); + const url = `${baseUrl + filter}/page/${page}/`; + return posts({ url, signal, axios, cheerio }); + }); +}; +exports.getPosts = getPosts; +const getSearchPosts = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ searchQuery, page, + // providerValue, + signal, providerContext, }) { + const { getBaseUrl, axios, cheerio } = providerContext; + const baseUrl = yield getBaseUrl("w4u"); + const url = `${baseUrl}/page/${page}/?s=${searchQuery}`; + return posts({ url, signal, axios, cheerio }); + }); +}; +exports.getSearchPosts = getSearchPosts; +function posts(_a) { + return __awaiter(this, arguments, void 0, function* ({ url, signal, axios, cheerio, }) { + try { + const res = yield axios.get(url, { signal }); + const data = res.data; + const $ = cheerio.load(data); + const catalog = []; + $(".recent-posts") + .children() + .map((i, element) => { + const title = $(element).find(".post-thumb").find("a").attr("title"); + const link = $(element).find(".post-thumb").find("a").attr("href"); + const image = $(element).find(".post-thumb").find("img").attr("data-src") || + $(element).find(".post-thumb").find("img").attr("src"); + if (title && link && image) { + catalog.push({ + title: title.replace("Download", "").trim(), + link: link, + image: image, + }); + } + }); + return catalog; + } + catch (err) { + return []; + } + }); +} diff --git a/dist/world4u/stream.js b/dist/world4u/stream.js index 2f42b96..92e09b4 100644 --- a/dist/world4u/stream.js +++ b/dist/world4u/stream.js @@ -1 +1,198 @@ -"use strict";var __awaiter=this&&this.__awaiter||function(e,t,a,o){return new(a||(a=Promise))(function(r,n){function i(e){try{s(o.next(e))}catch(e){n(e)}}function d(e){try{s(o.throw(e))}catch(e){n(e)}}function s(e){var t;e.done?r(e.value):(t=e.value,t instanceof a?t:new a(function(e){e(t)})).then(i,d)}s((o=o.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0;const getStream=function(e){return __awaiter(this,arguments,void 0,function*({link:e,type:t,providerContext:a}){var o;const{axios:r,cheerio:n}=a,i={"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-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"};try{if("movie"===t){const t=(yield r.get(e,{headers:i})).data;e=n.load(t)('strong:contains("INSTANT")').parent().attr("href")||e}if(e.includes("fastilinks")){const t=(yield r.get(e,{headers:i})).data,a=n.load(t)('input[name="_csrf_token_645a83a41868941e4692aa31e7235f2"]').attr("value"),o=new FormData;o.append("_csrf_token_645a83a41868941e4692aa31e7235f2",a||"");const d=yield fetch(e,{method:"POST",headers:i,body:o}),s=yield d.text(),c=n.load(s);e=c('a:contains("mediafire")').attr("href")||c('a:contains("photolinx")').attr("href")||e}if(e.includes("photolinx")){const t=(yield r.get(e,{headers:i})).data,a=n.load(t),o=a("#generate_url").attr("data-token"),d={type:"DOWNLOAD_GENERATE",payload:{access_token:o,uid:a("#generate_url").attr("data-uid")}},s=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(d),method:"POST"}),c=yield s.json(),l=null==c?void 0:c.download_url;if(l){return[{server:"Photolinx",link:l,type:"mkv"}]}}const a=(yield r.get(e,{headers:i})).data,d=[];let s={download:""};try{const t=(null===(o=a.match(/formData\.append\('key',\s*'(\d+)'\);/))||void 0===o?void 0:o[1])||"",r=new FormData;r.append("key",t);const n=yield fetch(e,{method:"POST",headers:i,body:r});s=yield n.json()}catch(e){}let c=n.load(a);const l=c('h1:contains("Download")').find("a").attr("href")||c(".input.popsok").attr("href");if(l){const t=(yield r.head(l)).headers["content-type"];if(t&&t.includes("video"))return d.push({server:"Mediafire",link:l,type:"mkv"}),d;{const t=(yield r.get(l,{headers:{Referer:e}})).data,a=/window\.location\.href\s*=\s*['"]([^'"]+)['"]/,o=t.match(a);let n=o?o[1]:null;return n&&d.push({server:"Mediafire",link:n,type:"mkv"}),d}}const h=(yield r.head(s.download)).headers["content-type"];if(h&&h.includes("video"))return d.push({server:"Mediafire",link:s.download,type:"mkv"}),d;{const t=(yield r.get(s.download,{headers:{Referer:e}})).data,a=n.load(t)("#continue-btn").attr("href"),o=yield r.get("https://www.mediafire.com"+a),i=n.load(o.data)(".input.popsok").attr("href");i&&d.push({server:"Mediafire",link:i,type:"mkv"})}return d}catch(e){return[]}})};exports.getStream=getStream; \ No newline at end of file +"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 }); +exports.getStream = void 0; +const getStream = function (_a) { + return __awaiter(this, arguments, void 0, function* ({ link: url, type, providerContext, }) { + var _b; + const { axios, cheerio } = providerContext; + const headers = { + "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-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", + }; + try { + if (type === "movie") { + const linkRes = yield 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 = yield 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 = yield fetch(url, { + method: "POST", + headers: headers, + body: fastilinksFormData, + }); + const fastilinksHtml = yield 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 = 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({ + server: "Mediafire", + link: data.download, + type: "mkv", + }); + return streamLinks; + } + else { + const repairRes = yield axios.get(data.download, { + headers: { + 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 = yield 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;