mirror of
https://github.com/navidrome/navidrome.git
synced 2026-02-09 06:21:06 -05:00
* feat: add ISRC support to similar songs matching and plugin interface Add ISRC (International Standard Recording Code) as a high-priority identifier in the provider matching algorithm, alongside MBID. The matching pipeline now uses four strategies in priority order: ID > MBID > ISRC > Title+Artist fuzzy match. - Add ISRC field to agents.Song struct - Add ISRC field to plugin capability SongRef (Go, Rust PDKs) - Add loadTracksByISRC using json_tree query on tags column - Integrate ISRC into matchSongsToLibrary, selectBestMatchingSongs, and buildTitleQueries https://claude.ai/code/session_01Dd4mTq1VQZag4RNjCVusiF * chore: regenerate plugin schema after ISRC addition Run `make gen` to update the generated YAML schema for the metadata agent capability with the new ISRC field on SongRef. https://claude.ai/code/session_01Dd4mTq1VQZag4RNjCVusiF * feat(mediafile): add GetAllByTags method to MediaFileRepository for tag-based retrieval Signed-off-by: Deluan <deluan@navidrome.org> * feat(provider): speed up track matching by incorporating prior matches in ISRC and MBID lookups Signed-off-by: Deluan <deluan@navidrome.org> --------- Signed-off-by: Deluan <deluan@navidrome.org> Co-authored-by: Claude <noreply@anthropic.com>
397 lines
15 KiB
YAML
397 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.
|
|
isrc:
|
|
type: string
|
|
description: ISRC is the International Standard Recording Code 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
|