@@ -406,19 +406,34 @@ export const handleSongQuality = (
406406 if ( song >= 160000 ) return QualityType . MQ ;
407407 return QualityType . LQ ;
408408 }
409- // 含有 level 特殊处理
410- if ( typeof song === "object" && "level" in song ) {
411- if ( song . level === "jymaster" ) return QualityType . Master ;
412- if ( song . level === "dolby" ) return QualityType . Dolby ;
413- if ( song . level === "sky" ) return QualityType . Spatial ;
414- if ( song . level === "jyeffect" ) return QualityType . Surround ;
415- if ( song . level === "hires" ) return QualityType . HiRes ;
416- if ( song . level === "lossless" ) return QualityType . SQ ;
417- if ( song . level === "exhigh" ) return QualityType . HQ ;
418- if ( song . level === "higher" ) return QualityType . MQ ;
419- if ( song . level === "standard" ) return QualityType . LQ ;
420- return undefined ;
409+
410+ const levelQualityMap = {
411+ "jymaster" : QualityType . Master ,
412+ "dolby" : QualityType . Dolby ,
413+ "sky" : QualityType . Spatial ,
414+ "jyeffect" : QualityType . Surround ,
415+ "hires" : QualityType . HiRes ,
416+ "lossless" : QualityType . SQ ,
417+ "exhigh" : QualityType . HQ ,
418+ "higher" : QualityType . MQ ,
419+ "standard" : QualityType . LQ ,
420+ }
421+
422+ if ( typeof song === "object" && song ) {
423+ // 含有 level 特殊处理
424+ if ( "level" in song ) {
425+ const quality = levelQualityMap [ song . level ] ;
426+ if ( quality ) return quality ;
427+ }
428+ // 云盘歌曲适配
429+ if ( "privilege" in song ) {
430+ const privilege = song . privilege ;
431+ const quality = levelQualityMap [ privilege ?. playMaxBrLevel ]
432+ ?? levelQualityMap [ privilege ?. plLevel ] ;
433+ if ( quality ) return quality ;
434+ }
421435 }
436+
422437 const order = [
423438 { key : "jm" , type : QualityType . Master } ,
424439 { key : "db" , type : QualityType . Dolby } ,
0 commit comments