From 7845995d34b63e3cd05ef33ddf2c4c363bc6cb91 Mon Sep 17 00:00:00 2001 From: patrickkfkan Date: Wed, 14 Jun 2023 23:21:13 +0800 Subject: [PATCH] Improve parsing album track info --- src/lib/album/AlbumInfoParser.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/lib/album/AlbumInfoParser.ts b/src/lib/album/AlbumInfoParser.ts index d7a7e30..4c2e0e9 100644 --- a/src/lib/album/AlbumInfoParser.ts +++ b/src/lib/album/AlbumInfoParser.ts @@ -117,12 +117,18 @@ export default class AlbumInfoParser { } if (Array.isArray(extra.trackinfo)) { + const tracksFromBasicInfo = basic.track?.itemListElement as Array; const tracks = extra.trackinfo.map((track: any) => { const trackItem: Omit = { - 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[];