diff options
-rw-r--r-- | src/data/things/album.js | 6 | ||||
-rw-r--r-- | src/data/things/track.js | 29 |
2 files changed, 33 insertions, 2 deletions
diff --git a/src/data/things/album.js b/src/data/things/album.js index 427c5d7f..46dc84c6 100644 --- a/src/data/things/album.js +++ b/src/data/things/album.js @@ -144,6 +144,8 @@ export class Album extends Thing { artistProperty: input.value('albumArtistContributions'), }), + trackArtistText: contentString(), + trackArtistContribs: [ withResolvedContribs({ from: input.updateValue({validate: isContributionList}), @@ -638,6 +640,10 @@ export class Album extends Thing { transform: parseContributors, }, + 'Track Artist Text': { + property: 'trackArtistText', + }, + 'Track Artists': { property: 'trackArtistContribs', transform: parseContributors, diff --git a/src/data/things/track.js b/src/data/things/track.js index da6b3227..b2336a44 100644 --- a/src/data/things/track.js +++ b/src/data/things/track.js @@ -4,8 +4,15 @@ import CacheableObject from '#cacheable-object'; import {colors} from '#cli'; import {input} from '#composite'; import Thing from '#thing'; -import {isBoolean, isColor, isContributionList, isDate, isFileExtension} - from '#validators'; + +import { + isBoolean, + isColor, + isContentString, + isContributionList, + isDate, + isFileExtension, +} from '#validators'; import { parseAdditionalFiles, @@ -157,6 +164,20 @@ export class Track extends Thing { // > Update & expose - Credits and contributors + artistText: [ + exposeUpdateValueOrContinue({ + validate: input.value(isContentString), + }), + + withPropertyFromAlbum({ + property: input.value('trackArtistText'), + }), + + exposeDependency({ + dependency: '#album.trackArtistText', + }), + ], + artistContribs: [ inheritContributionListFromMainRelease(), @@ -569,6 +590,10 @@ export class Track extends Thing { // Credits and contributors + 'Artist Text': { + property: 'artistText', + }, + 'Artists': { property: 'artistContribs', transform: parseContributors, |