quintodrome/core/external
Deluan Quintão 1afcf7775b
feat: add ISRC matching for similar songs (#4946)
* 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>
2026-01-27 14:54:29 -05:00
..
extdata_helper_test.go feat: add ISRC matching for similar songs (#4946) 2026-01-27 14:54:29 -05:00
extdata_suite_test.go refactor: external_metadata -> external.Provider (#3903) 2025-04-08 21:11:09 -04:00
provider.go feat: add similar songs functionality in agents, and Instant Mix (song-based) to UI (#4919) 2026-01-25 16:16:43 -05:00
provider_albumimage_test.go feat: make Unicode handling in external API calls configurable (#4277) 2025-12-02 13:08:30 -05:00
provider_artistimage_test.go feat: make Unicode handling in external API calls configurable (#4277) 2025-12-02 13:08:30 -05:00
provider_matching.go feat: add ISRC matching for similar songs (#4946) 2026-01-27 14:54:29 -05:00
provider_matching_internal_test.go feat: add similar songs functionality in agents, and Instant Mix (song-based) to UI (#4919) 2026-01-25 16:16:43 -05:00
provider_matching_test.go refactor: use duration as a soft ranking signal instead of hard cutoff in track matching (#4944) 2026-01-27 11:12:18 -05:00
provider_similarsongs_test.go feat: add similar songs functionality in agents, and Instant Mix (song-based) to UI (#4919) 2026-01-25 16:16:43 -05:00
provider_topsongs_test.go feat: add similar songs functionality in agents, and Instant Mix (song-based) to UI (#4919) 2026-01-25 16:16:43 -05:00
provider_updatealbuminfo_test.go feat(plugins): experimental support for plugins (#3998) 2025-06-22 20:45:38 -04:00
provider_updateartistinfo_test.go feat(agents): add ID field to Artist and Song structs with direct matching 2026-01-11 17:06:25 -05:00