diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-04-08 18:33:46 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-04-10 16:02:42 -0300 |
commit | bb7bebc12df16c69598215de4c713ea47eb12eda (patch) | |
tree | 13e78ffef41ff5ce70a50a757ab4ff2488a179aa /src/data | |
parent | a0a7f15520b55043d9321a455a49a33558254aa1 (diff) |
data, thumbs: Album.wallpaperArtwork, Album.bannerArtwork
Diffstat (limited to 'src/data')
-rw-r--r-- | src/data/things/album.js | 95 |
1 files changed, 89 insertions, 6 deletions
diff --git a/src/data/things/album.js b/src/data/things/album.js index 1a1235e6..e0d9884f 100644 --- a/src/data/things/album.js +++ b/src/data/things/album.js @@ -35,6 +35,7 @@ import { commentary, color, commentatorArtists, + constitutibleArtwork, constitutibleArtworkList, contentString, contribsPresent, @@ -139,7 +140,11 @@ export class Album extends Thing { ], wallpaperParts: [ - exitWithoutContribs({contribs: 'wallpaperArtistContribs'}), + exitWithoutContribs({ + contribs: 'wallpaperArtistContribs', + value: input.value([]), + }), + wallpaperParts(), ], @@ -160,6 +165,28 @@ export class Album extends Thing { dimensions(), ], + wallpaperArtwork: [ + exitWithoutDependency({ + dependency: 'wallpaperArtistContribs', + mode: input.value('empty'), + value: input.value(null), + }), + + constitutibleArtwork.fromYAMLFieldSpec + .call(this, 'Wallpaper Artwork'), + ], + + bannerArtwork: [ + exitWithoutDependency({ + dependency: 'bannerArtistContribs', + mode: input.value('empty'), + value: input.value(null), + }), + + constitutibleArtwork.fromYAMLFieldSpec + .call(this, 'Banner Artwork'), + ], + coverArtworks: [ exitWithoutDependency({ dependency: 'coverArtistContribs', @@ -416,10 +443,10 @@ export class Album extends Thing { soupyReverse.artworkContributionsBy('albumData', 'coverArtworks'), albumWallpaperArtistContributionsBy: - soupyReverse.contributionsBy('albumData', 'wallpaperArtistContribs'), + soupyReverse.artworkContributionsBy('albumData', 'wallpaperArtwork', {single: true}), albumBannerArtistContributionsBy: - soupyReverse.contributionsBy('albumData', 'bannerArtistContribs'), + soupyReverse.artworkContributionsBy('albumData', 'bannerArtwork', {single: true}), albumsWithCommentaryBy: { bindTo: 'albumData', @@ -480,6 +507,30 @@ export class Album extends Thing { }), }, + 'Banner Artwork': { + property: 'bannerArtwork', + transform: + parseArtwork({ + single: true, + fileExtensionFromThingProperty: 'bannerFileExtension', + dateFromThingProperty: 'date', + artistContribsFromThingProperty: 'bannerArtistContribs', + artistContribsArtistProperty: 'albumBannerArtistContributions', + }), + }, + + 'Wallpaper Artwork': { + property: 'wallpaperArtwork', + transform: + parseArtwork({ + single: true, + fileExtensionFromThingProperty: 'wallpaperFileExtension', + dateFromThingProperty: 'date', + artistContribsFromThingProperty: 'wallpaperArtistContribs', + artistContribsArtistProperty: 'albumWallpaperArtistContributions', + }), + }, + 'Cover Art Date': { property: 'coverArtDate', transform: parseDate, @@ -661,6 +712,14 @@ export class Album extends Thing { artworkData.push(...album.coverArtworks); + if (album.bannerArtwork) { + artworkData.push(album.bannerArtwork); + } + + if (album.wallpaperArtwork) { + artworkData.push(album.wallpaperArtwork); + } + album.trackSections = trackSections; } @@ -678,11 +737,35 @@ export class Album extends Thing { }, }); - getOwnArtworkPath(_artwork) { + getOwnArtworkPath(artwork) { + if (artwork === this.bannerArtwork) { + return [ + 'media.albumBanner', + this.directory, + artwork.fileExtension, + ]; + } + + if (artwork === this.wallpaperArtwork) { + if (!empty(this.wallpaperParts)) { + return null; + } + + return [ + 'media.albumWallpaper', + this.directory, + artwork.fileExtension, + ]; + } + return [ 'media.albumCover', - this.directory, - this.coverArtFileExtension, + + (artwork.unqualifiedDirectory + ? this.directory + '-' + artwork.unqualifiedDirectory + : this.directory), + + artwork.fileExtension, ]; } } |