diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2026-02-25 01:22:26 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2026-02-25 01:22:26 +0800 |
| commit | a2f9b0b1256c04cf2fb850ef082e7a27e9e06cde (patch) | |
| tree | bed1a473449aa532f6b689d044bf56afc3b69d5b /src/services/mod.rs | |
initmain
Diffstat (limited to 'src/services/mod.rs')
| -rw-r--r-- | src/services/mod.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/services/mod.rs b/src/services/mod.rs new file mode 100644 index 0000000..4691028 --- /dev/null +++ b/src/services/mod.rs @@ -0,0 +1,21 @@ +pub mod tidal; + +use crate::{error::Result, types::*}; +use async_trait::async_trait; + +#[async_trait] +pub trait MusicService: Send + Sync { + async fn search(&self, query: &str, artist: Option<&str>) -> Result<SearchResults>; + + async fn get_track_info(&self, track_id: u64) -> Result<TrackInfo>; + + async fn get_album_info(&self, album_id: u64) -> Result<AlbumInfo>; + + async fn get_playlist_info(&self, playlist_id: u64) -> Result<PlaylistInfo>; + + async fn get_album_tracks(&self, album_id: u64) -> Result<Vec<TrackInfo>>; + + async fn get_playlist_tracks(&self, playlist_id: u64) -> Result<Vec<TrackInfo>>; + + async fn get_manifest(&self, track_id: u64, quality: AudioQuality) -> Result<DownloadManifest>; +} |
