Add releaseGroupType to ReleaseResult and mbRelease

pull/3800/merge^2
Anatole Sot 3 months ago
parent 84ccdd022b
commit b8c1c7cbbc

@ -795,7 +795,8 @@ components:
type: string
mediaInfo:
$ref: '#/components/schemas/MediaInfo'
releaseGroupType:
type: string
ReleaseGroupResult:
type: object
properties:
@ -823,6 +824,10 @@ components:
type: string
mediaInfo:
$ref: '#/components/schemas/MediaInfo'
releases:
type: array
items:
$ref: '#/components/schemas/ReleaseResult'
Genre:
type: object
properties:

@ -194,6 +194,7 @@ function convertRelease(release: Release): mbRelease {
: undefined,
tracks: (release.media ?? []).flatMap(convertMedium),
tags: (release.tags ?? []).map(convertTag),
releaseGroupType: release['release-group']?.['primary-type'] || 'Other',
};
}
@ -558,9 +559,8 @@ class MusicBrainz extends BaseNodeBrainz {
};
// Get the first 25 results
const total = data['recording-count'];
let results: mbRecording[] = await data.recordings.map(
convertRecording
);
let results: mbRecording[] =
data.recordings.map(convertRecording);
// Slice the results into smaller chunks to avoid hitting the limit of 100
@ -667,9 +667,8 @@ class MusicBrainz extends BaseNodeBrainz {
};
// Get the first 25 results
const total = data['release-group-count'];
let results: mbReleaseGroup[] = await data['release-groups'].map(
convertReleaseGroup
);
let results: mbReleaseGroup[] =
data['release-groups'].map(convertReleaseGroup);
// Slice the results into smaller chunks to avoid hitting the limit of 100
@ -768,7 +767,7 @@ class MusicBrainz extends BaseNodeBrainz {
return new Promise<mbRelease[]>((resolve, reject) => {
this.browse(
'release',
{ artist: artistId, offset: startOffset },
{ artist: artistId, offset: startOffset, inc: 'tags+release-groups' },
async (error, data) => {
if (error) {
reject(error);
@ -780,9 +779,7 @@ class MusicBrainz extends BaseNodeBrainz {
};
// Get the first 25 results
const total = data['release-count'];
let results: mbRelease[] = await data.releases.map(
convertRelease
);
let results: mbRelease[] = data.releases.map(convertRelease);
// Slice the results into smaller chunks to avoid hitting the limit of 100
@ -799,6 +796,7 @@ class MusicBrainz extends BaseNodeBrainz {
artist: artistId,
offset: i,
limit: 100,
inc: 'tags+release-groups',
},
(error, data) => {
if (error) {
@ -889,7 +887,7 @@ class MusicBrainz extends BaseNodeBrainz {
};
// Get the first 25 results
const total = data['work-count'];
let results: mbWork[] = await data.works.map(convertWork);
let results: mbWork[] = data.works.map(convertWork);
// Slice the results into smaller chunks to avoid hitting the limit of 100

@ -44,6 +44,7 @@ export interface mbRelease extends mbDefaultType {
artist: mbArtist[];
date?: Date;
tracks?: mbRecording[];
releaseGroupType?: string;
}
export enum mbReleaseGroupType {

@ -120,6 +120,7 @@ export interface ReleaseResult {
tracks?: RecordingResult[];
tags: string[];
mediaInfo?: Media;
releaseGroupType?: string;
}
export interface RecordingResult {
@ -326,6 +327,7 @@ export const mapReleaseResult = async (
: []
),
tags: release.tags,
releaseGroupType: release.releaseGroupType,
mediaInfo: media,
});

@ -25,7 +25,13 @@ musicRoutes.get('/artist/:id', async (req, res, next) => {
const media = await Media.getMedia(artist.id, MediaType.MUSIC);
return res.status(200).json(await mapArtistResult(artist, media));
const results = await mapArtistResult(artist, media);
for (const release of results.releases) {
release.mediaInfo = await Media.getMedia(release.id, MediaType.MUSIC);
}
return res.status(200).json(results);
} catch (e) {
logger.debug('Something went wrong retrieving artist', {
label: 'API',
@ -69,9 +75,13 @@ musicRoutes.get('/release-group/:id', async (req, res, next) => {
const media = await Media.getMedia(releaseGroup.id, MediaType.MUSIC);
return res
.status(200)
.json(await mapReleaseGroupResult(releaseGroup, media));
const results = await mapReleaseGroupResult(releaseGroup, media);
for (const release of results.releases) {
release.mediaInfo = await Media.getMedia(release.id, MediaType.MUSIC);
}
return res.status(200).json(results);
} catch (e) {
logger.debug('Something went wrong retrieving release group', {
label: 'API',

Loading…
Cancel
Save