mirror of
https://github.com/vega-org/vega-providers.git
synced 2026-04-17 23:51:44 +00:00
1 line
4.5 KiB
JavaScript
1 line
4.5 KiB
JavaScript
"use strict";var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result){var value;result.done?resolve(result.value):(value=result.value,value instanceof P?value:new P(function(resolve){resolve(value)})).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStream=void 0,exports.getRiveStream=getRiveStream;const getStream=_a=>__awaiter(void 0,[_a],void 0,function*({link:id,type:type,providerContext:providerContext}){try{const streams=[],{imdbId:imdbId,season:season,episode:episode,title:title,tmdbId:tmdbId,year:year}=JSON.parse(id);return yield getRiveStream(tmdbId,episode,season,type,streams,providerContext),streams}catch(err){return[]}});function getRiveStream(tmdId,episode,season,type,Streams,providerContext){return __awaiter(this,void 0,void 0,function*(){const secret=generateSecretKey(Number(tmdId)),baseUrl=yield providerContext.getBaseUrl("rive"),cors=process.env.CORS_PRXY?process.env.CORS_PRXY+"?url=":"",route="series"===type?`/api/backendfetch?requestID=tvVideoProvider&id=${tmdId}&season=${season}&episode=${episode}&secretKey=${secret}&service=`:`/api/backendfetch?requestID=movieVideoProvider&id=${tmdId}&secretKey=${secret}&service=`,url=cors?cors+encodeURIComponent(baseUrl+route):baseUrl+route;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(server=>__awaiter(this,void 0,void 0,function*(){var _a,_b,_c,_d,_e,_f;try{const res=yield providerContext.axios.get(url+server,{timeout:4e3,headers:providerContext.commonHeaders}),subtitles=[];(null===(_b=null===(_a=res.data)||void 0===_a?void 0:_a.data)||void 0===_b?void 0:_b.captions)&&(null===(_d=null===(_c=res.data)||void 0===_c?void 0:_c.data)||void 0===_d||_d.captions.forEach(sub=>{var _a,_b;subtitles.push({language:(null===(_a=null==sub?void 0:sub.label)||void 0===_a?void 0:_a.slice(0,2))||"Und",uri:null==sub?void 0:sub.file,title:(null==sub?void 0:sub.label)||"Undefined",type:(null===(_b=null==sub?void 0:sub.file)||void 0===_b?void 0:_b.endsWith(".vtt"))?"text/vtt":"application/x-subrip"})})),null===(_f=null===(_e=res.data)||void 0===_e?void 0:_e.data)||void 0===_f||_f.sources.forEach(source=>{Streams.push({server:(null==source?void 0:source.source)+"-"+(null==source?void 0:source.quality),link:null==source?void 0:source.url,type:"hls"===(null==source?void 0:source.format)?"m3u8":"mp4",quality:null==source?void 0:source.quality,subtitles:subtitles})})}catch(e){}})))})}function generateSecretKey(id){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"];if(void 0===id)return"rive";try{let fragment,insertPos;const idStr=String(id),encodedHash=btoa(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^=131*(i+31)&255,hash=668265261*(hash=(hash<<7|hash>>>25)>>>0^char)>>>0}return hash^=hash>>>16,hash=2246822507*hash>>>0,hash^=hash>>>13,hash=3266489909*hash>>>0,(hash^=hash>>>16).toString(16).padStart(8,"0")}(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}return hash^=hash>>>13,hash=1540483477*hash>>>0,(hash^=hash>>>15).toString(16).padStart(8,"0")}(idStr)));if(isNaN(Number(id))){const charSum=idStr.split("").reduce((sum,char)=>sum+char.charCodeAt(0),0);fragment=c[charSum%c.length]||btoa(idStr),insertPos=Math.floor(charSum%encodedHash.length/2)}else{const numId=Number(id);fragment=c[numId%c.length]||btoa(idStr),insertPos=Math.floor(numId%encodedHash.length/2)}return encodedHash.slice(0,insertPos)+fragment+encodedHash.slice(insertPos)}catch(error){return"topSecret"}}exports.getStream=getStream; |