3 lines
4.7 KiB
JavaScript
3 lines
4.7 KiB
JavaScript
// 本资源来源于互联网公开渠道,仅可用于个人学习爬虫技术。
|
|
// 严禁将其用于任何商业用途,下载后请于 24 小时内删除,搜索结果均来自源站,本人不承担任何责任。
|
|
import{Crypto as t,_ as e}from"assets://js/lib/cat.js";let n="https://api.dbokutv.com";const o={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)",Connection:"Keep-Alive",Referer:"https://www.duboku.tv/"};async function r(t){}async function a(t){const e=[{type_id:2,type_name:"连续剧"},{type_id:3,type_name:"综艺"},{type_id:1,type_name:"电影"},{type_id:4,type_name:"动漫"}],r={},a=e.map(async t=>{const e=t.type_id,a=f(`${n}/vodshow/${e}-----------`);try{const t=await req(a,{headers:o}),n=JSON.parse(t.content);if(n&&n.FilterList){const t=[];for(const e of n.FilterList){let n="";switch(e.Class){case"剧情":n="class";break;case"地区":n="area";break;case"年份":n="year";break;case"语言":n="lang";break;case"字母":n="letter";break;case"排序":n="sort";break;case"类型":n="scat"}if(n&&e.OptionList&&e.OptionList.length>0){const o=[];let r="";"sort"===n?(e.OptionList.forEach(t=>{o.push({n:t.Option,v:t.Option})}),r="时间"):(o.push({n:"全部",v:""}),e.OptionList.forEach(t=>{"全部"!==t.Option&&o.push({n:t.Option,v:t.Option})}),r=""),t.push({key:n,name:e.Class,value:o,init:r})}}t.length>0&&(r[e]=t)}}catch(t){}});return await Promise.all(a),JSON.stringify({class:e,filters:r})}async function s(){const t=f(`${n}/home`),e=await req(t,{headers:o}),r=JSON.parse(e.content);let a=[];if(r&&Array.isArray(r))for(const t of r){const e=t.VodList||[];for(const t of e)a.push({vod_id:l(t.DId||t.DuId),vod_name:t.Name,vod_pic:l(t.TnId),vod_remarks:t.Tag})}return JSON.stringify({list:a})}async function i(t,e,r,a){const s=new Array(12).fill("");s[0]=t,s[1]=a.area||"",s[2]=a.sort||"时间",s[3]=a.class||"",s[4]=a.lang||"",s[5]=a.letter||"",s[6]=a.scat||"",s[8]="1"===e.toString()?"":e,s[11]=a.year||"";const i=f(`${n}/vodshow/${s.join("-")}`),c=await req(i,{headers:o}),p=JSON.parse(c.content);let d=[];if(p.VodList)for(const t of p.VodList)d.push({vod_id:l(t.DId||t.DuId),vod_name:t.Name,vod_pic:l(t.TnId),vod_remarks:t.Tag});let u=0;try{if(p.PaginationList){for(const t of p.PaginationList)if("StartEnd"===t.Type){const e=l(t.PId||t.PuId).split("-");if(e.length>8){const t=parseInt(e[8]);t&&(u=t)}}if(0===u)for(const t of p.PaginationList)if("ShortPage"===t.Type){const e=t.Name.split("/");if(e.length>1){const t=parseInt(e[1]);t&&(u=t)}}}}catch(t){u=1}return 0===u&&(u=1),JSON.stringify({list:d,page:parseInt(e),pagecount:u})}async function c(t,e,r=1){let a=f(`${n}/vodsearch`);a+=`&wd=${encodeURIComponent(t)}`;const s=await req(a,{headers:o}),i=JSON.parse(s.content);let c=[];if(i&&Array.isArray(i))for(const t of i)c.push({vod_id:l(t.DId||t.DuId),vod_name:t.Name,vod_pic:l(t.TnId),vod_remarks:t.Tag,vod_actor:t.Actor,vod_score:t.Rating});return JSON.stringify({list:c,page:parseInt(r)})}async function p(t){const e=f(`${n}${t}`),r=await req(e,{headers:o}),a=JSON.parse(r.content);let s=[];a.Playlist&&(s=a.Playlist.map(t=>`${t.EpisodeName}$${l(t.VId)}`));const i={vod_id:t,vod_name:a.Name,vod_pic:l(a.TnId),vod_remarks:`评分:${a.Rating}`,vod_year:a.ReleaseYear,vod_area:a.Region,vod_actor:Array.isArray(a.Actor)?a.Actor.join(","):a.Actor,vod_director:a.Director,vod_content:a.Description,vod_play_from:"独播库",vod_play_url:s.join("#"),type_name:`${a.Genre},${a.Scenario},${a.Language}`};return JSON.stringify({list:[i]})}async function d(t,e,r){const a=f(`${n}${e}`),s=await req(a,{headers:o}),i=l(JSON.parse(s.content).HId);return JSON.stringify({jx:0,parse:0,url:i,header:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36","Accept-Encoding":"gzip, deflate",origin:"https://w.duboku.io",referer:"https://w.duboku.io/",priority:"u=1, i"}})}function l(e){if(!e||"string"!=typeof e)return"";let n=e.replace(/['"]/g,"");if(!n)return"";let o="";for(let t=0;t<n.length;t+=10){o+=n.substring(t,t+10).split("").reverse().join("")}o=o.replace(/\./g,"=");try{const e=t.enc.Base64.parse(o);return t.enc.Utf8.stringify(e)}catch(t){return""}}function f(e){const n=Math.floor(800000001*Math.random()),o=function(t,e){let n=[];const o=Math.min(t.length,e.length);for(let r=0;r<o;r++)n.push(t[r]),n.push(e[r]);return n.push(t.substring(o)),n.push(e.substring(o)),n.join("")}(`${n+1e8}${9e8-n}`,Math.floor(Date.now()/1e3).toString()),r=t.enc.Utf8.parse(o),a=t.enc.Base64.stringify(r).replace(/=/g,".");return`${e}?sign=${u(60)}&token=${u(38)}&ssid=${a}`}function u(t){const e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";let n="";for(let o=0;o<t;o++)n+=e.charAt(Math.floor(62*Math.random()));return n}export function __jsEvalReturn(){return{init:r,home:a,homeVod:s,category:i,search:c,detail:p,play:d}} |