From 92d82211fdf3d653b1a5a4d2cfdad5c684e2367d Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 1 May 2026 08:06:52 -0300 Subject: content, data, validators: stub url entries --- src/data/things/ArtTag.js | 9 +++++++-- src/data/things/Artist.js | 4 ++-- src/data/things/MusicVideo.js | 27 ++++++++++++++++++--------- src/data/things/Track.js | 10 ++++++++-- src/data/things/album/Album.js | 3 ++- src/data/things/flash/Flash.js | 3 ++- src/data/things/group/Group.js | 4 ++-- 7 files changed, 41 insertions(+), 19 deletions(-) (limited to 'src/data/things') diff --git a/src/data/things/ArtTag.js b/src/data/things/ArtTag.js index 9d35f54d..1da32b0a 100644 --- a/src/data/things/ArtTag.js +++ b/src/data/things/ArtTag.js @@ -2,7 +2,8 @@ import {input, V} from '#composite'; import Thing from '#thing'; import {unique} from '#sugar'; import {isName} from '#validators'; -import {parseAdditionalNames, parseAnnotatedReferences} from '#yaml'; +import {parseAdditionalNames, parseAnnotatedReferences, parseURLs} + from '#yaml'; import { exitWithoutDependency, @@ -170,7 +171,11 @@ export class ArtTag extends Thing { 'Short Name': {property: 'nameShort'}, 'Directory': {property: 'directory'}, 'Description': {property: 'description'}, - 'Extra Reading URLs': {property: 'extraReadingURLs'}, + + 'Extra Reading URLs': { + property: 'extraReadingURLs', + transform: parseURLs, + }, 'Additional Names': { property: 'additionalNames', diff --git a/src/data/things/Artist.js b/src/data/things/Artist.js index 6ce448ff..64798527 100644 --- a/src/data/things/Artist.js +++ b/src/data/things/Artist.js @@ -4,7 +4,7 @@ import CacheableObject from '#cacheable-object'; import {colors} from '#cli'; import {input, V} from '#composite'; import Thing from '#thing'; -import {parseArtistAliases, parseArtwork} from '#yaml'; +import {parseArtistAliases, parseArtwork, parseURLs} from '#yaml'; import { sortAlbumsTracksChronologically, @@ -351,7 +351,7 @@ export class Artist extends Thing { fields: { 'Artist': {property: 'name'}, 'Directory': {property: 'directory'}, - 'URLs': {property: 'urls'}, + 'URLs': {property: 'urls', transform: parseURLs}, 'Context Notes': {property: 'contextNotes'}, // note: doesn't really work as an independent field yet diff --git a/src/data/things/MusicVideo.js b/src/data/things/MusicVideo.js index 77c8c619..dbb99a7f 100644 --- a/src/data/things/MusicVideo.js +++ b/src/data/things/MusicVideo.js @@ -4,9 +4,16 @@ import {colors} from '#cli'; import {input, V} from '#composite'; import {empty} from '#sugar'; import Thing from '#thing'; -import {is, isCuratedURL, isDate, isStringNonEmpty, validateArrayItems} - from '#validators'; -import {parseContributors, parseDate} from '#yaml'; +import {parseContributors, parseDate, parseURLs} from '#yaml'; + +import { + is, + isCuratedURL, + isCuratedURLEntry, + isDate, + isStringNonEmpty, + validateArrayItems, +} from '#validators'; import {constituteFrom} from '#composite/wiki-data'; @@ -66,6 +73,7 @@ export class MusicVideo extends Thing { constituteFrom('thing', V('date')), ], + // This is a string, not a {url, annotation} entry. url: { flags: {update: true, expose: true}, @@ -77,7 +85,7 @@ export class MusicVideo extends Thing { dependencies: ['_urls'], transform: (url, {'_urls': urls}) => (url ? url - : !empty(urls) ? urls[0] + : !empty(urls) ? urls[0].url : null), }, }, @@ -86,14 +94,14 @@ export class MusicVideo extends Thing { flags: {update: true, expose: true}, update: { - validate: validateArrayItems(isCuratedURL), + validate: validateArrayItems(isCuratedURLEntry), }, expose: { dependencies: ['_url'], transform: (urls, {'_url': url}) => - (url && urls ? [url, ...urls] - : url ? [url] + (url && urls ? [{url}, ...urls] + : url ? [{url}] : urls ? urls : []), }, @@ -142,8 +150,9 @@ export class MusicVideo extends Thing { 'Label': {property: 'label'}, 'Directory': {property: 'unqualifiedDirectory'}, 'Date': {property: 'date', transform: parseDate}, - 'URL': {property: 'url'}, - 'URLs': {property: 'urls'}, + + 'URL': {property: 'url'}, // Just a string, not an object + 'URLs': {property: 'urls', transform: parseURLs}, 'Cover Art File Extension': {property: 'coverArtFileExtension'}, 'Cover Art Dimensions': {property: 'coverArtDimensions'}, diff --git a/src/data/things/Track.js b/src/data/things/Track.js index 36e3733d..cb785211 100644 --- a/src/data/things/Track.js +++ b/src/data/things/Track.js @@ -35,6 +35,7 @@ import { parseDuration, parseLyrics, parseMusicVideos, + parseURLs, } from '#yaml'; import { @@ -1004,13 +1005,18 @@ export class Track extends Thing { transform: parseDuration, }, - 'Color': {property: 'color'}, + 'Color': { + property: 'color', + }, 'Needs Lyrics': { property: 'needsLyrics', }, - 'URLs': {property: 'urls'}, + 'URLs': { + property: 'urls', + transform: parseURLs, + }, // Artworks diff --git a/src/data/things/album/Album.js b/src/data/things/album/Album.js index 61420e52..1ae10ab1 100644 --- a/src/data/things/album/Album.js +++ b/src/data/things/album/Album.js @@ -17,6 +17,7 @@ import { parseDimensions, parseMusicVideos, parseWallpaperParts, + parseURLs, } from '#yaml'; import {withFlattenedList, withPropertyFromList} from '#composite/data'; @@ -651,7 +652,7 @@ export class Album extends Thing { 'Color': {property: 'color'}, - 'URLs': {property: 'urls'}, + 'URLs': {property: 'urls', transform: parseURLs}, // Artworks // (Note - this YAML section is deliberately ordered differently diff --git a/src/data/things/flash/Flash.js b/src/data/things/flash/Flash.js index b06b0452..588fbae5 100644 --- a/src/data/things/flash/Flash.js +++ b/src/data/things/flash/Flash.js @@ -12,6 +12,7 @@ import { parseCreditingSources, parseDate, parseDimensions, + parseURLs, } from '#yaml'; import {withPropertyFromObject} from '#composite/data'; @@ -216,7 +217,7 @@ export class Flash extends Thing { 'Directory': {property: 'directory'}, 'Page': {property: 'page'}, 'Color': {property: 'color'}, - 'URLs': {property: 'urls'}, + 'URLs': {property: 'urls', transform: parseURLs}, 'Date': { property: 'date', diff --git a/src/data/things/group/Group.js b/src/data/things/group/Group.js index f8dd413e..99ad633b 100644 --- a/src/data/things/group/Group.js +++ b/src/data/things/group/Group.js @@ -1,7 +1,7 @@ import {input, V} from '#composite'; import Thing from '#thing'; import {isBoolean} from '#validators'; -import {parseAnnotatedReferences, parseSerieses} from '#yaml'; +import {parseAnnotatedReferences, parseSerieses, parseURLs} from '#yaml'; import {withPropertyFromObject} from '#composite/data'; import {withUniqueReferencingThing} from '#composite/wiki-data'; @@ -176,7 +176,7 @@ export class Group extends Thing { }, 'Description': {property: 'description'}, - 'URLs': {property: 'urls'}, + 'URLs': {property: 'urls', transform: parseURLs}, 'Closely Linked Artists': { property: 'closelyLinkedArtists', -- cgit 1.3.0-6-gf8a5