Add missing streamUrlHQ; exclude undefined vals

This commit is contained in:
patrickkfkan 2023-10-29 03:28:39 +08:00
parent 36bf5baecc
commit bc1b6cb7c2
5 changed files with 46 additions and 18 deletions

View File

@ -6,6 +6,7 @@ import { ParseError, brToNewLine, isAbsoluteUrl, normalizeUrl, stripTags } from
import { ImageFormat } from '../types/Image'; import { ImageFormat } from '../types/Image';
import Album from '../types/Album'; import Album from '../types/Album';
import { EOL } from 'os'; import { EOL } from 'os';
import Track from '../types/Track';
interface ArticleParseOptions { interface ArticleParseOptions {
imageBaseUrl: string; imageBaseUrl: string;
@ -115,14 +116,22 @@ export default class ArticleParser {
if (player.band_image_id && mediaItem.artist && opts.artistImageFormat?.id) { if (player.band_image_id && mediaItem.artist && opts.artistImageFormat?.id) {
mediaItem.artist.imageUrl = `${opts.imageBaseUrl}/img/${player.band_image_id}_${opts.artistImageFormat.id}.jpg`; mediaItem.artist.imageUrl = `${opts.imageBaseUrl}/img/${player.band_image_id}_${opts.artistImageFormat.id}.jpg`;
} }
if (mediaItemType === 'album' && Array.isArray(player.tracklist)) { const tracklist = player.tracklist;
(mediaItem as Album).tracks = player.tracklist.map((trackInfo: any) => ({ if (mediaItemType === 'album' && Array.isArray(tracklist)) {
(mediaItem as Album).tracks = tracklist.reduce<Omit<Track, 'type'>[]>((result, trackInfo: any) => {
const track: Omit<Track, 'type'> = {
position: trackInfo.track_number, position: trackInfo.track_number,
name: trackInfo.track_title, name: trackInfo.track_title,
duration: trackInfo.audio_track_duration, duration: trackInfo.audio_track_duration,
streamUrl: trackInfo.audio_url?.['mp3-128'], streamUrl: trackInfo.audio_url?.['mp3-128']
streamUrlHQ: trackInfo.audio_url?.['mp3-v0'] };
})); const streamUrlHQ = trackInfo.audio_url?.['mp3-v0'];
if (streamUrlHQ) {
track.streamUrlHQ = streamUrlHQ;
}
result.push(track);
return result;
}, []);
} }
article.mediaItems.push(mediaItem); article.mediaItems.push(mediaItem);

View File

@ -40,9 +40,12 @@ export default class DiscoverResultParser {
album.featuredTrack = { album.featuredTrack = {
name: item.featured_track.title, name: item.featured_track.title,
duration: item.featured_track.duration, 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']
}; };
const streamUrlHQ = item.featured_track.file?.['mp3-v0'];
if (streamUrlHQ) {
album.featuredTrack.streamUrlHQ = streamUrlHQ;
}
} }
if (item.bio_image && opts.artistImageFormat) { if (item.bio_image && opts.artistImageFormat) {
artist.imageUrl = `${opts.imageBaseUrl}/img/${item.bio_image.image_id}_${opts.artistImageFormat.id}.jpg`; artist.imageUrl = `${opts.imageBaseUrl}/img/${item.bio_image.image_id}_${opts.artistImageFormat.id}.jpg`;

View File

@ -75,18 +75,24 @@ export default class FanWishlistParser extends FanItemsBaseParser {
const streamUrl = featuredTrackData.file?.['mp3-128']; const streamUrl = featuredTrackData.file?.['mp3-128'];
const streamUrlHQ = featuredTrackData.file?.['mp3-v0']; const streamUrlHQ = featuredTrackData.file?.['mp3-v0'];
if (mediaItemType === 'album') { if (mediaItemType === 'album') {
(mediaItem as Album).featuredTrack = { const featuredTrack: Omit<Track, 'type'> = {
position: featuredTrackData.track_number, position: featuredTrackData.track_number,
name: featuredTrackData.title, name: featuredTrackData.title,
artist: featuredTrackData.artist, artist: featuredTrackData.artist,
duration, duration,
streamUrl, streamUrl
streamUrlHQ
}; };
if (streamUrlHQ) {
featuredTrack.streamUrlHQ = streamUrlHQ;
}
(mediaItem as Album).featuredTrack = featuredTrack;
} }
else { else {
(mediaItem as Track).duration = duration; (mediaItem as Track).duration = duration;
(mediaItem as Track).streamUrl = streamUrl; (mediaItem as Track).streamUrl = streamUrl;
if (streamUrlHQ) {
(mediaItem as Track).streamUrlHQ = streamUrlHQ;
}
} }
} }
return mediaItem; return mediaItem;

View File

@ -51,9 +51,12 @@ export default class AlbumHighlightsByTagParser {
if (item.featured_track_title) { if (item.featured_track_title) {
album.featuredTrack = { album.featuredTrack = {
name: item.featured_track_title, name: item.featured_track_title,
streamUrl: item.audio_url?.['mp3-128'], streamUrl: item.audio_url?.['mp3-128']
streamUrlHQ: item.audio_url?.['mp3-v0']
}; };
const streamUrlHQ = item.audio_url?.['mp3-v0'];
if (streamUrlHQ) {
album.featuredTrack.streamUrlHQ = streamUrlHQ;
}
} }
collectionRes.items.push(album); collectionRes.items.push(album);
} }

View File

@ -163,17 +163,24 @@ export default class ReleasesByTagParser {
if (item.art_id && opts.imageFormat?.id) { if (item.art_id && opts.imageFormat?.id) {
mediaItem.imageUrl = `${opts.imageBaseUrl}/img/a${item.art_id}_${opts.imageFormat.id}.jpg`; mediaItem.imageUrl = `${opts.imageBaseUrl}/img/a${item.art_id}_${opts.imageFormat.id}.jpg`;
} }
const streamUrl = item.audio_url?.['mp3-128'];
const streamUrlHQ = item.audio_url?.['mp3-v0'];
if (mediaItemType === 'album' && item.featured_track_title) { if (mediaItemType === 'album' && item.featured_track_title) {
const album = mediaItem as Album; const album = mediaItem as Album;
album.featuredTrack = { album.featuredTrack = {
name: item.featured_track_title, name: item.featured_track_title,
position: item.featured_track_number, position: item.featured_track_number,
streamUrl: item.audio_url?.['mp3-128'], streamUrl
streamUrlHQ: item.audio_url?.['mp3-v0']
}; };
if (streamUrlHQ) {
album.featuredTrack.streamUrlHQ = streamUrlHQ;
}
} }
else if (mediaItemType === 'track') { else if (mediaItemType === 'track') {
(mediaItem as Track).streamUrl = item.audio_url?.['mp3-128']; (mediaItem as Track).streamUrl = streamUrl;
if (streamUrlHQ) {
(mediaItem as Track).streamUrlHQ = streamUrlHQ;
}
} }
parsedItems.push(mediaItem); parsedItems.push(mediaItem);
} }