mirror of
https://github.com/SoPat712/allstarr.git
synced 2026-02-09 23:55:10 -05:00
Split monolithic MusicModels.cs (177 lines) into separate files: - Models/Settings/ (DeezerSettings, QobuzSettings, SubsonicSettings) - Models/Domain/ (Song, Album, Artist) - Models/Search/ (SearchResult) - Models/Download/ (DownloadInfo, DownloadStatus) - Models/Subsonic/ (ScanStatus) Updated namespaces and imports across 22 files. Improves navigation and separates models by business context.
58 lines
1.8 KiB
C#
58 lines
1.8 KiB
C#
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;
|
|
|
|
/// <summary>
|
|
/// Interface for external music metadata search service
|
|
/// (Deezer API, Spotify API, MusicBrainz, etc.)
|
|
/// </summary>
|
|
public interface IMusicMetadataService
|
|
{
|
|
/// <summary>
|
|
/// Searches for songs on external providers
|
|
/// </summary>
|
|
/// <param name="query">Search term</param>
|
|
/// <param name="limit">Maximum number of results</param>
|
|
/// <returns>List of found songs</returns>
|
|
Task<List<Song>> SearchSongsAsync(string query, int limit = 20);
|
|
|
|
/// <summary>
|
|
/// Searches for albums on external providers
|
|
/// </summary>
|
|
Task<List<Album>> SearchAlbumsAsync(string query, int limit = 20);
|
|
|
|
/// <summary>
|
|
/// Searches for artists on external providers
|
|
/// </summary>
|
|
Task<List<Artist>> SearchArtistsAsync(string query, int limit = 20);
|
|
|
|
/// <summary>
|
|
/// Combined search (songs, albums, artists)
|
|
/// </summary>
|
|
Task<SearchResult> SearchAllAsync(string query, int songLimit = 20, int albumLimit = 20, int artistLimit = 20);
|
|
|
|
/// <summary>
|
|
/// Gets details of an external song
|
|
/// </summary>
|
|
Task<Song?> GetSongAsync(string externalProvider, string externalId);
|
|
|
|
/// <summary>
|
|
/// Gets details of an external album with its songs
|
|
/// </summary>
|
|
Task<Album?> GetAlbumAsync(string externalProvider, string externalId);
|
|
|
|
/// <summary>
|
|
/// Gets details of an external artist
|
|
/// </summary>
|
|
Task<Artist?> GetArtistAsync(string externalProvider, string externalId);
|
|
|
|
/// <summary>
|
|
/// Gets an artist's albums
|
|
/// </summary>
|
|
Task<List<Album>> GetArtistAlbumsAsync(string externalProvider, string externalId);
|
|
}
|