@@ -17,8 +17,14 @@ function extractBestQuality(dashData) {
1717 return [ bestVideo , bestAudio ] ;
1818}
1919
20- async function com_download ( id ) {
21- const html = await fetch ( `https://bilibili.com/video/${ id } ` , {
20+ async function com_download ( id , partId ) {
21+ const url = new URL ( `https://bilibili.com/video/${ id } ` ) ;
22+
23+ if ( partId ) {
24+ url . searchParams . set ( 'p' , partId ) ;
25+ }
26+
27+ const html = await fetch ( url , {
2228 headers : {
2329 "user-agent" : genericUserAgent
2430 }
@@ -47,10 +53,15 @@ async function com_download(id) {
4753 return { error : "fetch.empty" } ;
4854 }
4955
56+ let filenameBase = `bilibili_${ id } ` ;
57+ if ( partId ) {
58+ filenameBase += `_${ partId } ` ;
59+ }
60+
5061 return {
5162 urls : [ video . baseUrl , audio . baseUrl ] ,
52- audioFilename : `bilibili_ ${ id } _audio` ,
53- filename : `bilibili_ ${ id } _${ video . width } x${ video . height } .mp4` ,
63+ audioFilename : `${ filenameBase } _audio` ,
64+ filename : `${ filenameBase } _${ video . width } x${ video . height } .mp4` ,
5465 } ;
5566}
5667
@@ -89,14 +100,14 @@ async function tv_download(id) {
89100 } ;
90101}
91102
92- export default async function ( { comId, tvId, comShortLink } ) {
103+ export default async function ( { comId, tvId, comShortLink, partId } ) {
93104 if ( comShortLink ) {
94105 const patternMatch = await resolveRedirectingURL ( `https://b23.tv/${ comShortLink } ` ) ;
95106 comId = patternMatch ?. comId ;
96107 }
97108
98109 if ( comId ) {
99- return com_download ( comId ) ;
110+ return com_download ( comId , partId ) ;
100111 } else if ( tvId ) {
101112 return tv_download ( tvId ) ;
102113 }
0 commit comments