From 8b14c2fa84188212945dd7c4b4ff149e6cb7b18b Mon Sep 17 00:00:00 2001 From: encode42 Date: Sun, 8 Dec 2024 18:07:29 -0500 Subject: [PATCH] Add "slug" field to Track and Album --- src/lib/album/AlbumInfoParser.ts | 3 +++ src/lib/track/TrackInfoParser.ts | 9 ++++++++- src/lib/types/Album.ts | 1 + src/lib/types/Track.ts | 2 ++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/lib/album/AlbumInfoParser.ts b/src/lib/album/AlbumInfoParser.ts index a23ab3f..19cb614 100644 --- a/src/lib/album/AlbumInfoParser.ts +++ b/src/lib/album/AlbumInfoParser.ts @@ -96,6 +96,9 @@ export default class AlbumInfoParser { const releaseUrl = normalizeUrl(release['@id'], album.url); if (releaseUrl) { releaseItem.url = releaseUrl; + + const urlParts = releaseUrl.split('/'); + releaseItem.slug = urlParts[urlParts.length - 1]; } if (release.image) { if (Array.isArray(release.image) && release.image[0]) { diff --git a/src/lib/track/TrackInfoParser.ts b/src/lib/track/TrackInfoParser.ts index 7a90627..ca3562f 100644 --- a/src/lib/track/TrackInfoParser.ts +++ b/src/lib/track/TrackInfoParser.ts @@ -60,14 +60,21 @@ export default class TrackInfoParser { throw new ParseError('Failed to parse track info: invalid extra data'); } + const url = basic['@id']; + const track: Track = { type: 'track', name: basic.name, description: basic.description.replaceAll('\r\n', '\n') || '', - url: basic['@id'], + url, position: extra.current?.track_number }; + if (url) { + const urlParts = url.split('/'); + url.slug = urlParts[urlParts.length - 1]; + } + const imageUrl = reformatImageUrl(basic.image, opts.albumImageFormat); if (imageUrl) { track.imageUrl = imageUrl; diff --git a/src/lib/types/Album.ts b/src/lib/types/Album.ts index 807d4ce..520af09 100644 --- a/src/lib/types/Album.ts +++ b/src/lib/types/Album.ts @@ -17,6 +17,7 @@ export interface AlbumRelease { name: string; format: string; url?: string; + slug?: string; imageUrl?: string; description?: string; } diff --git a/src/lib/types/Track.ts b/src/lib/types/Track.ts index 75d2c11..b5e1c7f 100644 --- a/src/lib/types/Track.ts +++ b/src/lib/types/Track.ts @@ -4,6 +4,8 @@ import MediaKind from './MediaKind.js'; interface Track extends MediaKind { type: 'track'; description?: string; + url?: string; + slug?: string; duration?: number; seekPosition?: number; streamUrl?: string;