using octo_fiesta.Models.Domain; using octo_fiesta.Models.Settings; using octo_fiesta.Models.Download; using octo_fiesta.Models.Search; using octo_fiesta.Models.Subsonic; namespace octo_fiesta.Services; /// /// Interface for external music metadata search service /// (Deezer API, Spotify API, MusicBrainz, etc.) /// public interface IMusicMetadataService { /// /// Searches for songs on external providers /// /// Search term /// Maximum number of results /// List of found songs Task> SearchSongsAsync(string query, int limit = 20); /// /// Searches for albums on external providers /// Task> SearchAlbumsAsync(string query, int limit = 20); /// /// Searches for artists on external providers /// Task> SearchArtistsAsync(string query, int limit = 20); /// /// Combined search (songs, albums, artists) /// Task SearchAllAsync(string query, int songLimit = 20, int albumLimit = 20, int artistLimit = 20); /// /// Gets details of an external song /// Task GetSongAsync(string externalProvider, string externalId); /// /// Gets details of an external album with its songs /// Task GetAlbumAsync(string externalProvider, string externalId); /// /// Gets details of an external artist /// Task GetArtistAsync(string externalProvider, string externalId); /// /// Gets an artist's albums /// Task> GetArtistAlbumsAsync(string externalProvider, string externalId); }