summaryrefslogtreecommitdiff
path: root/src/services/mod.rs
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2026-02-25 01:22:26 +0800
committerlittleblack111 <littleblack11111@gmail.com>2026-02-25 01:22:26 +0800
commita2f9b0b1256c04cf2fb850ef082e7a27e9e06cde (patch)
treebed1a473449aa532f6b689d044bf56afc3b69d5b /src/services/mod.rs
initmain
Diffstat (limited to 'src/services/mod.rs')
-rw-r--r--src/services/mod.rs21
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>;
+}