« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/things/track.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/things/track.js')
-rw-r--r--src/data/things/track.js25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/data/things/track.js b/src/data/things/track.js
index 3c4b5409..8652fbdf 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -31,6 +31,7 @@ import {
   parseDimensions,
   parseDuration,
   parseLyrics,
+  parseMusicVideos,
 } from '#yaml';
 
 import {
@@ -113,6 +114,7 @@ export class Track extends Thing {
     CommentaryEntry,
     CreditingSourcesEntry,
     LyricsEntry,
+    MusicVideo,
     ReferencingSourcesEntry,
     TrackSection,
     WikiInfo,
@@ -488,6 +490,10 @@ export class Track extends Thing {
       }),
     ],
 
+    // > Update & expose - Music videos
+
+    musicVideos: thingList(V(MusicVideo)),
+
     // > Update & expose - Additional files
 
     additionalFiles: thingList(V(AdditionalFile)),
@@ -993,6 +999,13 @@ export class Track extends Thing {
       'Referenced Tracks': {property: 'referencedTracks'},
       'Sampled Tracks': {property: 'sampledTracks'},
 
+      // Music videos
+
+      'Music Videos': {
+        property: 'musicVideos',
+        transform: parseMusicVideos,
+      },
+
       // Additional files
 
       'Additional Files': {
@@ -1216,6 +1229,18 @@ export class Track extends Thing {
     ];
   }
 
+  getOwnMusicVideoCoverPath(musicVideo) {
+    if (!this.album) return null;
+    if (!musicVideo.unqualifiedDirectory) return null;
+
+    return [
+      'media.trackCover',
+      this.album.directory,
+      this.directory + '-' + musicVideo.unqualifiedDirectory,
+      musicVideo.coverArtFileExtension,
+    ];
+  }
+
   countOwnContributionInContributionTotals(_contrib) {
     if (!this.countInArtistTotals) {
       return false;