mirror of
https://github.com/vega-org/vega-providers.git
synced 2026-06-19 21:17:45 +00:00
Compare commits
14 Commits
4be02caff7
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 3d90046acd | |||
| d82c9aeea4 | |||
| 8e6d16c7b6 | |||
| 0a2d6faf21 | |||
| c671054045 | |||
| cb36604e9a | |||
| 695dd89f4e | |||
| 3fedeb8816 | |||
| d744db3359 | |||
| bf84ba9a6d | |||
| 040912facd | |||
| 7722190674 | |||
| 4c4d0903c2 | |||
| 5459c15f96 |
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -1 +1 @@
|
||||
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),catalog_exports={};__export(catalog_exports,{catalog:()=>catalog,genres:()=>genres});var catalog=[{title:"Popular",filter:"/api/anime/search?query=&page=1&perPage=35&year=any&sort=favourites&season=any&format=any&status=any"},{title:"Trending",filter:"/api/anime/search?query=&page=1&perPage=35&year=any&sort=trending&season=any&format=any&status=any"},{title:"Top Rated",filter:"/api/anime/search?query=&page=1&perPage=35&year=any&sort=rating&season=any&format=any&status=any"},{title:"Favourites",filter:"/api/anime/search?query=&page=1&perPage=35&year=any&sort=updated&season=any&format=any&status=any"}],genres=[];exports.catalog=catalog,exports.genres=genres;
|
||||
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),catalog_exports={};__export(catalog_exports,{catalog:()=>catalog,genres:()=>genres});var catalog=[{title:"Popular",filter:"popular"},{title:"Trending",filter:"trending"},{title:"Top Rated",filter:"top"},{title:"Seasonal",filter:"seasonal"}],genres=[];exports.catalog=catalog,exports.genres=genres;
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
"use strict";var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues=(a,b)=>{for(var prop in b||(b={}))__hasOwnProp.call(b,prop)&&__defNormalProp(a,prop,b[prop]);if(__getOwnPropSymbols)for(var prop of __getOwnPropSymbols(b))__propIsEnum.call(b,prop)&&__defNormalProp(a,prop,b[prop]);return a},__spreadProps=(a,b)=>__defProps(a,__getOwnPropDescs(b)),__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),meta_exports={};__export(meta_exports,{getMeta:()=>getMeta});var getMeta=__name(function(_0){return __async(this,arguments,function*({link:link,providerContext:providerContext}){var _a,_b,_c,_d,_e,_f;try{const{axios:axios}=providerContext,baseUrl="https://backend.animetsu.to",url=`${baseUrl}/api/anime/info/${link}`,data=(yield axios.get(url,{headers:{Referer:"https://animetsu.to/"}})).data,meta={title:(null==(_a=data.title)?void 0:_a.english)||(null==(_b=data.title)?void 0:_b.romaji)||(null==(_c=data.title)?void 0:_c.native)||"",synopsis:data.description||"",image:(null==(_d=data.coverImage)?void 0:_d.extraLarge)||(null==(_e=data.coverImage)?void 0:_e.large)||(null==(_f=data.coverImage)?void 0:_f.medium)||"",tags:[null==data?void 0:data.format,null==data?void 0:data.status,...(null==data?void 0:data.genres)||[]].filter(Boolean),imdbId:"",type:"MOVIE"===data.format?"movie":"series"},linkList=[];try{const episodes=(yield axios.get(`${baseUrl}/api/anime/eps/${link}`,{headers:{Referer:"https://animetsu.to/"}})).data;if(episodes&&episodes.length>0){const directLinks=[];episodes.forEach(episode=>{const title=`Episode ${episode.number}`,episodeLink=`${link}:${episode.number}`;episodeLink&&title&&directLinks.push({title:title,link:episodeLink})}),linkList.push({title:meta.title,directLinks:directLinks})}else linkList.push({title:meta.title,directLinks:[{title:"Movie",link:`${link}:1`}]})}catch(episodeErr){console.error("Error fetching episodes:",episodeErr),linkList.push({title:meta.title,directLinks:[{title:meta.title,link:`${link}:1`}]})}return __spreadProps(__spreadValues({},meta),{linkList:linkList})}catch(err){return console.error("animetsu meta error:",err),{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})},"getMeta");exports.getMeta=getMeta;
|
||||
"use strict";var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues=(a,b)=>{for(var prop in b||(b={}))__hasOwnProp.call(b,prop)&&__defNormalProp(a,prop,b[prop]);if(__getOwnPropSymbols)for(var prop of __getOwnPropSymbols(b))__propIsEnum.call(b,prop)&&__defNormalProp(a,prop,b[prop]);return a},__spreadProps=(a,b)=>__defProps(a,__getOwnPropDescs(b)),__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),meta_exports={};__export(meta_exports,{getMeta:()=>getMeta});var getMeta=__name(function(_0){return __async(this,arguments,function*({link:link,providerContext:providerContext}){var _a,_b,_c,_d,_e,_f,_g;try{const{axios:axios,openWebView:openWebView,commonHeaders:commonHeaders}=providerContext,baseUrl="https://animetsu.net",url=`${baseUrl}/v2/api/anime/info/${link}`;let cookies,res;try{res=yield axios.get(url,{headers:__spreadProps(__spreadValues({},commonHeaders),{Referer:baseUrl})})}catch(error){if(403!==(null==(_a=error.response)?void 0:_a.status))throw error;{const wafResult=yield openWebView(baseUrl,{title:"Solve the captcha below and click done",description:"Required to bypass Animetsu anti-bot protection.",headers:__spreadProps(__spreadValues({},commonHeaders),{Referer:baseUrl}),force:!0,waitForCookie:"cf_clearance"});cookies=wafResult.cookies,res=yield axios.get(url,{headers:__spreadProps(__spreadValues({},commonHeaders),{Referer:baseUrl,Cookie:cookies})})}}const data=res.data,meta={title:(null==(_b=data.title)?void 0:_b.english)||(null==(_c=data.title)?void 0:_c.romaji)||(null==(_d=data.title)?void 0:_d.native)||"",synopsis:data.description||"",image:(null==(_e=data.cover_image)?void 0:_e.large)||(null==(_f=data.cover_image)?void 0:_f.medium)||(null==(_g=data.cover_image)?void 0:_g.small)||"",tags:[null==data?void 0:data.format,null==data?void 0:data.status,...(null==data?void 0:data.genres)||[]].filter(Boolean),imdbId:"",type:"MOVIE"===data.format?"movie":"series"},linkList=[],seasons=data.seasons;if(seasons&&seasons.length>0)yield Promise.all(seasons.map(season=>__async(null,null,function*(){var _a2,_b2,_c2;const seasonTitle=(null==(_a2=season.title)?void 0:_a2.english)||(null==(_b2=season.title)?void 0:_b2.romaji)||(null==(_c2=season.title)?void 0:_c2.native),directLinks=[];try{const episodes=(yield axios.get(`${baseUrl}/v2/api/anime/eps/${season.id}`,{headers:__spreadValues(__spreadProps(__spreadValues({},commonHeaders),{Referer:baseUrl}),cookies?{Cookie:cookies}:{})})).data;episodes&&episodes.length>0&&episodes.forEach(ep=>{directLinks.push({title:`Episode ${ep.ep_num}`,link:`${season.id}:${ep.ep_num}`})})}catch(e){const total=season.total_eps||1;for(let i=1;i<=total;i++)directLinks.push({title:`Episode ${i}`,link:`${season.id}:${i}`})}directLinks.length>0&&linkList.push({title:seasonTitle||meta.title,directLinks:directLinks})})));else{const total=data.total_eps||1,directLinks=[];for(let i=1;i<=total;i++)directLinks.push({title:1===total?"Movie":`Episode ${i}`,link:`${link}:${i}`});linkList.push({title:meta.title,directLinks:directLinks})}return __spreadProps(__spreadValues({},meta),{linkList:linkList})}catch(err){return console.error("animetsu meta error:",err),{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})},"getMeta");exports.getMeta=getMeta;
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),posts_exports={};__export(posts_exports,{getPosts:()=>getPosts,getSearchPosts:()=>getSearchPosts});var getPosts=__name(function(_0){return __async(this,arguments,function*({filter:filter,page:page,signal:signal,providerContext:providerContext}){const{axios:axios}=providerContext,url="https://backend.animetsu.to"+filter+"&page="+page.toString();return console.log("animetsuGetPosts url",url),posts({url:url.toString(),signal:signal,axios:axios})})},"getPosts"),getSearchPosts=__name(function(_0){return __async(this,arguments,function*({searchQuery:searchQuery,page:page,signal:signal,providerContext:providerContext}){const{axios:axios}=providerContext;return posts({url:`https://backend.animetsu.to/api/anime/search?query=${encodeURIComponent(searchQuery)}&page=${page}&perPage=35&year=any&sort=favourites&season=any&format=any&status=any`,signal:signal,axios:axios})})},"getSearchPosts");function posts(_0){return __async(this,arguments,function*({url:url,signal:signal,axios:axios}){var _a;try{const data=null==(_a=(yield axios.get(url,{signal:signal,headers:{Referer:"https://animetsu.to/"}})).data)?void 0:_a.results,catalog=[];return null==data||data.map(element=>{var _a2,_b,_c,_d,_e,_f,_g;const title=(null==(_a2=element.title)?void 0:_a2.english)||(null==(_b=element.title)?void 0:_b.romaji)||(null==(_c=element.title)?void 0:_c.native),link=null==(_d=element.id)?void 0:_d.toString(),image=(null==(_e=element.coverImage)?void 0:_e.large)||(null==(_f=element.coverImage)?void 0:_f.extraLarge)||(null==(_g=element.coverImage)?void 0:_g.medium);title&&link&&image&&catalog.push({title:title,link:link,image:image})}),catalog}catch(err){return console.error("animetsu error ",err),[]}})}__name(posts,"posts"),exports.getPosts=getPosts,exports.getSearchPosts=getSearchPosts;
|
||||
"use strict";var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues=(a,b)=>{for(var prop in b||(b={}))__hasOwnProp.call(b,prop)&&__defNormalProp(a,prop,b[prop]);if(__getOwnPropSymbols)for(var prop of __getOwnPropSymbols(b))__propIsEnum.call(b,prop)&&__defNormalProp(a,prop,b[prop]);return a},__spreadProps=(a,b)=>__defProps(a,__getOwnPropDescs(b)),__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),posts_exports={};__export(posts_exports,{getPosts:()=>getPosts,getSearchPosts:()=>getSearchPosts});var getPosts=__name(function(_0){return __async(this,arguments,function*({filter:filter,page:page,signal:signal,providerContext:providerContext}){if(page>1)return[];const{axios:axios,commonHeaders:commonHeaders}=providerContext;return posts({url:"https://animetsu.net/v2/api/anime/home",filter:filter,signal:signal,axios:axios,providerContext:providerContext,headers:commonHeaders})})},"getPosts"),getSearchPosts=__name(function(_0){return __async(this,arguments,function*({searchQuery:searchQuery,page:page,signal:signal,providerContext:providerContext}){const{axios:axios,commonHeaders:commonHeaders}=providerContext;return posts({url:`https://animetsu.net/v2/api/anime/search/?query=${encodeURIComponent(searchQuery)}`,signal:signal,axios:axios,providerContext:providerContext,headers:commonHeaders})})},"getSearchPosts");function posts(_0){return __async(this,arguments,function*({url:url,filter:filter,signal:signal,axios:axios,providerContext:providerContext,headers:headers}){var _a,_b,_c;const baseUrl="https://animetsu.net",{openWebView:openWebView}=providerContext;try{let cookies,res;try{res=yield axios.get(url,{signal:signal,headers:__spreadProps(__spreadValues({},headers),{Referer:baseUrl})})}catch(error){if(403!==(null==(_a=error.response)?void 0:_a.status))throw error;cookies=(yield openWebView(baseUrl,{title:"Solve the captcha below and click done",description:"Required to bypass Animetsu anti-bot protection.",headers:__spreadProps(__spreadValues({},headers),{Referer:baseUrl}),force:!0,waitForCookie:"cf_clearance"})).cookies,res=yield axios.get(url,{signal:signal,headers:__spreadProps(__spreadValues({},headers),{Referer:baseUrl,Cookie:cookies})})}const data=filter?null==(_b=res.data)?void 0:_b[filter]:(null==(_c=res.data)?void 0:_c.results)||res.data,catalog=[];return null==data||data.map(element=>{var _a2,_b2,_c2,_d,_e,_f,_g,_h,_i,_j,_k;const title=(null==(_a2=element.title)?void 0:_a2.english)||(null==(_b2=element.title)?void 0:_b2.romaji)||(null==(_c2=element.title)?void 0:_c2.native),link=null==(_d=element.id)?void 0:_d.toString(),image=(null==(_e=element.cover_image)?void 0:_e.large)||(null==(_f=element.cover_image)?void 0:_f.extraLarge)||(null==(_g=element.cover_image)?void 0:_g.medium)||(null==(_h=element.cover_image)?void 0:_h.small)||(null==(_i=element.coverImage)?void 0:_i.large)||(null==(_j=element.coverImage)?void 0:_j.extraLarge)||(null==(_k=element.coverImage)?void 0:_k.medium);title&&link&&image&&catalog.push({title:title,link:link,image:image})}),catalog}catch(err){return console.error("animetsu error ",err),[]}})}__name(posts,"posts"),exports.getPosts=getPosts,exports.getSearchPosts=getSearchPosts;
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -1 +1 @@
|
||||
"use strict";var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues=(a,b)=>{for(var prop in b||(b={}))__hasOwnProp.call(b,prop)&&__defNormalProp(a,prop,b[prop]);if(__getOwnPropSymbols)for(var prop of __getOwnPropSymbols(b))__propIsEnum.call(b,prop)&&__defNormalProp(a,prop,b[prop]);return a},__spreadProps=(a,b)=>__defProps(a,__getOwnPropDescs(b)),__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),posts_exports={};__export(posts_exports,{getPosts:()=>getPosts,getSearchPosts:()=>getSearchPosts});var 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=__name(function(_0){return __async(this,arguments,function*({filter:filter,page:page,signal:signal,providerContext:providerContext}){const{getBaseUrl:getBaseUrl}=providerContext;return posts({url:`${(yield getBaseUrl("hdhub"))+filter}/page/${page}/`,signal:signal,providerContext:providerContext})})},"getPosts"),getSearchPosts=__name(function(_0){return __async(this,arguments,function*({searchQuery:searchQuery,page:page,signal:signal,providerContext:providerContext}){const{getBaseUrl:getBaseUrl}=providerContext,baseUrl=yield getBaseUrl("hdhub");try{const today=(new Date).toISOString().slice(0,10),searchUrl=`https://search.hdhub4u.glass/collections/post/documents/search?${new URLSearchParams({q:searchQuery,query_by:"post_title,category,stars,director,imdb_id",query_by_weights:"4,2,2,2,4",sort_by:"sort_by_date:desc",limit:"15",highlight_fields:"none",use_cache:"true",page:String(page),analytics_tag:today}).toString()}`,res=yield fetch(searchUrl,{headers:__spreadProps(__spreadValues({},hdbHeaders),{Referer:baseUrl+"/",Accept:"application/json, text/plain, */*"}),signal:signal}),json=yield res.json(),hits=Array.isArray(null==json?void 0:json.hits)?json.hits:[],catalog=[];for(const hit of hits){const doc=(null==hit?void 0:hit.document)||{},title=String(doc.post_title||"").replace(/Download/gi,"").trim(),permalink=String(doc.permalink||""),image=String(doc.post_thumbnail||"");if(!title||!permalink)continue;const link=permalink.startsWith("http")?permalink:`${baseUrl}${permalink.startsWith("/")?"":"/"}${permalink}`;catalog.push({title:title,link:link,image:image})}return catalog}catch(err){return console.error("hdhubGetSearchPosts error ",err),[]}})},"getSearchPosts");function posts(_0){return __async(this,arguments,function*({url:url,signal:signal,providerContext:providerContext}){const{cheerio:cheerio}=providerContext;try{const res=yield fetch(url,{headers:hdbHeaders,signal:signal}),data=yield res.text(),$=cheerio.load(data),catalog=[];return $(".recent-movies").children().map((i,element)=>{const title=$(element).find("figure").find("img").attr("alt"),link=$(element).find("a").attr("href"),image=$(element).find("figure").find("img").attr("src");title&&link&&image&&catalog.push({title:title.replace("Download","").trim(),link:link,image:image})}),catalog}catch(err){return console.error("hdhubGetPosts error ",err),[]}})}__name(posts,"posts"),exports.getPosts=getPosts,exports.getSearchPosts=getSearchPosts;
|
||||
"use strict";var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues=(a,b)=>{for(var prop in b||(b={}))__hasOwnProp.call(b,prop)&&__defNormalProp(a,prop,b[prop]);if(__getOwnPropSymbols)for(var prop of __getOwnPropSymbols(b))__propIsEnum.call(b,prop)&&__defNormalProp(a,prop,b[prop]);return a},__spreadProps=(a,b)=>__defProps(a,__getOwnPropDescs(b)),__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),posts_exports={};__export(posts_exports,{getPosts:()=>getPosts,getSearchPosts:()=>getSearchPosts});var 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=__name(function(_0){return __async(this,arguments,function*({filter:filter,page:page,signal:signal,providerContext:providerContext}){const{getBaseUrl:getBaseUrl}=providerContext;return posts({url:`${(yield getBaseUrl("hdhub"))+filter}/page/${page}/`,signal:signal,providerContext:providerContext})})},"getPosts"),getSearchPosts=__name(function(_0){return __async(this,arguments,function*({searchQuery:searchQuery,page:page,signal:signal,providerContext:providerContext}){const{getBaseUrl:getBaseUrl}=providerContext,baseUrl=yield getBaseUrl("hdhub");try{const today=(new Date).toISOString().slice(0,10),searchUrl=`https://search.pingora.fyi/collections/post/documents/search?${new URLSearchParams({q:searchQuery,query_by:"post_title,category,stars,director,imdb_id",query_by_weights:"4,2,2,2,4",sort_by:"sort_by_date:desc",limit:"15",highlight_fields:"none",use_cache:"true",page:String(page),analytics_tag:today}).toString()}`,res=yield fetch(searchUrl,{headers:__spreadProps(__spreadValues({},hdbHeaders),{Referer:baseUrl+"/",Accept:"application/json, text/plain, */*"}),signal:signal}),json=yield res.json(),hits=Array.isArray(null==json?void 0:json.hits)?json.hits:[],catalog=[];for(const hit of hits){const doc=(null==hit?void 0:hit.document)||{},title=String(doc.post_title||"").replace(/Download/gi,"").trim(),permalink=String(doc.permalink||""),image=String(doc.post_thumbnail||"");if(!title||!permalink)continue;const link=permalink.startsWith("http")?permalink:`${baseUrl}${permalink.startsWith("/")?"":"/"}${permalink}`;catalog.push({title:title,link:link,image:image})}return catalog}catch(err){return console.error("hdhubGetSearchPosts error ",err),[]}})},"getSearchPosts");function posts(_0){return __async(this,arguments,function*({url:url,signal:signal,providerContext:providerContext}){const{cheerio:cheerio}=providerContext;try{const res=yield fetch(url,{headers:hdbHeaders,signal:signal}),data=yield res.text(),$=cheerio.load(data),catalog=[];return $(".recent-movies").children().map((i,element)=>{const title=$(element).find("figure").find("img").attr("alt"),link=$(element).find("a").attr("href"),image=$(element).find("figure").find("img").attr("src");title&&link&&image&&catalog.push({title:title.replace("Download","").trim(),link:link,image:image})}),catalog}catch(err){return console.error("hdhubGetPosts error ",err),[]}})}__name(posts,"posts"),exports.getPosts=getPosts,exports.getSearchPosts=getSearchPosts;
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -1 +1 @@
|
||||
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),catalog_exports={};__export(catalog_exports,{catalog:()=>catalog,genres:()=>genres});var catalog=[{title:"Trending",filter:"2"},{title:"Cinema",filter:"5"}],genres=[];exports.catalog=catalog,exports.genres=genres;
|
||||
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),catalog_exports={};__export(catalog_exports,{catalog:()=>catalog,genres:()=>genres});var catalog=[{title:"Trending",filter:"4"},{title:"Cinema",filter:"5"}],genres=[];exports.catalog=catalog,exports.genres=genres;
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),episodes_exports={};__export(episodes_exports,{getEpisodes:()=>getEpisodes});var getEpisodes=__name(function(_0){return __async(this,arguments,function*({url:url,providerContext:providerContext}){var _a;const{axios:axios,cheerio:cheerio}=providerContext;try{const episodeLinks=[],response=yield fetch("https://dob-worker.8man.workers.dev",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:url,method:"GET"})}),data=yield response.json();return((null==(_a=null==data?void 0:data.data)?void 0:_a.list)||[]).forEach(item=>{const seriesTitle=(null==item?void 0:item.ep)?`S-${null==item?void 0:item.se} E-${null==item?void 0:item.ep}`:(null==item?void 0:item.title)||"",episodesLink=(null==item?void 0:item.resourceLink)||"";episodesLink&&episodeLinks.push({title:seriesTitle.trim(),link:JSON.stringify({url:episodesLink,title:seriesTitle.trim()})})}),episodeLinks}catch(err){return console.error(err),[]}})},"getEpisodes");exports.getEpisodes=getEpisodes;
|
||||
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),episodes_exports={};__export(episodes_exports,{getEpisodes:()=>getEpisodes});var getEpisodes=__name(function(_0){return __async(this,arguments,function*({url:url,providerContext:providerContext}){var _a;const{axios:axios,cheerio:cheerio}=providerContext;try{const episodeLinks=[],response=yield fetch("https://dob-worker.1proxy.workers.dev",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:url,method:"GET"})}),data=yield response.json();return((null==(_a=null==data?void 0:data.data)?void 0:_a.list)||[]).forEach(item=>{const seriesTitle=(null==item?void 0:item.ep)?`S-${null==item?void 0:item.se} E-${null==item?void 0:item.ep}`:(null==item?void 0:item.title)||"",episodesLink=(null==item?void 0:item.resourceLink)||"";episodesLink&&episodeLinks.push({title:seriesTitle.trim(),link:JSON.stringify({url:episodesLink,title:seriesTitle.trim()})})}),episodeLinks}catch(err){return console.error(err),[]}})},"getEpisodes");exports.getEpisodes=getEpisodes;
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),meta_exports={};__export(meta_exports,{getMeta:()=>getMeta});var getMeta=__name(function(_0){return __async(this,arguments,function*({link:link,providerContext:providerContext}){var _a,_b,_c;try{const{axios:axios,cheerio:cheerio,getBaseUrl:getBaseUrl}=providerContext,baseUrl=yield getBaseUrl("movieBox"),links=[],response=yield fetch("https://dob-worker.8man.workers.dev",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:link,method:"GET"})}),data=(yield response.json()).data;console.log("data",data);const title=((null==data?void 0:data.title)||"").replace(/\s*\[.*?\]\s*$/,""),synopsis=(null==data?void 0:data.description)||"",image=(null==(_a=null==data?void 0:data.cover)?void 0:_a.url)||"",rating=(null==data?void 0:data.imdbRatingValue)||"",tags=(null==(_c=null==(_b=null==data?void 0:data.genre)?void 0:_b.split(","))?void 0:_c.map(tag=>tag.trim()))||[],dubs=(null==data?void 0:data.dubs)||[];return null==dubs||dubs.forEach(dub=>{const link2={title:null==dub?void 0:dub.lanName,episodesLink:`${baseUrl}/wefeed-mobile-bff/subject-api/resource?subjectId=${null==dub?void 0:dub.subjectId}&page=1&perPage=20&all=0&startPosition=1&endPosition=1&pagerMode=0&resolution=1080&se=1&epFrom=1&epTo=1`};links.push(link2)}),console.log("meta",{title:title,synopsis:synopsis,image:image,rating:rating,tags:tags,links:links}),{title:title,synopsis:synopsis,image:image,rating:rating,tags:tags,imdbId:"",type:"movie",linkList:links}}catch(err){return console.error(err),{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})},"getMeta");exports.getMeta=getMeta;
|
||||
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),meta_exports={};__export(meta_exports,{getMeta:()=>getMeta});var getMeta=__name(function(_0){return __async(this,arguments,function*({link:link,providerContext:providerContext}){var _a,_b,_c;try{const{axios:axios,cheerio:cheerio,getBaseUrl:getBaseUrl}=providerContext,links=[],response=yield fetch("https://dob-worker.1proxy.workers.dev",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:link,method:"GET"})}),data=(yield response.json()).data;console.log("data",data);const title=((null==data?void 0:data.title)||"").replace(/\s*\[.*?\]\s*$/,""),synopsis=(null==data?void 0:data.description)||"",image=(null==(_a=null==data?void 0:data.cover)?void 0:_a.url)||"",rating=(null==data?void 0:data.imdbRatingValue)||"",tags=(null==(_c=null==(_b=null==data?void 0:data.genre)?void 0:_b.split(","))?void 0:_c.map(tag=>tag.trim()))||[],dubs=(null==data?void 0:data.dubs)||[];return null==dubs||dubs.forEach(dub=>{const link2={title:null==dub?void 0:dub.lanName,episodesLink:`/wefeed-mobile-bff/subject-api/resource?subjectId=${null==dub?void 0:dub.subjectId}&page=1&perPage=20&all=0&startPosition=1&endPosition=1&pagerMode=0&resolution=1080&se=1&epFrom=1&epTo=1`};links.push(link2)}),console.log("meta",{title:title,synopsis:synopsis,image:image,rating:rating,tags:tags,links:links}),{title:title,synopsis:synopsis,image:image,rating:rating,tags:tags,imdbId:"",type:"movie",linkList:links}}catch(err){return console.error(err),{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})},"getMeta");exports.getMeta=getMeta;
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),posts_exports={};__export(posts_exports,{getPosts:()=>getPosts,getSearchPosts:()=>getSearchPosts});var getPosts=__name(function(_0){return __async(this,arguments,function*({filter:filter,page:page,signal:signal,providerContext:providerContext}){var _a,_b,_c,_d;const posts=[],{getBaseUrl:getBaseUrl}=providerContext;if(page>1)return posts;const baseUrl=yield getBaseUrl("movieBox");console.log("baseUrl",baseUrl);const url=`${baseUrl}/wefeed-mobile-bff/tab-operating?page=3&tabId=0&version=2fe0d7c224603ff7b0df294b46d3b84b`,response=yield fetch("https://dob-worker.8man.workers.dev",{signal:signal,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:url,method:"GET"})}),data=yield response.json(),list=null==(_c=null==(_b=null==(_a=null==data?void 0:data.data)?void 0:_a.items)?void 0:_b[parseInt(filter)])?void 0:_c.subjects;console.log("list",list);for(const item of list){const post={image:null==item?void 0:item.cover.url,title:null==(_d=null==item?void 0:item.title)?void 0:_d.replace(/\s*\[.*?\]\s*$/,""),link:`${baseUrl}/wefeed-mobile-bff/subject-api/get?subjectId=${null==item?void 0:item.subjectId}`};posts.push(post)}return posts})},"getPosts"),getSearchPosts=__name(function(_0){return __async(this,arguments,function*({searchQuery:searchQuery,page:page,signal:signal,providerContext:providerContext}){var _a,_b,_c;const{getBaseUrl:getBaseUrl,axios:axios,cheerio:cheerio}=providerContext,baseUrl=yield getBaseUrl("movieBox"),url=`${baseUrl}/wefeed-mobile-bff/subject-api/search/v2`;if(page>1)return[];const response=yield fetch("https://dob-worker.8man.workers.dev",{signal:signal,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:url,method:"POST",body:{page:1,perPage:20,keyword:searchQuery,tabId:"Movie"}})}),data=yield response.json();return((null==(_c=null==(_b=null==(_a=null==data?void 0:data.data)?void 0:_a.results)?void 0:_b[0])?void 0:_c.subjects)||[]).map(item=>{var _a2;return{image:null==(_a2=null==item?void 0:item.cover)?void 0:_a2.url,title:null==item?void 0:item.title,link:`${baseUrl}/wefeed-mobile-bff/subject-api/get?subjectId=${null==item?void 0:item.subjectId}`}})})},"getSearchPosts");exports.getPosts=getPosts,exports.getSearchPosts=getSearchPosts;
|
||||
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),__async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),posts_exports={};__export(posts_exports,{getPosts:()=>getPosts,getSearchPosts:()=>getSearchPosts});var getPosts=__name(function(_0){return __async(this,arguments,function*({filter:filter,page:page,signal:signal,providerContext:providerContext}){var _a,_b,_c,_d;const posts=[],{getBaseUrl:getBaseUrl}=providerContext;if(page>1)return posts;const response=yield fetch("https://dob-worker.1proxy.workers.dev",{signal:signal,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:"/wefeed-mobile-bff/tab-operating?page=3&tabId=0&version=2fe0d7c224603ff7b0df294b46d3b84b",method:"GET"})}),data=yield response.json(),items=(null==(_a=null==data?void 0:data.data)?void 0:_a.items)||[],filterIndex=Number.parseInt(filter,10);let list=null==(_b=null==items?void 0:items[filterIndex])?void 0:_b.subjects;Array.isArray(list)&&0!==list.length||(list=(null==(_c=null==items?void 0:items.find(item=>Array.isArray(null==item?void 0:item.subjects)&&item.subjects.length>0))?void 0:_c.subjects)||[]);for(const item of list){const post={image:null==item?void 0:item.cover.url,title:null==(_d=null==item?void 0:item.title)?void 0:_d.replace(/\s*\[.*?\]\s*$/,""),link:`/wefeed-mobile-bff/subject-api/get?subjectId=${null==item?void 0:item.subjectId}`};posts.push(post)}return posts})},"getPosts"),getSearchPosts=__name(function(_0){return __async(this,arguments,function*({searchQuery:searchQuery,page:page,signal:signal,providerContext:providerContext}){var _a,_b,_c;const{getBaseUrl:getBaseUrl,axios:axios,cheerio:cheerio}=providerContext,baseUrl=yield getBaseUrl("movieBox"),url=`${baseUrl}/wefeed-mobile-bff/subject-api/search/v2`;if(page>1)return[];const response=yield fetch("https://dob-worker.8man.workers.dev",{signal:signal,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:url,method:"POST",body:{page:1,perPage:20,keyword:searchQuery,tabId:"Movie"}})}),data=yield response.json();return((null==(_c=null==(_b=null==(_a=null==data?void 0:data.data)?void 0:_a.results)?void 0:_b[0])?void 0:_c.subjects)||[]).map(item=>{var _a2;return{image:null==(_a2=null==item?void 0:item.cover)?void 0:_a2.url,title:null==item?void 0:item.title,link:`${baseUrl}/wefeed-mobile-bff/subject-api/get?subjectId=${null==item?void 0:item.subjectId}`}})})},"getSearchPosts");exports.getPosts=getPosts,exports.getSearchPosts=getSearchPosts;
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+17
-17
@@ -2,7 +2,7 @@
|
||||
{
|
||||
"display_name": "VegaMovies",
|
||||
"value": "vega",
|
||||
"version": "2.8",
|
||||
"version": "2.9",
|
||||
"icon": "",
|
||||
"type": "global",
|
||||
"disabled": false
|
||||
@@ -18,7 +18,7 @@
|
||||
{
|
||||
"display_name": "MoviesDrive",
|
||||
"value": "drive",
|
||||
"version": "2.1",
|
||||
"version": "2.2",
|
||||
"icon": "",
|
||||
"type": "global",
|
||||
"disabled": false
|
||||
@@ -34,7 +34,7 @@
|
||||
{
|
||||
"display_name": "4khdHub",
|
||||
"value": "4khdhub",
|
||||
"version": "2.2",
|
||||
"version": "2.4",
|
||||
"icon": "",
|
||||
"type": "global",
|
||||
"disabled": false
|
||||
@@ -42,7 +42,7 @@
|
||||
{
|
||||
"display_name": "Cinewood",
|
||||
"value": "1cinevood",
|
||||
"version": "1.4",
|
||||
"version": "1.5",
|
||||
"icon": "",
|
||||
"type": "global",
|
||||
"disabled": false
|
||||
@@ -58,7 +58,7 @@
|
||||
{
|
||||
"display_name": "KatMoviesHd",
|
||||
"value": "katmovies",
|
||||
"version": "1.6",
|
||||
"version": "1.7",
|
||||
"icon": "",
|
||||
"type": "global",
|
||||
"disabled": false
|
||||
@@ -90,7 +90,7 @@
|
||||
{
|
||||
"display_name": "CinemaLuxe",
|
||||
"value": "cinemaLuxe",
|
||||
"version": "1.7",
|
||||
"version": "1.8",
|
||||
"icon": "",
|
||||
"type": "global",
|
||||
"disabled": true
|
||||
@@ -106,15 +106,15 @@
|
||||
{
|
||||
"display_name": "MovieBox",
|
||||
"value": "movieBox",
|
||||
"version": "1.2",
|
||||
"version": "2.0",
|
||||
"icon": "",
|
||||
"type": "global",
|
||||
"disabled": true
|
||||
"disabled": false
|
||||
},
|
||||
{
|
||||
"display_name": "Movies4U",
|
||||
"value": "movies4u",
|
||||
"version": "1.5",
|
||||
"version": "1.7",
|
||||
"icon": "",
|
||||
"type": "global",
|
||||
"disabled": false
|
||||
@@ -130,7 +130,7 @@
|
||||
{
|
||||
"display_name": "Zeefliz",
|
||||
"value": "zeefliz",
|
||||
"version": "1.5",
|
||||
"version": "1.6",
|
||||
"icon": "",
|
||||
"type": "global",
|
||||
"disabled": false
|
||||
@@ -138,7 +138,7 @@
|
||||
{
|
||||
"display_name": "KatMovieFix",
|
||||
"value": "katMovieFix",
|
||||
"version": "1.6",
|
||||
"version": "1.7",
|
||||
"icon": "",
|
||||
"type": "global",
|
||||
"disabled": true
|
||||
@@ -170,7 +170,7 @@
|
||||
{
|
||||
"display_name": "HdHub4u",
|
||||
"value": "hdhub4u",
|
||||
"version": "2.0",
|
||||
"version": "2.1",
|
||||
"icon": "",
|
||||
"type": "global",
|
||||
"disabled": false
|
||||
@@ -258,10 +258,10 @@
|
||||
{
|
||||
"display_name": "Animetsu",
|
||||
"value": "animetsu",
|
||||
"version": "1.1",
|
||||
"version": "1.7",
|
||||
"icon": "",
|
||||
"type": "english",
|
||||
"disabled": true
|
||||
"disabled": false
|
||||
},
|
||||
{
|
||||
"display_name": "TokyoInsider",
|
||||
@@ -290,7 +290,7 @@
|
||||
{
|
||||
"display_name": "RogMovies",
|
||||
"value": "luxMovies",
|
||||
"version": "2.3",
|
||||
"version": "2.5",
|
||||
"icon": "",
|
||||
"type": "india",
|
||||
"disabled": false
|
||||
@@ -314,7 +314,7 @@
|
||||
{
|
||||
"display_name": "SkyMovieHD",
|
||||
"value": "skyMovieHD",
|
||||
"version": "1.6",
|
||||
"version": "1.7",
|
||||
"icon": "",
|
||||
"type": "global",
|
||||
"disabled": true
|
||||
@@ -322,7 +322,7 @@
|
||||
{
|
||||
"display_name": "Joya9tv",
|
||||
"value": "Joya9tv",
|
||||
"version": "1.5",
|
||||
"version": "1.7",
|
||||
"icon": "",
|
||||
"type": "india",
|
||||
"disabled": false
|
||||
|
||||
Generated
-7
@@ -11,7 +11,6 @@
|
||||
"dependencies": {
|
||||
"axios": "^1.10.0",
|
||||
"cheerio": "^1.1.0",
|
||||
"react-native-aes-crypto": "^3.2.1",
|
||||
"rimraf": "^6.0.1",
|
||||
"zod": "^4.0.2"
|
||||
},
|
||||
@@ -2462,12 +2461,6 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-native-aes-crypto": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/react-native-aes-crypto/-/react-native-aes-crypto-3.2.1.tgz",
|
||||
"integrity": "sha512-v7KDt1I2UqYwRJRFeJrB8zABQuUsawCyWLK+h5AF2aZqsrsIaR/+DaZrqCetR9QvYRI+oEVsrwBUv9xYXhfCBQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/readdirp": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
||||
|
||||
@@ -34,7 +34,7 @@ export async function getStream({
|
||||
try {
|
||||
const streamLinks: Stream[] = [];
|
||||
console.log("dotlink", link);
|
||||
if (type === "movie") {
|
||||
if (!link.includes("cloud")) {
|
||||
// vlink
|
||||
const dotlinkRes = await fetch(`${link}`, { headers });
|
||||
const dotlinkText = await dotlinkRes.text();
|
||||
|
||||
@@ -1,23 +1,19 @@
|
||||
export const catalog = [
|
||||
{
|
||||
title: "Popular",
|
||||
filter:
|
||||
"/api/anime/search?query=&page=1&perPage=35&year=any&sort=favourites&season=any&format=any&status=any",
|
||||
filter: "popular",
|
||||
},
|
||||
{
|
||||
title: "Trending",
|
||||
filter:
|
||||
"/api/anime/search?query=&page=1&perPage=35&year=any&sort=trending&season=any&format=any&status=any",
|
||||
filter: "trending",
|
||||
},
|
||||
{
|
||||
title: "Top Rated",
|
||||
filter:
|
||||
"/api/anime/search?query=&page=1&perPage=35&year=any&sort=rating&season=any&format=any&status=any",
|
||||
filter: "top",
|
||||
},
|
||||
{
|
||||
title: "Favourites",
|
||||
filter:
|
||||
"/api/anime/search?query=&page=1&perPage=35&year=any&sort=updated&season=any&format=any&status=any",
|
||||
title: "Seasonal",
|
||||
filter: "seasonal",
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
+78
-52
@@ -8,15 +8,33 @@ export const getMeta = async function ({
|
||||
providerContext: ProviderContext;
|
||||
}): Promise<Info> {
|
||||
try {
|
||||
const { axios } = providerContext;
|
||||
const baseUrl = "https://backend.animetsu.to";
|
||||
const url = `${baseUrl}/api/anime/info/${link}`;
|
||||
const { axios, openWebView, commonHeaders } = providerContext;
|
||||
const baseUrl = "https://animetsu.net";
|
||||
const url = `${baseUrl}/v2/api/anime/info/${link}`;
|
||||
|
||||
const res = await axios.get(url, {
|
||||
headers: {
|
||||
Referer: "https://animetsu.to/",
|
||||
},
|
||||
let cookies: string | undefined;
|
||||
let res: any;
|
||||
try {
|
||||
res = await axios.get(url, {
|
||||
headers: { ...commonHeaders, Referer: baseUrl },
|
||||
});
|
||||
} catch (error: any) {
|
||||
if (error.response?.status === 403) {
|
||||
const wafResult = await openWebView(baseUrl, {
|
||||
title: "Solve the captcha below and click done",
|
||||
description: "Required to bypass Animetsu anti-bot protection.",
|
||||
headers: { ...commonHeaders, Referer: baseUrl },
|
||||
force: true,
|
||||
waitForCookie: "cf_clearance",
|
||||
});
|
||||
cookies = wafResult.cookies;
|
||||
res = await axios.get(url, {
|
||||
headers: { ...commonHeaders, Referer: baseUrl, Cookie: cookies },
|
||||
});
|
||||
} else {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
const data = res.data;
|
||||
|
||||
const meta = {
|
||||
@@ -24,12 +42,12 @@ export const getMeta = async function ({
|
||||
data.title?.english || data.title?.romaji || data.title?.native || "",
|
||||
synopsis: data.description || "",
|
||||
image:
|
||||
data.coverImage?.extraLarge ||
|
||||
data.coverImage?.large ||
|
||||
data.coverImage?.medium ||
|
||||
data.cover_image?.large ||
|
||||
data.cover_image?.medium ||
|
||||
data.cover_image?.small ||
|
||||
"",
|
||||
tags: [data?.format, data?.status, ...(data?.genres || [])].filter(
|
||||
Boolean
|
||||
Boolean,
|
||||
),
|
||||
imdbId: "",
|
||||
type: data.format === "MOVIE" ? "movie" : "series",
|
||||
@@ -37,59 +55,67 @@ export const getMeta = async function ({
|
||||
|
||||
const linkList: Link[] = [];
|
||||
|
||||
// Get episodes data
|
||||
try {
|
||||
const episodesRes = await axios.get(`${baseUrl}/api/anime/eps/${link}`, {
|
||||
headers: {
|
||||
Referer: "https://animetsu.to/",
|
||||
},
|
||||
});
|
||||
const episodes = episodesRes.data;
|
||||
|
||||
if (episodes && episodes.length > 0) {
|
||||
const seasons = data.seasons;
|
||||
if (seasons && seasons.length > 0) {
|
||||
await Promise.all(
|
||||
seasons.map(async (season: any) => {
|
||||
const seasonTitle =
|
||||
season.title?.english ||
|
||||
season.title?.romaji ||
|
||||
season.title?.native;
|
||||
const directLinks: Link["directLinks"] = [];
|
||||
|
||||
episodes.forEach((episode: any) => {
|
||||
const title = `Episode ${episode.number}`;
|
||||
const episodeLink = `${link}:${episode.number}`;
|
||||
|
||||
if (episodeLink && title) {
|
||||
try {
|
||||
const epsRes = await axios.get(
|
||||
`${baseUrl}/v2/api/anime/eps/${season.id}`,
|
||||
{
|
||||
headers: {
|
||||
...commonHeaders,
|
||||
Referer: baseUrl,
|
||||
...(cookies ? { Cookie: cookies } : {}),
|
||||
},
|
||||
},
|
||||
);
|
||||
const episodes = epsRes.data;
|
||||
if (episodes && episodes.length > 0) {
|
||||
episodes.forEach((ep: any) => {
|
||||
directLinks.push({
|
||||
title,
|
||||
link: episodeLink,
|
||||
title: `Episode ${ep.ep_num}`,
|
||||
link: `${season.id}:${ep.ep_num}`,
|
||||
});
|
||||
});
|
||||
}
|
||||
} catch {
|
||||
// fallback: use total_eps count
|
||||
const total = season.total_eps || 1;
|
||||
for (let i = 1; i <= total; i++) {
|
||||
directLinks.push({
|
||||
title: `Episode ${i}`,
|
||||
link: `${season.id}:${i}`,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (directLinks.length > 0) {
|
||||
linkList.push({
|
||||
title: meta.title,
|
||||
directLinks: directLinks,
|
||||
});
|
||||
} else {
|
||||
// Movie case - single episode
|
||||
linkList.push({
|
||||
title: meta.title,
|
||||
directLinks: [
|
||||
{
|
||||
title: "Movie",
|
||||
link: `${link}:1`,
|
||||
},
|
||||
],
|
||||
title: seasonTitle || meta.title,
|
||||
directLinks,
|
||||
});
|
||||
}
|
||||
} catch (episodeErr) {
|
||||
console.error("Error fetching episodes:", episodeErr);
|
||||
// Fallback for movie or single episode
|
||||
linkList.push({
|
||||
title: meta.title,
|
||||
directLinks: [
|
||||
{
|
||||
title: meta.title,
|
||||
link: `${link}:1`,
|
||||
},
|
||||
],
|
||||
}),
|
||||
);
|
||||
} else {
|
||||
// Movie or single-season fallback
|
||||
const total = data.total_eps || 1;
|
||||
const directLinks: Link["directLinks"] = [];
|
||||
for (let i = 1; i <= total; i++) {
|
||||
directLinks.push({
|
||||
title: total === 1 ? "Movie" : `Episode ${i}`,
|
||||
link: `${link}:${i}`,
|
||||
});
|
||||
}
|
||||
linkList.push({ title: meta.title, directLinks });
|
||||
}
|
||||
|
||||
return {
|
||||
...meta,
|
||||
|
||||
+57
-16
@@ -12,14 +12,21 @@ export const getPosts = async function ({
|
||||
signal: AbortSignal;
|
||||
providerContext: ProviderContext;
|
||||
}): Promise<Post[]> {
|
||||
const { axios } = providerContext;
|
||||
const baseUrl = "https://backend.animetsu.to";
|
||||
if (page > 1) {
|
||||
return [];
|
||||
}
|
||||
const { axios, commonHeaders } = providerContext;
|
||||
const baseUrl = "https://animetsu.net";
|
||||
const url = `${baseUrl}/v2/api/anime/home`;
|
||||
|
||||
// Parse filter to modify page parameter
|
||||
const url = baseUrl + filter + "&page=" + page.toString();
|
||||
console.log("animetsuGetPosts url", url);
|
||||
|
||||
return posts({ url: url.toString(), signal, axios });
|
||||
return posts({
|
||||
url,
|
||||
filter,
|
||||
signal,
|
||||
axios,
|
||||
providerContext,
|
||||
headers: commonHeaders,
|
||||
});
|
||||
};
|
||||
|
||||
export const getSearchPosts = async function ({
|
||||
@@ -34,32 +41,62 @@ export const getSearchPosts = async function ({
|
||||
signal: AbortSignal;
|
||||
providerContext: ProviderContext;
|
||||
}): Promise<Post[]> {
|
||||
const { axios } = providerContext;
|
||||
const baseUrl = "https://backend.animetsu.to";
|
||||
const url = `${baseUrl}/api/anime/search?query=${encodeURIComponent(
|
||||
searchQuery
|
||||
)}&page=${page}&perPage=35&year=any&sort=favourites&season=any&format=any&status=any`;
|
||||
const { axios, commonHeaders } = providerContext;
|
||||
const baseUrl = "https://animetsu.net";
|
||||
const url = `${baseUrl}/v2/api/anime/search/?query=${encodeURIComponent(
|
||||
searchQuery,
|
||||
)}`;
|
||||
|
||||
return posts({ url, signal, axios });
|
||||
return posts({ url, signal, axios, providerContext, headers: commonHeaders });
|
||||
};
|
||||
|
||||
async function posts({
|
||||
url,
|
||||
filter,
|
||||
signal,
|
||||
axios,
|
||||
providerContext,
|
||||
headers,
|
||||
}: {
|
||||
url: string;
|
||||
filter?: string;
|
||||
signal: AbortSignal;
|
||||
axios: ProviderContext["axios"];
|
||||
providerContext: ProviderContext;
|
||||
headers?: Record<string, string>;
|
||||
}): Promise<Post[]> {
|
||||
const baseUrl = "https://animetsu.net";
|
||||
const { openWebView } = providerContext;
|
||||
try {
|
||||
const res = await axios.get(url, {
|
||||
let cookies: string | undefined;
|
||||
let res: any;
|
||||
try {
|
||||
res = await axios.get(url, {
|
||||
signal,
|
||||
headers: {
|
||||
Referer: "https://animetsu.to/",
|
||||
...headers,
|
||||
Referer: baseUrl,
|
||||
},
|
||||
});
|
||||
const data = res.data?.results;
|
||||
} catch (error: any) {
|
||||
if (error.response?.status === 403) {
|
||||
const wafResult = await openWebView(baseUrl, {
|
||||
title: "Solve the captcha below and click done",
|
||||
description: "Required to bypass Animetsu anti-bot protection.",
|
||||
headers: { ...headers, Referer: baseUrl },
|
||||
force: true,
|
||||
waitForCookie: "cf_clearance",
|
||||
});
|
||||
cookies = wafResult.cookies;
|
||||
res = await axios.get(url, {
|
||||
signal,
|
||||
headers: { ...headers, Referer: baseUrl, Cookie: cookies },
|
||||
});
|
||||
} else {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
const data = filter ? res.data?.[filter] : res.data?.results || res.data;
|
||||
const catalog: Post[] = [];
|
||||
|
||||
data?.map((element: any) => {
|
||||
@@ -69,6 +106,10 @@ async function posts({
|
||||
element.title?.native;
|
||||
const link = element.id?.toString();
|
||||
const image =
|
||||
element.cover_image?.large ||
|
||||
element.cover_image?.extraLarge ||
|
||||
element.cover_image?.medium ||
|
||||
element.cover_image?.small ||
|
||||
element.coverImage?.large ||
|
||||
element.coverImage?.extraLarge ||
|
||||
element.coverImage?.medium;
|
||||
|
||||
+102
-74
@@ -8,8 +8,27 @@ export const getStream = async function ({
|
||||
providerContext: ProviderContext;
|
||||
}): Promise<Stream[]> {
|
||||
try {
|
||||
const { axios } = providerContext;
|
||||
const baseUrl = "https://backend.animetsu.to";
|
||||
const { axios, openWebView, commonHeaders } = providerContext;
|
||||
const baseUrl = "https://animetsu.net";
|
||||
const streamUrl = `https://swiftstream.top/proxy`;
|
||||
|
||||
let wafCookies: string | undefined;
|
||||
try {
|
||||
await axios.get(baseUrl, {
|
||||
headers: { ...commonHeaders, Referer: baseUrl },
|
||||
});
|
||||
} catch (error: any) {
|
||||
if (error.response?.status === 403) {
|
||||
const wafResult = await openWebView(baseUrl, {
|
||||
title: "Solve the captcha below and click done",
|
||||
description: "Required to bypass Animetsu anti-bot protection.",
|
||||
headers: { ...commonHeaders, Referer: baseUrl },
|
||||
force: true,
|
||||
waitForCookie: "cf_clearance",
|
||||
});
|
||||
wafCookies = wafResult.cookies;
|
||||
}
|
||||
}
|
||||
|
||||
// Parse link format: "animeId:episodeNumber"
|
||||
const [animeId, episodeNumber] = id.split(":");
|
||||
@@ -18,61 +37,65 @@ export const getStream = async function ({
|
||||
throw new Error("Invalid link format");
|
||||
}
|
||||
|
||||
const servers = ["pahe", "zoro"]; // Available servers based on API structure
|
||||
const servers = ["sage", "meg", "dio", "kite"];
|
||||
const streamLinks: Stream[] = [];
|
||||
|
||||
await Promise.all(
|
||||
servers.map(async (server) => {
|
||||
try {
|
||||
const url = `${baseUrl}/api/anime/tiddies?server=${server}&id=${animeId}&num=${episodeNumber}&subType=sub`;
|
||||
const url = `${baseUrl}/v2/api/anime/oppai/${animeId}/${episodeNumber}?server=${server}&source_type=sub`;
|
||||
|
||||
const res = await axios.get(url, {
|
||||
headers: {
|
||||
Referer: "https://animetsu.to/",
|
||||
...commonHeaders,
|
||||
Referer: baseUrl,
|
||||
...(wafCookies ? { Cookie: wafCookies } : {}),
|
||||
},
|
||||
});
|
||||
|
||||
if (res.data && res.data.sources) {
|
||||
const subtitles: TextTracks = [];
|
||||
// if (res.data.subtitles && Array.isArray(res.data.subtitles)) {
|
||||
// res.data.subtitles.forEach((sub: any) => {
|
||||
// if (sub.url && sub.lang) {
|
||||
// // Extract language code from lang string (e.g., "English" -> "en", "Arabic - CR" -> "ar")
|
||||
// const langCode = sub.lang.toLowerCase().includes("english")
|
||||
// ? "en"
|
||||
// : sub.lang.toLowerCase().includes("arabic")
|
||||
// ? "ar"
|
||||
// : sub.lang.toLowerCase().includes("french")
|
||||
// ? "fr"
|
||||
// : sub.lang.toLowerCase().includes("german")
|
||||
// ? "de"
|
||||
// : sub.lang.toLowerCase().includes("italian")
|
||||
// ? "it"
|
||||
// : sub.lang.toLowerCase().includes("portuguese")
|
||||
// ? "pt"
|
||||
// : sub.lang.toLowerCase().includes("russian")
|
||||
// ? "ru"
|
||||
// : sub.lang.toLowerCase().includes("spanish")
|
||||
// ? "es"
|
||||
// : "und";
|
||||
if (res.data.subs && Array.isArray(res.data.subs)) {
|
||||
res.data.subs.forEach((sub: any) => {
|
||||
if (sub.url && sub.lang) {
|
||||
const langCode = sub.lang.toLowerCase().includes("english")
|
||||
? "en"
|
||||
: sub.lang.toLowerCase().includes("arabic")
|
||||
? "ar"
|
||||
: sub.lang.toLowerCase().includes("french")
|
||||
? "fr"
|
||||
: sub.lang.toLowerCase().includes("german")
|
||||
? "de"
|
||||
: sub.lang.toLowerCase().includes("italian")
|
||||
? "it"
|
||||
: sub.lang.toLowerCase().includes("portuguese")
|
||||
? "pt"
|
||||
: sub.lang.toLowerCase().includes("russian")
|
||||
? "ru"
|
||||
: sub.lang.toLowerCase().includes("spanish")
|
||||
? "es"
|
||||
: "und";
|
||||
|
||||
// subtitles.push({
|
||||
// title: sub.lang,
|
||||
// language: langCode,
|
||||
// type: "text/vtt",
|
||||
// uri: sub.url,
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
subtitles.push({
|
||||
title: sub.lang,
|
||||
language: langCode,
|
||||
type: "text/vtt",
|
||||
uri: sub.url,
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
res.data.sources.forEach((source: any) => {
|
||||
const sourceUrl = source.url.startsWith("/")
|
||||
? `${streamUrl}${source.url}`
|
||||
: source.url;
|
||||
streamLinks.push({
|
||||
server: server + `: ${source.quality}`,
|
||||
link: `https://m3u8.8man.workers.dev?url=${source.url}`,
|
||||
server: `${server} (Sub): ${source.quality}`,
|
||||
link: sourceUrl,
|
||||
type: "m3u8",
|
||||
quality: source.quality,
|
||||
headers: {
|
||||
referer: "https://animetsu.to/",
|
||||
referer: baseUrl,
|
||||
},
|
||||
subtitles: subtitles.length > 0 ? subtitles : [],
|
||||
});
|
||||
@@ -81,62 +104,67 @@ export const getStream = async function ({
|
||||
} catch (e) {
|
||||
console.log(`Error with server ${server}:`, e);
|
||||
}
|
||||
})
|
||||
}),
|
||||
);
|
||||
|
||||
// Try dub version as well
|
||||
await Promise.all(
|
||||
servers.map(async (server) => {
|
||||
try {
|
||||
const url = `${baseUrl}/api/anime/tiddies?server=${server}&id=${animeId}&num=${episodeNumber}&subType=dub`;
|
||||
const url = `${baseUrl}/v2/api/anime/oppai/${animeId}/${episodeNumber}?server=${server}&source_type=dub`;
|
||||
|
||||
const res = await axios.get(url, {
|
||||
headers: {
|
||||
referer: "https://animetsu.to/",
|
||||
...commonHeaders,
|
||||
Referer: baseUrl,
|
||||
...(wafCookies ? { Cookie: wafCookies } : {}),
|
||||
},
|
||||
});
|
||||
|
||||
if (res.data && res.data.sources) {
|
||||
const subtitles: TextTracks = [];
|
||||
// if (res.data.subtitles && Array.isArray(res.data.subtitles)) {
|
||||
// res.data.subtitles.forEach((sub: any) => {
|
||||
// if (sub.url && sub.lang) {
|
||||
// // Extract language code from lang string (e.g., "English" -> "en", "Arabic - CR" -> "ar")
|
||||
// const langCode = sub.lang.toLowerCase().includes("english")
|
||||
// ? "en"
|
||||
// : sub.lang.toLowerCase().includes("arabic")
|
||||
// ? "ar"
|
||||
// : sub.lang.toLowerCase().includes("french")
|
||||
// ? "fr"
|
||||
// : sub.lang.toLowerCase().includes("german")
|
||||
// ? "de"
|
||||
// : sub.lang.toLowerCase().includes("italian")
|
||||
// ? "it"
|
||||
// : sub.lang.toLowerCase().includes("portuguese")
|
||||
// ? "pt"
|
||||
// : sub.lang.toLowerCase().includes("russian")
|
||||
// ? "ru"
|
||||
// : sub.lang.toLowerCase().includes("spanish")
|
||||
// ? "es"
|
||||
// : "und";
|
||||
if (res.data.subs && Array.isArray(res.data.subs)) {
|
||||
res.data.subs.forEach((sub: any) => {
|
||||
if (sub.url && sub.lang) {
|
||||
// Extract language code from lang string (e.g., "English" -> "en", "Arabic - CR" -> "ar")
|
||||
const langCode = sub.lang.toLowerCase().includes("english")
|
||||
? "en"
|
||||
: sub.lang.toLowerCase().includes("arabic")
|
||||
? "ar"
|
||||
: sub.lang.toLowerCase().includes("french")
|
||||
? "fr"
|
||||
: sub.lang.toLowerCase().includes("german")
|
||||
? "de"
|
||||
: sub.lang.toLowerCase().includes("italian")
|
||||
? "it"
|
||||
: sub.lang.toLowerCase().includes("portuguese")
|
||||
? "pt"
|
||||
: sub.lang.toLowerCase().includes("russian")
|
||||
? "ru"
|
||||
: sub.lang.toLowerCase().includes("spanish")
|
||||
? "es"
|
||||
: "und";
|
||||
|
||||
// subtitles.push({
|
||||
// title: sub.lang,
|
||||
// language: langCode,
|
||||
// type: "text/vtt",
|
||||
// uri: sub.url,
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
subtitles.push({
|
||||
title: sub.lang,
|
||||
language: langCode,
|
||||
type: "text/vtt",
|
||||
uri: sub.url,
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
res.data.sources.forEach((source: any) => {
|
||||
const sourceUrl = source.url.startsWith("/")
|
||||
? `${streamUrl}${source.url}`
|
||||
: source.url;
|
||||
streamLinks.push({
|
||||
server: `${server} (Dub): ${source.quality}`,
|
||||
link: `https://m3u8.8man.workers.dev?url=${source.url}`,
|
||||
link: sourceUrl,
|
||||
type: "m3u8",
|
||||
quality: source.quality,
|
||||
headers: {
|
||||
referer: "https://animetsu.to/",
|
||||
referer: baseUrl,
|
||||
},
|
||||
subtitles: subtitles.length > 0 ? subtitles : [],
|
||||
});
|
||||
@@ -145,7 +173,7 @@ export const getStream = async function ({
|
||||
} catch (e) {
|
||||
console.log(`Error with server ${server} (dub):`, e);
|
||||
}
|
||||
})
|
||||
}),
|
||||
);
|
||||
|
||||
console.log("Stream links:", streamLinks);
|
||||
|
||||
@@ -5,6 +5,21 @@ const hubcloudDecode = function (value: string) {
|
||||
return atob(value.toString());
|
||||
};
|
||||
|
||||
const extractUrlFromScript = (html: string): string => {
|
||||
const doubleAtobMatch = html.match(
|
||||
/var\s+url\s*=\s*atob\(atob\(['"]([^'"]+)['"]\)\)/,
|
||||
);
|
||||
if (doubleAtobMatch?.[1]) {
|
||||
return atob(atob(doubleAtobMatch[1]));
|
||||
}
|
||||
const plainMatch = html.match(/var\s+url\s*=\s*['"]([^'"]+)['"]/);
|
||||
return (
|
||||
hubcloudDecode(plainMatch?.[1]?.split("r=")?.[1] ?? "") ||
|
||||
plainMatch?.[1] ||
|
||||
""
|
||||
);
|
||||
};
|
||||
|
||||
const getPixelDrainUrl = (html: string) => {
|
||||
const match = html.match(/var\s+pxl\s*=\s*['"]([^'"]+)['"];?/i);
|
||||
return match?.[1] || "";
|
||||
@@ -44,10 +59,8 @@ export async function hubcloudExtractor(
|
||||
const vLinkRes = await axios(`${link}`, { headers, signal });
|
||||
const vLinkText = vLinkRes.data;
|
||||
const $vLink = cheerio.load(vLinkText);
|
||||
const vLinkRedirect = vLinkText.match(/var\s+url\s*=\s*'([^']+)';/) || [];
|
||||
let vcloudLink =
|
||||
hubcloudDecode(vLinkRedirect[1]?.split("r=")?.[1]) ||
|
||||
vLinkRedirect[1] ||
|
||||
extractUrlFromScript(vLinkText) ||
|
||||
$vLink(".fa-file-download.fa-lg").parent().attr("href") ||
|
||||
link;
|
||||
console.log("vcloudLink", vcloudLink);
|
||||
@@ -62,7 +75,7 @@ export async function hubcloudExtractor(
|
||||
});
|
||||
const vcloudText = await vcloudRes.text();
|
||||
const $ = cheerio.load(vcloudText);
|
||||
// console.log('vcloudRes', $.text());
|
||||
// console.log("vcloudRes", $.text());
|
||||
|
||||
const linkClass = $(".btn-success.btn-lg.h6,.btn-danger,.btn-secondary");
|
||||
for (const element of linkClass) {
|
||||
|
||||
@@ -52,7 +52,7 @@ export const getSearchPosts = async function ({
|
||||
page: String(page),
|
||||
analytics_tag: today,
|
||||
});
|
||||
const searchUrl = `https://search.hdhub4u.glass/collections/post/documents/search?${params.toString()}`;
|
||||
const searchUrl = `https://search.pingora.fyi/collections/post/documents/search?${params.toString()}`;
|
||||
const res = await fetch(searchUrl, {
|
||||
headers: {
|
||||
...hdbHeaders,
|
||||
|
||||
@@ -57,7 +57,7 @@ export const getSearchPosts = async ({
|
||||
providerContext: ProviderContext;
|
||||
}): Promise<Post[]> => {
|
||||
const { getBaseUrl, axios, cheerio } = providerContext;
|
||||
const baseUrl = await getBaseUrl("Vega");
|
||||
const baseUrl = await getBaseUrl("lux");
|
||||
|
||||
console.log("vegaGetPosts baseUrl:", providerValue, baseUrl);
|
||||
const url = `${baseUrl}/search.php?q=${searchQuery}&page=${page}`;
|
||||
|
||||
@@ -37,7 +37,7 @@ export async function getStream({
|
||||
try {
|
||||
const streamLinks: Stream[] = [];
|
||||
console.log("dotlink", link);
|
||||
if (type === "movie") {
|
||||
if (type === "movie" && !link.includes("cloud")) {
|
||||
// vlink
|
||||
const dotlinkRes = await axios(`${link}`, { headers });
|
||||
const dotlinkText = dotlinkRes.data;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
export const catalog = [
|
||||
{
|
||||
title: "Trending",
|
||||
filter: "2",
|
||||
filter: "4",
|
||||
},
|
||||
{
|
||||
title: "Cinema",
|
||||
|
||||
@@ -11,7 +11,7 @@ export const getEpisodes = async function ({
|
||||
try {
|
||||
const episodeLinks: EpisodeLink[] = [];
|
||||
|
||||
const response = await fetch("https://dob-worker.8man.workers.dev", {
|
||||
const response = await fetch("https://dob-worker.1proxy.workers.dev", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
|
||||
@@ -9,10 +9,9 @@ export const getMeta = async function ({
|
||||
}): Promise<Info> {
|
||||
try {
|
||||
const { axios, cheerio, getBaseUrl } = providerContext;
|
||||
const baseUrl = await getBaseUrl("movieBox");
|
||||
const links: Link[] = [];
|
||||
// this is just a proxy please host your own if you want to use this code:- https://github.com/himanshu8443/Cf-Workers/blob/main/src/dob-worker/index.js
|
||||
const response = await fetch("https://dob-worker.8man.workers.dev", {
|
||||
const response = await fetch("https://dob-worker.1proxy.workers.dev", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
@@ -38,7 +37,7 @@ export const getMeta = async function ({
|
||||
dubs?.forEach((dub: any) => {
|
||||
const link: Link = {
|
||||
title: dub?.lanName,
|
||||
episodesLink: `${baseUrl}/wefeed-mobile-bff/subject-api/resource?subjectId=${dub?.subjectId}&page=1&perPage=20&all=0&startPosition=1&endPosition=1&pagerMode=0&resolution=1080&se=1&epFrom=1&epTo=1`,
|
||||
episodesLink: `/wefeed-mobile-bff/subject-api/resource?subjectId=${dub?.subjectId}&page=1&perPage=20&all=0&startPosition=1&endPosition=1&pagerMode=0&resolution=1080&se=1&epFrom=1&epTo=1`,
|
||||
};
|
||||
links.push(link);
|
||||
});
|
||||
|
||||
@@ -17,12 +17,11 @@ export const getPosts = async function ({
|
||||
if (page > 1) {
|
||||
return posts;
|
||||
}
|
||||
const baseUrl = await getBaseUrl("movieBox");
|
||||
console.log("baseUrl", baseUrl);
|
||||
|
||||
const url = `${baseUrl}/wefeed-mobile-bff/tab-operating?page=3&tabId=0&version=2fe0d7c224603ff7b0df294b46d3b84b`;
|
||||
const url = `/wefeed-mobile-bff/tab-operating?page=3&tabId=0&version=2fe0d7c224603ff7b0df294b46d3b84b`;
|
||||
|
||||
const response = await fetch("https://dob-worker.8man.workers.dev", {
|
||||
// this is just a proxy please host your own if you want to use this code:- https://github.com/himanshu8443/Cf-Workers/blob/main/src/dob-worker/index.js
|
||||
const response = await fetch("https://dob-worker.1proxy.workers.dev", {
|
||||
signal: signal,
|
||||
method: "POST",
|
||||
headers: {
|
||||
@@ -35,13 +34,21 @@ export const getPosts = async function ({
|
||||
});
|
||||
|
||||
const data = await response.json();
|
||||
const list = data?.data?.items?.[parseInt(filter)]?.subjects;
|
||||
console.log("list", list);
|
||||
const items = data?.data?.items || [];
|
||||
const filterIndex = Number.parseInt(filter, 10);
|
||||
let list = items?.[filterIndex]?.subjects;
|
||||
if (!Array.isArray(list) || list.length === 0) {
|
||||
list =
|
||||
items?.find(
|
||||
(item: any) =>
|
||||
Array.isArray(item?.subjects) && item.subjects.length > 0,
|
||||
)?.subjects || [];
|
||||
}
|
||||
for (const item of list) {
|
||||
const post: Post = {
|
||||
image: item?.cover.url,
|
||||
title: item?.title?.replace(/\s*\[.*?\]\s*$/, ""),
|
||||
link: `${baseUrl}/wefeed-mobile-bff/subject-api/get?subjectId=${item?.subjectId}`,
|
||||
link: `/wefeed-mobile-bff/subject-api/get?subjectId=${item?.subjectId}`,
|
||||
};
|
||||
posts.push(post);
|
||||
}
|
||||
|
||||
@@ -15,11 +15,6 @@ const headers = {
|
||||
"Sec-Fetch-Mode": "navigate",
|
||||
"Sec-Fetch-Site": "none",
|
||||
"Sec-Fetch-User": "?1",
|
||||
Cookie:
|
||||
"xla=s4t; _ga=GA1.1.1081149560.1756378968; _ga_BLZGKYN5PF=GS2.1.s1756378968$o1$g1$t1756378984$j44$l0$h0",
|
||||
"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",
|
||||
};
|
||||
|
||||
export async function getStream({
|
||||
@@ -33,13 +28,50 @@ export async function getStream({
|
||||
signal: AbortSignal;
|
||||
providerContext: ProviderContext;
|
||||
}) {
|
||||
const { axios, cheerio, commonHeaders } = providerContext;
|
||||
const { axios, cheerio, commonHeaders, openWebView } = providerContext;
|
||||
try {
|
||||
const streamLinks: Stream[] = [];
|
||||
console.log("dotlink", link);
|
||||
if (type === "movie") {
|
||||
// vlink
|
||||
const dotlinkRes = await axios(`${link}`, { headers });
|
||||
let dotlinkRes;
|
||||
let cookies: string | undefined;
|
||||
|
||||
try {
|
||||
dotlinkRes = await axios(`${link}`, {
|
||||
headers: {
|
||||
...commonHeaders,
|
||||
Referer: link,
|
||||
},
|
||||
});
|
||||
} catch (error: any) {
|
||||
if (error.response?.status === 403) {
|
||||
console.log("Solving WAF for Movies4U...");
|
||||
const wafResult = await openWebView(link, {
|
||||
title: "Solve the captcha below and click done",
|
||||
description:
|
||||
"This is required to bypass the anti-bot protection and retrieve the stream link.",
|
||||
headers: {
|
||||
...commonHeaders,
|
||||
Referer: link,
|
||||
},
|
||||
force: true,
|
||||
waitForCookie: "cf_clearance",
|
||||
});
|
||||
console.log("WAF solved", wafResult.cookies);
|
||||
cookies = wafResult.cookies;
|
||||
|
||||
dotlinkRes = await axios(`${link}`, {
|
||||
headers: {
|
||||
...commonHeaders,
|
||||
Referer: link,
|
||||
Cookie: cookies,
|
||||
},
|
||||
});
|
||||
} else {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
const dotlinkText = dotlinkRes.data;
|
||||
// console.log('dotlinkText', dotlinkText);
|
||||
const vlink = dotlinkText.match(/<a\s+href="([^"]*cloud\.[^"]*)"/i) || [];
|
||||
|
||||
@@ -129,10 +129,46 @@ export interface ProviderType {
|
||||
}) => Promise<Post[]>;
|
||||
}
|
||||
|
||||
// Options to customize the WAF-solving WebView dialog.
|
||||
// Options to customize the WAF-solving WebView dialog.
|
||||
export interface OpenWebViewOptions {
|
||||
// Title shown in the dialog header.
|
||||
title?: string;
|
||||
// Helper text shown under the title.
|
||||
description?: string;
|
||||
|
||||
headers?: Record<string, string>;
|
||||
|
||||
waitForCookie?: string;
|
||||
|
||||
force?: boolean;
|
||||
// If set, the dialog auto-cancels (rejects) after this many milliseconds.
|
||||
timeoutMs?: number;
|
||||
}
|
||||
|
||||
// Result returned to the provider after the user solves the challenge.
|
||||
export interface OpenWebViewResult {
|
||||
// The page response after the challenge is solved: the rendered HTML of the
|
||||
// document (document.documentElement.outerHTML).
|
||||
data: string;
|
||||
// Cookie header value, e.g. "cf_clearance=abc; other=def".
|
||||
cookies: string;
|
||||
// Cookies as a name -> value map.
|
||||
cookieMap: Record<string, string>;
|
||||
// The User-Agent used by the WebView.
|
||||
userAgent: string;
|
||||
// The URL that was opened.
|
||||
url: string;
|
||||
}
|
||||
|
||||
export type ProviderContext = {
|
||||
axios: AxiosStatic;
|
||||
Aes: any; // AES encryption utility, if used
|
||||
getBaseUrl: (providerValue: string) => Promise<string>;
|
||||
commonHeaders: Record<string, string>;
|
||||
cheerio: typeof cheerio;
|
||||
openWebView: (
|
||||
url: string,
|
||||
options?: OpenWebViewOptions,
|
||||
) => Promise<OpenWebViewResult>;
|
||||
};
|
||||
|
||||
@@ -37,13 +37,13 @@ export async function getStream({
|
||||
try {
|
||||
const streamLinks: Stream[] = [];
|
||||
console.log("dotlink", link);
|
||||
if (type === "movie") {
|
||||
if (type === "movie" && !link.includes("cloud")) {
|
||||
// vlink
|
||||
const dotlinkRes = await axios(`${link}`, { headers });
|
||||
const dotlinkText = dotlinkRes.data;
|
||||
// console.log('dotlinkText', dotlinkText);
|
||||
const vlink = dotlinkText.match(/<a\s+href="([^"]*cloud\.[^"]*)"/i) || [];
|
||||
// console.log('vLink', vlink[1]);
|
||||
console.log("vLink", vlink[1]);
|
||||
link = vlink[1];
|
||||
|
||||
// filepress link
|
||||
|
||||
Reference in New Issue
Block a user