diff --git a/.gitignore b/.gitignore index af90ec9..2c3c4af 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ exampleVault/.obsidian/plugins/obsidian-media-db-plugin/* !exampleVault/.obsidian/plugins/obsidian-media-db-plugin/.hotreload exampleVault/Media DB/* +meta.txt diff --git a/src/api/apis/MusicBrainzAPI.ts b/src/api/apis/MusicBrainzAPI.ts index 734b3b6..e1d0d7a 100644 --- a/src/api/apis/MusicBrainzAPI.ts +++ b/src/api/apis/MusicBrainzAPI.ts @@ -191,6 +191,14 @@ export class MusicBrainzAPI extends APIModel { const releaseData = (await releaseResponse.json) as MediaResponse; const tracks = extractTracksFromMedia(releaseData.media); + // Calculate total album length for the first release + const totalrawLength = + releaseData.media[0]?.tracks.reduce((sum, track) => { + const len = track.length ?? track.recording?.length; + return typeof len === 'number' && !isNaN(len) ? sum + len : sum; + }, 0) ?? 0; + const albumLengthCalc = millisecondsToMinutes(totalrawLength); + console.log(releaseData); return new MusicReleaseModel({ @@ -208,7 +216,8 @@ export class MusicBrainzAPI extends APIModel { language: releaseData['text-representation'].language ? getLanguageName(releaseData['text-representation'].language) : 'Unknown', genres: result.genres.map(g => g.name), subType: result['primary-type'], - trackCount: releaseData.media[0]['track-count'] ?? 0, + albumDuration: albumLengthCalc, + trackCount: releaseData.media[0]?.['track-count'] ?? 0, tracks: tracks, rating: result.rating.value * 2, diff --git a/src/models/MusicReleaseModel.ts b/src/models/MusicReleaseModel.ts index 971b30a..38427a9 100644 --- a/src/models/MusicReleaseModel.ts +++ b/src/models/MusicReleaseModel.ts @@ -12,6 +12,7 @@ export class MusicReleaseModel extends MediaTypeModel { image: string; rating: number; releaseDate: string; + albumDuration: string; trackCount: number; tracks: { number: number; @@ -44,6 +45,7 @@ export class MusicReleaseModel extends MediaTypeModel { } this.type = this.getMediaType(); + this.albumDuration = obj.albumDuration ?? '0:00'; this.trackCount = obj.trackCount ?? 0; this.tracks = obj.tracks ?? []; this.language = obj.language ?? '';