From cd6c3ebdb20ecee2944f0de1cfbed5a24a924cc5 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Sun, 11 Jan 2026 17:31:16 -0400 Subject: content: gAIPTracksChunk: consider contributions from main release --- .../generateArtistInfoPageTracksChunk.js | 39 +++++++++++++++++----- 1 file changed, 31 insertions(+), 8 deletions(-) (limited to 'src/content/dependencies/generateArtistInfoPageTracksChunk.js') diff --git a/src/content/dependencies/generateArtistInfoPageTracksChunk.js b/src/content/dependencies/generateArtistInfoPageTracksChunk.js index ce8b284b..50278271 100644 --- a/src/content/dependencies/generateArtistInfoPageTracksChunk.js +++ b/src/content/dependencies/generateArtistInfoPageTracksChunk.js @@ -2,21 +2,44 @@ import {sortAlbumsTracksChronologically} from '#sort'; import {empty, unique} from '#sugar'; import {getTotalDuration} from '#wiki-data'; +function countTowardTotals(contribs) { + const track = contribs[0].thing; + + if (track.isSecondaryRelease) { + const all = + Object.fromEntries( + unique(contribs.map(contrib => contrib.thingProperty)) + .map(prop => [ + prop, + track.mainReleaseTrack[prop].slice(), + ])); + + contribs = contribs.flatMap(a => { + const array = all[a.thingProperty]; + const index = + array.findIndex(b => + b.artist === a.artist && + b.annotation === a.annotation); + + if (index === -1) return []; + return array.splice(index, 1); + }).filter(Boolean); + } + + return contribs.some(contrib => + contrib.countInContributionTotals || + contrib.countInDurationTotals); +} + export default { query: (_artist, _album, trackContribLists) => ({ contribListsCountingTowardTotals: trackContribLists - .filter(trackContribs => trackContribs - .some(contrib => - contrib.countInContributionTotals || - contrib.countInDurationTotals)), + .filter(contribs => countTowardTotals(contribs)), contribListsNotCountingTowardTotals: trackContribLists - .filter(trackContribs => trackContribs - .every(contrib => - !contrib.countInContributionTotals && - !contrib.countInDurationTotals)), + .filter(contribs => !countTowardTotals(contribs)), }), relations: (relation, query, artist, album, _trackContribLists) => ({ -- cgit 1.3.0-6-gf8a5