From 7b537aade1db880f06129eea9f2525b8cb715985 Mon Sep 17 00:00:00 2001 From: patrickkfkan Date: Sat, 28 Oct 2023 21:36:52 +0800 Subject: [PATCH] Track: add `streamUrlHQ` --- src/lib/album/AlbumInfoParser.ts | 4 ++++ src/lib/article/ArticleParser.ts | 3 ++- src/lib/discovery/DiscoverResultParser.ts | 3 ++- src/lib/fan/FanWishlistParser.ts | 4 +++- src/lib/tag/AlbumHighlightsByTagParser.ts | 3 ++- src/lib/tag/ReleasesByTagParser.ts | 3 ++- src/lib/track/TrackInfoParser.ts | 5 +++++ src/lib/types/Track.ts | 1 + 8 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/lib/album/AlbumInfoParser.ts b/src/lib/album/AlbumInfoParser.ts index 4c2e0e9..f8254ec 100644 --- a/src/lib/album/AlbumInfoParser.ts +++ b/src/lib/album/AlbumInfoParser.ts @@ -129,6 +129,10 @@ export default class AlbumInfoParser { if (streamUrl) { trackItem.streamUrl = streamUrl; } + const streamUrlHQ = track.file?.['mp3-v0']; + if (streamUrlHQ) { + trackItem.streamUrlHQ = streamUrlHQ; + } if (track.track_num !== undefined) { trackItem.position = track.track_num; } diff --git a/src/lib/article/ArticleParser.ts b/src/lib/article/ArticleParser.ts index 297dddc..f76410f 100644 --- a/src/lib/article/ArticleParser.ts +++ b/src/lib/article/ArticleParser.ts @@ -120,7 +120,8 @@ export default class ArticleParser { position: trackInfo.track_number, name: trackInfo.track_title, duration: trackInfo.audio_track_duration, - streamUrl: trackInfo.audio_url?.['mp3-128'] + streamUrl: trackInfo.audio_url?.['mp3-128'], + streamUrlHQ: trackInfo.audio_url?.['mp3-v0'] })); } diff --git a/src/lib/discovery/DiscoverResultParser.ts b/src/lib/discovery/DiscoverResultParser.ts index f9c4ed9..812a0e8 100644 --- a/src/lib/discovery/DiscoverResultParser.ts +++ b/src/lib/discovery/DiscoverResultParser.ts @@ -40,7 +40,8 @@ export default class DiscoverResultParser { album.featuredTrack = { name: item.featured_track.title, duration: item.featured_track.duration, - streamUrl: item.featured_track.file?.['mp3-128'] + streamUrl: item.featured_track.file?.['mp3-128'], + streamUrlHQ: item.featured_track.file?.['mp3-v0'] }; } if (item.bio_image && opts.artistImageFormat) { diff --git a/src/lib/fan/FanWishlistParser.ts b/src/lib/fan/FanWishlistParser.ts index a4eeed8..8243ed8 100644 --- a/src/lib/fan/FanWishlistParser.ts +++ b/src/lib/fan/FanWishlistParser.ts @@ -73,13 +73,15 @@ export default class FanWishlistParser extends FanItemsBaseParser { if (featuredTrackData) { const duration = featuredTrackData.duration; const streamUrl = featuredTrackData.file?.['mp3-128']; + const streamUrlHQ = featuredTrackData.file?.['mp3-v0']; if (mediaItemType === 'album') { (mediaItem as Album).featuredTrack = { position: featuredTrackData.track_number, name: featuredTrackData.title, artist: featuredTrackData.artist, duration, - streamUrl + streamUrl, + streamUrlHQ }; } else { diff --git a/src/lib/tag/AlbumHighlightsByTagParser.ts b/src/lib/tag/AlbumHighlightsByTagParser.ts index 542bfaa..6d5642f 100644 --- a/src/lib/tag/AlbumHighlightsByTagParser.ts +++ b/src/lib/tag/AlbumHighlightsByTagParser.ts @@ -51,7 +51,8 @@ export default class AlbumHighlightsByTagParser { if (item.featured_track_title) { album.featuredTrack = { name: item.featured_track_title, - streamUrl: item.audio_url?.['mp3-128'] + streamUrl: item.audio_url?.['mp3-128'], + streamUrlHQ: item.audio_url?.['mp3-v0'] }; } collectionRes.items.push(album); diff --git a/src/lib/tag/ReleasesByTagParser.ts b/src/lib/tag/ReleasesByTagParser.ts index 6ce4878..ebebad7 100644 --- a/src/lib/tag/ReleasesByTagParser.ts +++ b/src/lib/tag/ReleasesByTagParser.ts @@ -168,7 +168,8 @@ export default class ReleasesByTagParser { album.featuredTrack = { name: item.featured_track_title, position: item.featured_track_number, - streamUrl: item.audio_url?.['mp3-128'] + streamUrl: item.audio_url?.['mp3-128'], + streamUrlHQ: item.audio_url?.['mp3-v0'] }; } else if (mediaItemType === 'track') { diff --git a/src/lib/track/TrackInfoParser.ts b/src/lib/track/TrackInfoParser.ts index ccfe3af..91049c1 100644 --- a/src/lib/track/TrackInfoParser.ts +++ b/src/lib/track/TrackInfoParser.ts @@ -85,6 +85,11 @@ export default class TrackInfoParser { track.streamUrl = streamUrl; } + const streamUrlHQ = extra.trackinfo?.[0]?.file?.['mp3-v0']; + if (streamUrlHQ) { + track.streamUrlHQ = streamUrlHQ; + } + let byArtist; if (basic.inAlbum?.byArtist) { byArtist = basic.inAlbum.byArtist; diff --git a/src/lib/types/Track.ts b/src/lib/types/Track.ts index 8f00d54..331d4a8 100644 --- a/src/lib/types/Track.ts +++ b/src/lib/types/Track.ts @@ -6,6 +6,7 @@ interface Track extends MediaKind { duration?: number; seekPosition?: number; streamUrl?: string; + streamUrlHQ?: string; album?: Omit; position?: number; }