mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
Throw error on flv fail
This commit is contained in:
parent
ee40eab1f7
commit
c00472877b
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
min/batch-download.min.js
vendored
2
min/batch-download.min.js
vendored
File diff suppressed because one or more lines are too long
@ -12,7 +12,7 @@
|
||||
"auto-draw.min.js": "BE2F1D3506F77EE050641EAC49047BB95458BB652E9202AC8D9B57441E356896",
|
||||
"auto-play.min.js": "DC9938AC15DADDC9D88DCA0C9BE64BE142C37D32CB85E42E23DAB2A7378531E5",
|
||||
"bangumi-timeline.vue.min.js": "3A02A24CA45655763C3A568F618A10F4009747FB67FCD002EAEBE256F03CEDC4",
|
||||
"batch-download.min.js": "B4B4BE0939EE045D198FBCA469E06F9BE7AF181F3FC4DE8AEF5CA171AB416AD5",
|
||||
"batch-download.min.js": "E205A4C855A77B2940C5747384E0750CF50CD7A19A4D4EA623B3AD835D4692BB",
|
||||
"biliplus-redirect.min.js": "8446444A9E9974EB32C766CB0CD3826E9F85BAA2B5F09048EBA8F3FEEAE9FA6F",
|
||||
"blackboard.min.js": "5F50F1DDA203AC0C54AB52868881AA43B22007EAEF042618B1A093BBAFFDEE5B",
|
||||
"blackboard.vue.min.js": "84A30D5A6F322A3C083FC1100E9FF51233ECD08AFBD89A6449AD2388ACCC8522",
|
||||
@ -237,7 +237,7 @@
|
||||
"v-dropdown.vue.min.js": "BA1142E2D44CC9593DA803CAA76FA2B814CBD65D4D4210ABF00E811C361D8A37",
|
||||
"video-card.vue.min.js": "E67A429519E70AB872B0EF8DB9B5A6992F0C474E98AAEC12468F41C982ABD9C5",
|
||||
"video-card-info.min.js": "13B755C0EE0CA018AE65251E168BAF3395FEA2EB4FAD6949AADD752F61B8819B",
|
||||
"video-dash.min.js": "F0496F0EBC6002171ECF4F8E049791596029AB622A58FE167959C32430043DE6",
|
||||
"video-dash.min.js": "DD85855581048237B51B2BD6BFEAFB993172DA7DF8E2B0CFEBCF449FDB82F6A6",
|
||||
"video-downloader-fragment.min.js": "13B755C0EE0CA018AE65251E168BAF3395FEA2EB4FAD6949AADD752F61B8819B",
|
||||
"video-info.min.js": "99E06DD08BE4B3BA649B8E5C4F81078F83F852E1F43A16199CE67F65BC769AEE",
|
||||
"video-list.vue.min.js": "90C4CCAB3C9C3FB0CFE39C9A9482C3A964EE7FAC17F7FBF682CCC2FEFB6632F2",
|
||||
|
||||
BIN
min/bundle.zip
BIN
min/bundle.zip
Binary file not shown.
2
min/video-dash.min.js
vendored
2
min/video-dash.min.js
vendored
@ -1 +1 @@
|
||||
(()=>{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 r=e=>{console.log(e.videoDashes);const r=(()=>{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(r),a(t)]}else{return[a(r)]}};const o=async(t,a,r=false)=>{const o=await Ajax.getJsonWithCredentials(t);const s=o.data||o.result||o;if(o.code!==0||!s.dash){throw new Error("此视频没有DASH格式, 请改用FLV格式")}const d=s.accept_quality;if(!d.includes(a)&&!r){throw new Error("没有找到请求的清晰度")}if(s.quality!==a&&!r){const{throwQualityError:t}=await e.importAsync("quality-errors");t(a)}const c=s.accept_description;const n=c[d.indexOf(a)];const i=s.dash.duration;const h=s.dash.video.filter(t=>t.id===(r?s.quality:a)).map(t=>{const e=(()=>{switch(t.codecid){case 12:return"HEVC/H.265";default:case 7:return"AVC/H.264"}})();const r={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 r});const u=(s.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:i}});return{videoDashes:h,audioDashes:u}};return{export:{getDashInfo:o,dashToFragments:r}}}})();
|
||||
(()=>{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 r=e=>{console.log(e.videoDashes);const r=(()=>{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(r),a(t)]}else{return[a(r)]}};const o=async(t,a,r=false)=>{const o=await Ajax.getJsonWithCredentials(t);const s=o.data||o.result||o;if(o.code!==0){throw new Error(`API请求失败: ${o.code} ${o.message}`)}if(!s.dash){throw new Error("此视频没有DASH格式, 请改用FLV格式")}const d=s.accept_quality;if(!d.includes(a)&&!r){throw new Error("没有找到请求的清晰度")}if(s.quality!==a&&!r){const{throwQualityError:t}=await e.importAsync("quality-errors");t(a)}const c=s.accept_description;const n=c[d.indexOf(a)];const i=s.dash.duration;const h=s.dash.video.filter(t=>t.id===(r?s.quality:a)).map(t=>{const e=(()=>{switch(t.codecid){case 12:return"HEVC/H.265";default:case 7:return"AVC/H.264"}})();const r={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 r});const u=(s.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:i}});return{videoDashes:h,audioDashes:u}};return{export:{getDashInfo:o,dashToFragments:r}}}})();
|
||||
@ -163,10 +163,12 @@ class VideoEpisodeBatch extends Batch {
|
||||
url: it.url
|
||||
}
|
||||
})
|
||||
} else {
|
||||
} else if (data.dash) {
|
||||
const { getDashInfo, dashToFragments } = await import('./video-dash')
|
||||
const info = await getDashInfo(url, typeof quality === 'string' ? parseInt(quality) : quality, true)
|
||||
fragments = dashToFragments(info)
|
||||
} else {
|
||||
throw new Error(`获取链接失败: ${json.code} ${json.message}`)
|
||||
}
|
||||
result.push({
|
||||
fragments,
|
||||
|
||||
@ -49,7 +49,10 @@ export const dashToFragments = (dashes: { videoDashes: VideoDash[], audioDashes:
|
||||
export const getDashInfo = async (api: string, quality: number, allowLowerQuality = false) => {
|
||||
const json = await Ajax.getJsonWithCredentials(api)
|
||||
const data = json.data || json.result || json
|
||||
if (json.code !== 0 || !data.dash) {
|
||||
if (json.code !== 0) {
|
||||
throw new Error(`API请求失败: ${json.code} ${json.message}`)
|
||||
}
|
||||
if (!data.dash) {
|
||||
throw new Error('此视频没有DASH格式, 请改用FLV格式')
|
||||
}
|
||||
const qualities = data.accept_quality as number[]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user