summaryrefslogtreecommitdiffhomepage
path: root/yt-music-dl-web/src/features/segment-editor/metadata.ts
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-07-01 22:16:09 +0900
committerAdam Malczewski <[email protected]>2026-07-01 22:16:52 +0900
commitb476f7703c594e9c8ff1b1ecc77f8e2493ef04b4 (patch)
tree22971336f0a7a1ec68f7b9b4f24c80d159ea1118 /yt-music-dl-web/src/features/segment-editor/metadata.ts
parent6402a83fe83a0b1a9f5959ff7f45d07d3e309c6e (diff)
downloadyt-walkerman-main.tar.gz
yt-walkerman-main.zip
Phase 8: album art in metadata search results (frontend)HEADmain
Diffstat (limited to 'yt-music-dl-web/src/features/segment-editor/metadata.ts')
-rw-r--r--yt-music-dl-web/src/features/segment-editor/metadata.ts14
1 files changed, 13 insertions, 1 deletions
diff --git a/yt-music-dl-web/src/features/segment-editor/metadata.ts b/yt-music-dl-web/src/features/segment-editor/metadata.ts
index 530893a..7838686 100644
--- a/yt-music-dl-web/src/features/segment-editor/metadata.ts
+++ b/yt-music-dl-web/src/features/segment-editor/metadata.ts
@@ -137,6 +137,8 @@ export interface SidebarItem {
score?: number;
/** MusicBrainz MBID; absent for the YouTube entry. */
id?: string;
+ /** Cover Art Archive front-cover URL; absent when the result has none. */
+ artUrl?: string;
}
/** The "Generated from YouTube" entry: the segment's current parsed fields. Pure. */
@@ -163,6 +165,7 @@ export function toSidebarItem(result: MetadataResult): SidebarItem {
};
if (result.album !== undefined) item.album = result.album;
if (result.trackNumber !== undefined) item.trackNumber = result.trackNumber;
+ if (result.artUrl !== undefined) item.artUrl = result.artUrl;
return item;
}
@@ -183,7 +186,9 @@ export function sidebarItems(segment: SegmentDraft, results: MetadataResult[]):
* already mirrors the segment's current parsed values) → no edits.
* - MusicBrainz result: sets title + artist always; album + trackNumber only
* when the result actually carries them (MB omits these from lightweight
- * recording search entries).
+ * recording search entries). When the result has a Cover Art Archive
+ * `artUrl`, emits an `editSegmentAlbumArt` action with a url-kind
+ * `AlbumArtRef` so the backend downloads + embeds the front cover.
*
* Pure: (segmentId, item) → actions. Dispatched by the component through
* `onaction`; the composition root folds each over the pure `reduce`.
@@ -200,6 +205,13 @@ export function fillActions(segmentId: string, item: SidebarItem): EditAction[]
if (item.trackNumber !== undefined) {
actions.push({ type: "editSegmentTrackNumber", segmentId, trackNumber: item.trackNumber });
}
+ if (item.artUrl !== undefined) {
+ actions.push({
+ type: "editSegmentAlbumArt",
+ segmentId,
+ albumArt: { kind: "url", url: item.artUrl },
+ });
+ }
return actions;
}