Added the playlist generator
CI / check (push) Successful in 1m12s
CI / docker (push) Successful in 2m1s

This commit is contained in:
Connor Johnstone
2026-03-20 18:09:47 -04:00
parent 4008b4d838
commit 6f73bb87ce
19 changed files with 1526 additions and 21 deletions
+17 -2
View File
@@ -2,8 +2,8 @@ use std::future::Future;
use crate::error::DataResult;
use crate::types::{
ArtistInfo, ArtistSearchResult, DiscographyEntry, LyricsResult, RecordingDetails,
RecordingMatch, ReleaseGroupEntry, ReleaseMatch, ReleaseTrack,
ArtistInfo, ArtistSearchResult, DiscographyEntry, LyricsResult, PopularTrack, RecordingDetails,
RecordingMatch, ReleaseGroupEntry, ReleaseMatch, ReleaseTrack, SimilarArtist,
};
/// Trait for metadata lookup backends. MusicBrainz is the default implementation;
@@ -86,6 +86,21 @@ pub trait LyricsFetcher: Send + Sync {
) -> impl Future<Output = DataResult<LyricsResult>> + Send;
}
/// Fetches similar artists and top tracks from an external source (e.g. Last.fm).
pub trait SimilarArtistFetcher: Send + Sync {
fn get_similar_artists(
&self,
artist_name: &str,
mbid: Option<&str>,
) -> impl Future<Output = DataResult<Vec<SimilarArtist>>> + Send;
fn get_top_tracks(
&self,
artist_name: &str,
mbid: Option<&str>,
) -> impl Future<Output = DataResult<Vec<PopularTrack>>> + Send;
}
/// Fetches cover art URLs for releases.
pub trait CoverArtFetcher: Send + Sync {
fn get_cover_art_url(&self, release_id: &str) -> Option<String>;