Improve parsing album track info

This commit is contained in:
patrickkfkan 2023-06-14 23:21:13 +08:00
parent aa1956382a
commit 7845995d34

View File

@ -117,12 +117,18 @@ export default class AlbumInfoParser {
}
if (Array.isArray(extra.trackinfo)) {
const tracksFromBasicInfo = basic.track?.itemListElement as Array<any>;
const tracks = extra.trackinfo.map((track: any) => {
const trackItem: Omit<Track, 'type'> = {
name: track.title,
duration: track.duration,
streamUrl: track.file?.['mp3-128']
name: track.title
};
if (track.duration !== undefined) {
trackItem.duration = track.duration;
}
const streamUrl = track.file?.['mp3-128'];
if (streamUrl) {
trackItem.streamUrl = streamUrl;
}
if (track.track_num !== undefined) {
trackItem.position = track.track_num;
}
@ -130,6 +136,13 @@ export default class AlbumInfoParser {
if (trackUrl) {
trackItem.url = trackUrl;
}
else if (trackItem.position !== undefined) {
const trackFromBasic = tracksFromBasicInfo.find((el: any) => el?.position === trackItem.position);
const trackUrlFromBasic = trackFromBasic?.item?.['@id'];
if (trackUrlFromBasic) {
trackItem.url = trackUrlFromBasic;
}
}
return trackItem;
}) as Track[];