mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
1 line
1.8 KiB
JavaScript
1 line
1.8 KiB
JavaScript
(()=>(t,e)=>{const a=t=>({url:t.downloadUrl,backupUrls:t.backupUrls,length:t.duration,size:Math.trunc(t.bandWidth*t.duration/8)});const o=e=>{console.log(e.videoDashes);const o=(()=>{const a=e=>e.videoCodec===t.downloadVideoDashCodec;if(e.videoDashes.some(a)){return e.videoDashes.filter(a).sort(ascendingSort((t=>t.bandWidth)))[0]}else{return e.videoDashes.sort(ascendingSort((t=>t.bandWidth)))[0]}})();if(e.audioDashes.length>0){const t=e.audioDashes.sort(descendingSort((t=>t.bandWidth)))[0];return[a(o),a(t)]}else{return[a(o)]}};const s=async(t,a,o=false)=>{const s=await Ajax.getJsonWithCredentials(t);const r=s.data||s.result||s;if(s.code!==0){throw new Error(`API请求失败: ${s.code} ${s.message}`)}if(!r.dash){throw new Error("此视频没有DASH格式, 请改用FLV格式")}const d=r.accept_quality;if(!d.includes(a)&&!o){throw new Error("没有找到请求的清晰度")}if(r.quality!==a&&!o){const{throwQualityError:t}=await e.importAsync("quality-errors");t(a)}const c=r.accept_description;const n=c[d.indexOf(a)];const i=r.dash.duration;const h=r.dash.video.filter((t=>t.id===(o?r.quality:a))).map((t=>{const e=(()=>{switch(t.codecid){case 12:return"HEVC/H.265";default:case 7:return"AVC/H.264"}})();const o={quality:a,qualityText:n,width:t.width,height:t.height,codecs:t.codecs,codecId:t.codecid,bandWidth:t.bandwidth,frameRate:t.frameRate,backupUrls:(t.backupUrl||t.backup_url||[]).forEach((t=>t.replace("http:","https:"))),downloadUrl:(t.baseUrl||t.base_url||"").replace("http:","https:"),duration:i,videoCodec:e};return o}));const l=(r.dash.audio||[]).map((t=>({bandWidth:t.bandwidth,codecs:t.codecs,codecId:t.codecid,backupUrls:(t.backupUrl||t.backup_url||[]).forEach((t=>t.replace("http:","https:"))),downloadUrl:(t.baseUrl||t.base_url||"").replace("http:","https:"),duration:i})));return{videoDashes:h,audioDashes:l}};return{export:{getDashInfo:s,dashToFragments:o}}})(); |