navidrome/plugins/capabilities/metadata_agent.yaml
Deluan Quintão fda35dd8ce
Some checks are pending
Pipeline: Test, Lint, Build / Get version info (push) Waiting to run
Pipeline: Test, Lint, Build / Lint Go code (push) Waiting to run
Pipeline: Test, Lint, Build / Test Go code (push) Waiting to run
Pipeline: Test, Lint, Build / Test JS code (push) Waiting to run
Pipeline: Test, Lint, Build / Lint i18n files (push) Waiting to run
Pipeline: Test, Lint, Build / Check Docker configuration (push) Waiting to run
Pipeline: Test, Lint, Build / Build (push) Blocked by required conditions
Pipeline: Test, Lint, Build / Build-1 (push) Blocked by required conditions
Pipeline: Test, Lint, Build / Build-2 (push) Blocked by required conditions
Pipeline: Test, Lint, Build / Build-3 (push) Blocked by required conditions
Pipeline: Test, Lint, Build / Build-4 (push) Blocked by required conditions
Pipeline: Test, Lint, Build / Build-5 (push) Blocked by required conditions
Pipeline: Test, Lint, Build / Build-6 (push) Blocked by required conditions
Pipeline: Test, Lint, Build / Build-7 (push) Blocked by required conditions
Pipeline: Test, Lint, Build / Build-8 (push) Blocked by required conditions
Pipeline: Test, Lint, Build / Build-9 (push) Blocked by required conditions
Pipeline: Test, Lint, Build / Push to GHCR (push) Blocked by required conditions
Pipeline: Test, Lint, Build / Push to Docker Hub (push) Blocked by required conditions
Pipeline: Test, Lint, Build / Cleanup digest artifacts (push) Blocked by required conditions
Pipeline: Test, Lint, Build / Build Windows installers (push) Blocked by required conditions
Pipeline: Test, Lint, Build / Package/Release (push) Blocked by required conditions
Pipeline: Test, Lint, Build / Upload Linux PKG (push) Blocked by required conditions
feat(plugins): add similar songs retrieval functions and improve duration consistency (#4933)
* feat: add duration filtering for similar songs matching

Signed-off-by: Deluan <deluan@navidrome.org>

* test: refactor expectations for similar songs in provider matching tests

Signed-off-by: Deluan <deluan@navidrome.org>

* feat(plugins): add functions to retrieve similar songs by track, album, and artist

Signed-off-by: Deluan <deluan@navidrome.org>

* fix(plugins): support uint32 in ndpgen

Signed-off-by: Deluan <deluan@navidrome.org>

* fix(plugins): update duration field to use seconds as float instead of milliseconds as uint32

Signed-off-by: Deluan <deluan@navidrome.org>

* fix: add helper functions for Rust's skip_serializing_if with numeric types

Signed-off-by: Deluan <deluan@navidrome.org>

* feat(provider): enhance track matching logic to fallback to title match when duration-filtered tracks fail

---------

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-26 18:28:41 -05:00

393 lines
15 KiB
YAML

version: v1-draft
exports:
nd_get_artist_mbid:
description: GetArtistMBID retrieves the MusicBrainz ID for an artist.
input:
$ref: '#/components/schemas/ArtistMBIDRequest'
contentType: application/json
output:
$ref: '#/components/schemas/ArtistMBIDResponse'
contentType: application/json
nd_get_artist_url:
description: GetArtistURL retrieves the external URL for an artist.
input:
$ref: '#/components/schemas/ArtistRequest'
contentType: application/json
output:
$ref: '#/components/schemas/ArtistURLResponse'
contentType: application/json
nd_get_artist_biography:
description: GetArtistBiography retrieves the biography for an artist.
input:
$ref: '#/components/schemas/ArtistRequest'
contentType: application/json
output:
$ref: '#/components/schemas/ArtistBiographyResponse'
contentType: application/json
nd_get_similar_artists:
description: GetSimilarArtists retrieves similar artists for a given artist.
input:
$ref: '#/components/schemas/SimilarArtistsRequest'
contentType: application/json
output:
$ref: '#/components/schemas/SimilarArtistsResponse'
contentType: application/json
nd_get_artist_images:
description: GetArtistImages retrieves images for an artist.
input:
$ref: '#/components/schemas/ArtistRequest'
contentType: application/json
output:
$ref: '#/components/schemas/ArtistImagesResponse'
contentType: application/json
nd_get_artist_top_songs:
description: GetArtistTopSongs retrieves top songs for an artist.
input:
$ref: '#/components/schemas/TopSongsRequest'
contentType: application/json
output:
$ref: '#/components/schemas/TopSongsResponse'
contentType: application/json
nd_get_album_info:
description: GetAlbumInfo retrieves album information.
input:
$ref: '#/components/schemas/AlbumRequest'
contentType: application/json
output:
$ref: '#/components/schemas/AlbumInfoResponse'
contentType: application/json
nd_get_album_images:
description: GetAlbumImages retrieves images for an album.
input:
$ref: '#/components/schemas/AlbumRequest'
contentType: application/json
output:
$ref: '#/components/schemas/AlbumImagesResponse'
contentType: application/json
nd_get_similar_songs_by_track:
description: GetSimilarSongsByTrack retrieves songs similar to a specific track.
input:
$ref: '#/components/schemas/SimilarSongsByTrackRequest'
contentType: application/json
output:
$ref: '#/components/schemas/SimilarSongsResponse'
contentType: application/json
nd_get_similar_songs_by_album:
description: GetSimilarSongsByAlbum retrieves songs similar to tracks on an album.
input:
$ref: '#/components/schemas/SimilarSongsByAlbumRequest'
contentType: application/json
output:
$ref: '#/components/schemas/SimilarSongsResponse'
contentType: application/json
nd_get_similar_songs_by_artist:
description: GetSimilarSongsByArtist retrieves songs similar to an artist's catalog.
input:
$ref: '#/components/schemas/SimilarSongsByArtistRequest'
contentType: application/json
output:
$ref: '#/components/schemas/SimilarSongsResponse'
contentType: application/json
components:
schemas:
AlbumImagesResponse:
description: AlbumImagesResponse is the response for GetAlbumImages.
properties:
images:
type: array
description: Images is the list of album images.
items:
$ref: '#/components/schemas/ImageInfo'
required:
- images
AlbumInfoResponse:
description: AlbumInfoResponse is the response for GetAlbumInfo.
properties:
name:
type: string
description: Name is the album name.
mbid:
type: string
description: MBID is the MusicBrainz ID for the album.
description:
type: string
description: Description is the album description/notes.
url:
type: string
description: URL is the external URL for the album.
required:
- name
- mbid
- description
- url
AlbumRequest:
description: AlbumRequest is the common request for album-related functions.
properties:
name:
type: string
description: Name is the album name.
artist:
type: string
description: Artist is the album artist name.
mbid:
type: string
description: MBID is the MusicBrainz ID for the album (if known).
required:
- name
- artist
ArtistBiographyResponse:
description: ArtistBiographyResponse is the response for GetArtistBiography.
properties:
biography:
type: string
description: Biography is the artist biography text.
required:
- biography
ArtistImagesResponse:
description: ArtistImagesResponse is the response for GetArtistImages.
properties:
images:
type: array
description: Images is the list of artist images.
items:
$ref: '#/components/schemas/ImageInfo'
required:
- images
ArtistMBIDRequest:
description: ArtistMBIDRequest is the request for GetArtistMBID.
properties:
id:
type: string
description: ID is the internal Navidrome artist ID.
name:
type: string
description: Name is the artist name.
required:
- id
- name
ArtistMBIDResponse:
description: ArtistMBIDResponse is the response for GetArtistMBID.
properties:
mbid:
type: string
description: MBID is the MusicBrainz ID for the artist.
required:
- mbid
ArtistRef:
description: ArtistRef is a reference to an artist with name and optional MBID.
properties:
id:
type: string
description: ID is the internal Navidrome artist ID (if known).
name:
type: string
description: Name is the artist name.
mbid:
type: string
description: MBID is the MusicBrainz ID for the artist.
required:
- name
ArtistRequest:
description: ArtistRequest is the common request for artist-related functions.
properties:
id:
type: string
description: ID is the internal Navidrome artist ID.
name:
type: string
description: Name is the artist name.
mbid:
type: string
description: MBID is the MusicBrainz ID for the artist (if known).
required:
- id
- name
ArtistURLResponse:
description: ArtistURLResponse is the response for GetArtistURL.
properties:
url:
type: string
description: URL is the external URL for the artist.
required:
- url
ImageInfo:
description: ImageInfo represents an image with URL and size.
properties:
url:
type: string
description: URL is the URL of the image.
size:
type: integer
format: int32
description: Size is the size of the image in pixels (width or height).
required:
- url
- size
SimilarArtistsRequest:
description: SimilarArtistsRequest is the request for GetSimilarArtists.
properties:
id:
type: string
description: ID is the internal Navidrome artist ID.
name:
type: string
description: Name is the artist name.
mbid:
type: string
description: MBID is the MusicBrainz ID for the artist (if known).
limit:
type: integer
format: int32
description: Limit is the maximum number of similar artists to return.
required:
- id
- name
- limit
SimilarArtistsResponse:
description: SimilarArtistsResponse is the response for GetSimilarArtists.
properties:
artists:
type: array
description: Artists is the list of similar artists.
items:
$ref: '#/components/schemas/ArtistRef'
required:
- artists
SimilarSongsByAlbumRequest:
description: SimilarSongsByAlbumRequest is the request for GetSimilarSongsByAlbum.
properties:
id:
type: string
description: ID is the internal Navidrome album ID.
name:
type: string
description: Name is the album name.
artist:
type: string
description: Artist is the album artist name.
mbid:
type: string
description: MBID is the MusicBrainz release ID (if known).
count:
type: integer
format: int32
description: Count is the maximum number of similar songs to return.
required:
- id
- name
- artist
- count
SimilarSongsByArtistRequest:
description: SimilarSongsByArtistRequest is the request for GetSimilarSongsByArtist.
properties:
id:
type: string
description: ID is the internal Navidrome artist ID.
name:
type: string
description: Name is the artist name.
mbid:
type: string
description: MBID is the MusicBrainz artist ID (if known).
count:
type: integer
format: int32
description: Count is the maximum number of similar songs to return.
required:
- id
- name
- count
SimilarSongsByTrackRequest:
description: SimilarSongsByTrackRequest is the request for GetSimilarSongsByTrack.
properties:
id:
type: string
description: ID is the internal Navidrome mediafile ID.
name:
type: string
description: Name is the track title.
artist:
type: string
description: Artist is the artist name.
mbid:
type: string
description: MBID is the MusicBrainz recording ID (if known).
count:
type: integer
format: int32
description: Count is the maximum number of similar songs to return.
required:
- id
- name
- artist
- count
SimilarSongsResponse:
description: SimilarSongsResponse is the response for GetSimilarSongsBy* functions.
properties:
songs:
type: array
description: Songs is the list of similar songs.
items:
$ref: '#/components/schemas/SongRef'
required:
- songs
SongRef:
description: SongRef is a reference to a song with metadata for matching.
properties:
id:
type: string
description: ID is the internal Navidrome mediafile ID (if known).
name:
type: string
description: Name is the song name.
mbid:
type: string
description: MBID is the MusicBrainz ID for the song.
artist:
type: string
description: Artist is the artist name.
artistMbid:
type: string
description: ArtistMBID is the MusicBrainz artist ID.
album:
type: string
description: Album is the album name.
albumMbid:
type: string
description: AlbumMBID is the MusicBrainz release ID.
duration:
type: number
format: float
description: Duration is the song duration in seconds.
required:
- name
TopSongsRequest:
description: TopSongsRequest is the request for GetArtistTopSongs.
properties:
id:
type: string
description: ID is the internal Navidrome artist ID.
name:
type: string
description: Name is the artist name.
mbid:
type: string
description: MBID is the MusicBrainz ID for the artist (if known).
count:
type: integer
format: int32
description: Count is the maximum number of top songs to return.
required:
- id
- name
- count
TopSongsResponse:
description: TopSongsResponse is the response for GetArtistTopSongs.
properties:
songs:
type: array
description: Songs is the list of top songs.
items:
$ref: '#/components/schemas/SongRef'
required:
- songs