diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-04-14 21:16:30 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-04-14 21:35:13 -0300 |
commit | fbe7f21f6381b0f93d4b89ae8163ec48c4185a9f (patch) | |
tree | 8e9096961057ab1c93de4912ca30a8fce7bf01d6 /src/data/things | |
parent | 7342b35d0da518fa5559dadc3239fd574a105432 (diff) |
data: LyricsEntry & co
Diffstat (limited to 'src/data/things')
-rw-r--r-- | src/data/things/album.js | 14 | ||||
-rw-r--r-- | src/data/things/content.js (renamed from src/data/things/commentary-entry.js) | 6 | ||||
-rw-r--r-- | src/data/things/flash.js | 6 | ||||
-rw-r--r-- | src/data/things/index.js | 4 | ||||
-rw-r--r-- | src/data/things/track.js | 22 |
5 files changed, 40 insertions, 12 deletions
diff --git a/src/data/things/album.js b/src/data/things/album.js index 2f5e1093..8a25a8ac 100644 --- a/src/data/things/album.js +++ b/src/data/things/album.js @@ -3,6 +3,7 @@ export const DATA_ALBUM_DIRECTORY = 'album'; import * as path from 'node:path'; import {inspect} from 'node:util'; +import CacheableObject from '#cacheable-object'; import {colors} from '#cli'; import {input} from '#composite'; import {traverse} from '#node-utils'; @@ -18,6 +19,7 @@ import { parseArtwork, parseCommentary, parseContributors, + parseCreditingSources, parseDate, parseDimensions, parseWallpaperParts, @@ -70,6 +72,7 @@ export class Album extends Thing { ArtTag, Artwork, CommentaryEntry, + CreditingSourcesEntry, Group, Track, TrackSection, @@ -210,7 +213,7 @@ export class Album extends Thing { }), creditSources: thingList({ - class: input.value(CommentaryEntry), + class: input.value(CreditingSourcesEntry), }), additionalFiles: additionalFiles(), @@ -610,7 +613,7 @@ export class Album extends Thing { 'Credit Sources': { property: 'creditSources', - transform: parseCommentary, + transform: parseCreditingSources, }, 'Additional Files': { @@ -686,6 +689,7 @@ export class Album extends Thing { const artworkData = []; const commentaryData = []; const creditingSourceData = []; + const lyricsData = []; for (const {header: album, entries} of results) { const trackSections = []; @@ -734,6 +738,11 @@ export class Album extends Thing { artworkData.push(...entry.trackArtworks); commentaryData.push(...entry.commentary); creditingSourceData.push(...entry.creditSources); + + // TODO: As exposed, Track.lyrics tries to inherit from the main + // release, which is impossible before the data's been linked. + // We just use the update value here. But it's icky! + lyricsData.push(...CacheableObject.getUpdateValue(entry, 'lyrics') ?? []); } closeCurrentTrackSection(); @@ -764,6 +773,7 @@ export class Album extends Thing { artworkData, commentaryData, creditingSourceData, + lyricsData, }; }, diff --git a/src/data/things/commentary-entry.js b/src/data/things/content.js index 3cc53d85..7f352795 100644 --- a/src/data/things/commentary-entry.js +++ b/src/data/things/content.js @@ -16,7 +16,7 @@ import { import {withWebArchiveDate} from '#composite/things/commentary-entry'; -export class CommentaryEntry extends Thing { +export class ContentEntry extends Thing { static [Thing.getPropertyDescriptors] = ({Artist}) => ({ // Update & expose @@ -116,3 +116,7 @@ export class CommentaryEntry extends Thing { }, }; } + +export class CommentaryEntry extends ContentEntry {} +export class LyricsEntry extends ContentEntry {} +export class CreditingSourcesEntry extends ContentEntry {} diff --git a/src/data/things/flash.js b/src/data/things/flash.js index d115db9f..dac674dd 100644 --- a/src/data/things/flash.js +++ b/src/data/things/flash.js @@ -12,6 +12,7 @@ import { parseAdditionalNames, parseCommentary, parseContributors, + parseCreditingSources, parseDate, parseDimensions, } from '#yaml'; @@ -54,6 +55,7 @@ export class Flash extends Thing { static [Thing.getPropertyDescriptors] = ({ CommentaryEntry, + CreditingSourcesEntry, Track, FlashAct, WikiInfo, @@ -132,7 +134,7 @@ export class Flash extends Thing { }), creditSources: thingList({ - class: input.value(CommentaryEntry), + class: input.value(CreditingSourcesEntry), }), // Update only @@ -254,7 +256,7 @@ export class Flash extends Thing { 'Credit Sources': { property: 'creditSources', - transform: parseCommentary, + transform: parseCreditingSources, }, 'Review Points': {ignore: true}, diff --git a/src/data/things/index.js b/src/data/things/index.js index 59d8a490..b832ab75 100644 --- a/src/data/things/index.js +++ b/src/data/things/index.js @@ -13,7 +13,7 @@ import * as albumClasses from './album.js'; import * as artTagClasses from './art-tag.js'; import * as artistClasses from './artist.js'; import * as artworkClasses from './artwork.js'; -import * as commentaryEntryClasses from './commentary-entry.js'; +import * as contentClasses from './content.js'; import * as contributionClasses from './contribution.js'; import * as flashClasses from './flash.js'; import * as groupClasses from './group.js'; @@ -30,7 +30,7 @@ const allClassLists = { 'art-tag.js': artTagClasses, 'artist.js': artistClasses, 'artwork.js': artworkClasses, - 'commentary-entry.js': commentaryEntryClasses, + 'content.js': contentClasses, 'contribution.js': contributionClasses, 'flash.js': flashClasses, 'group.js': groupClasses, diff --git a/src/data/things/track.js b/src/data/things/track.js index 4a30433c..ae7be170 100644 --- a/src/data/things/track.js +++ b/src/data/things/track.js @@ -14,9 +14,11 @@ import { parseArtwork, parseCommentary, parseContributors, + parseCreditingSources, parseDate, parseDimensions, parseDuration, + parseLyrics, } from '#yaml'; import {withPropertyFromObject} from '#composite/data'; @@ -46,7 +48,6 @@ import { directory, duration, flag, - lyrics, name, referenceList, referencedArtworkList, @@ -89,7 +90,9 @@ export class Track extends Thing { ArtTag, Artwork, CommentaryEntry, + CreditingSourcesEntry, Flash, + LyricsEntry, TrackSection, WikiInfo, }) => ({ @@ -223,12 +226,18 @@ export class Track extends Thing { }), creditSources: thingList({ - class: input.value(CommentaryEntry), + class: input.value(CreditingSourcesEntry), }), lyrics: [ + // TODO: Inherited lyrics are literally the same objects, so of course + // their .thing properties aren't going to point back to this one, and + // certainly couldn't be recontextualized... inheritFromMainRelease(), - lyrics(), + + thingList({ + class: input.value(LyricsEntry), + }), ], additionalFiles: additionalFiles(), @@ -488,7 +497,10 @@ export class Track extends Thing { 'Always Reference By Directory': {property: 'alwaysReferenceByDirectory'}, - 'Lyrics': {property: 'lyrics'}, + 'Lyrics': { + property: 'lyrics', + transform: parseLyrics, + }, 'Commentary': { property: 'commentary', @@ -497,7 +509,7 @@ export class Track extends Thing { 'Credit Sources': { property: 'creditSources', - transform: parseCommentary, + transform: parseCreditingSources, }, 'Additional Files': { |