Bilibili-Evolved/min/video-dash.min.js
2019-11-09 12:23:46 +08:00

1 line
1.7 KiB
JavaScript

(()=>{return(t,e)=>{const a=t=>{return{url:t.downloadUrl,backupUrls:t.backupUrls,length:t.duration,size:Math.trunc(t.bandWidth*t.duration/8)}};const d=e=>{console.log(e.videoDashes);const d=(()=>{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]}})();const o=e.audioDashes.sort(descendingSort(t=>t.bandWidth))[0];return[a(d),a(o)]};const o=async(t,e)=>{const a=await Ajax.getJsonWithCredentials(t);const d=a.data||a.result||a;if(a.code!==0||!d.dash){throw new Error("DASH api failed")}const o=d.accept_quality;if(!o.includes(e)){throw new Error("没有找到请求的清晰度")}if(d.quality!==e){throw new Error("无法获取请求的清晰度, 请确认当前账号有相应的权限")}const r=d.accept_description;const s=r[o.indexOf(e)];const c=d.dash.duration;const n=d.dash.video.filter(t=>t.id===e).map(t=>{const a=(()=>{switch(t.codecid){case 12:return"HEVC/H.265";default:case 7:return"AVC/H.264"}})();const d={quality:e,qualityText:s,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:c,videoCodec:a};return d});const i=d.dash.audio.map(t=>{return{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:c}});return{videoDashes:n,audioDashes:i}};return{export:{getDashInfo:o,dashToFragments:d}}}})();