Improve parsing album track info
This commit is contained in:
parent
aa1956382a
commit
7845995d34
|
@ -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[];
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user