Debug qobuz pas encore parfait mais mieux
This commit is contained in:
@@ -124,7 +124,7 @@
|
||||
//! let cover_cache = Arc::new(CoverCache::new("./cache/covers", 500)?);
|
||||
//! let audio_cache = Arc::new(AudioCache::new("./cache/audio", 100)?);
|
||||
//!
|
||||
//! let source = QobuzSource::new(client, cover_cache, audio_cache);
|
||||
//! let source = QobuzSource::new(client, cover_cache, audio_cache, "http://localhost:8080");
|
||||
//! # Ok(())
|
||||
//! # }
|
||||
//! ```
|
||||
@@ -145,7 +145,7 @@
|
||||
//! let cover_cache = Arc::new(CoverCache::new("./cache/covers", 500)?);
|
||||
//! let audio_cache = Arc::new(AudioCache::new("./cache/audio", 100)?);
|
||||
//!
|
||||
//! let source = QobuzSource::new(client, cover_cache, audio_cache);
|
||||
//! let source = QobuzSource::new(client, cover_cache, audio_cache, "http://localhost:8080");
|
||||
//!
|
||||
//! // Add a track with caching
|
||||
//! let tracks = source.client().get_favorite_tracks().await?;
|
||||
|
||||
@@ -56,7 +56,7 @@ const DEFAULT_IMAGE: &[u8] = include_bytes!("../assets/default.webp");
|
||||
/// let client = QobuzClient::from_config().await?;
|
||||
/// let cover_cache = Arc::new(cover_cache::new_cache("/tmp/qobuz_covers", 256)?);
|
||||
/// let audio_cache = Arc::new(audio_cache::new_cache("/tmp/qobuz_audio", 64)?);
|
||||
/// let source = QobuzSource::new(client, cover_cache, audio_cache);
|
||||
/// let source = QobuzSource::new(client, cover_cache, audio_cache, "http://localhost:8080");
|
||||
///
|
||||
/// println!("Source: {}", source.name());
|
||||
/// println!("Supports FIFO: {}", source.supports_fifo());
|
||||
@@ -80,6 +80,9 @@ struct QobuzSourceInner {
|
||||
/// Cache manager (centralisé)
|
||||
cache_manager: SourceCacheManager,
|
||||
|
||||
/// Base URL for streaming server (e.g., "http://192.168.0.138:8080")
|
||||
base_url: String,
|
||||
|
||||
/// Update tracking
|
||||
update_counter: tokio::sync::RwLock<u32>,
|
||||
last_change: tokio::sync::RwLock<SystemTime>,
|
||||
@@ -100,12 +103,13 @@ impl QobuzSource {
|
||||
/// # Arguments
|
||||
///
|
||||
/// * `client` - Authenticated Qobuz API client
|
||||
/// * `base_url` - Base URL for streaming server (e.g., "http://192.168.0.138:8080")
|
||||
///
|
||||
/// # Errors
|
||||
///
|
||||
/// Returns an error if the caches are not initialized in the registry
|
||||
#[cfg(feature = "server")]
|
||||
pub fn from_registry(client: QobuzClient) -> Result<Self> {
|
||||
pub fn from_registry(client: QobuzClient, base_url: impl Into<String>) -> Result<Self> {
|
||||
let cache_manager = SourceCacheManager::from_registry("qobuz".to_string())?;
|
||||
let client = Arc::new(client);
|
||||
cache_manager.register_lazy_provider(Arc::new(QobuzLazyProvider::new(client.clone())));
|
||||
@@ -114,6 +118,7 @@ impl QobuzSource {
|
||||
inner: Arc::new(QobuzSourceInner {
|
||||
client,
|
||||
cache_manager,
|
||||
base_url: base_url.into(),
|
||||
update_counter: tokio::sync::RwLock::new(0),
|
||||
last_change: tokio::sync::RwLock::new(SystemTime::now()),
|
||||
}),
|
||||
@@ -127,10 +132,12 @@ impl QobuzSource {
|
||||
/// * `client` - Authenticated Qobuz API client
|
||||
/// * `cover_cache` - Cover image cache (required)
|
||||
/// * `audio_cache` - Audio cache (required)
|
||||
/// * `base_url` - Base URL for streaming server (e.g., "http://192.168.0.138:8080")
|
||||
pub fn new(
|
||||
client: QobuzClient,
|
||||
cover_cache: Arc<CoverCache>,
|
||||
audio_cache: Arc<AudioCache>,
|
||||
base_url: impl Into<String>,
|
||||
) -> Self {
|
||||
let cache_manager = SourceCacheManager::new("qobuz".to_string(), cover_cache, audio_cache);
|
||||
let client = Arc::new(client);
|
||||
@@ -140,6 +147,7 @@ impl QobuzSource {
|
||||
inner: Arc::new(QobuzSourceInner {
|
||||
client,
|
||||
cache_manager,
|
||||
base_url: base_url.into(),
|
||||
update_counter: tokio::sync::RwLock::new(0),
|
||||
last_change: tokio::sync::RwLock::new(SystemTime::now()),
|
||||
}),
|
||||
@@ -578,6 +586,15 @@ impl QobuzSource {
|
||||
} else {
|
||||
warn!("No qobuz_track_id metadata for {}", pk);
|
||||
}
|
||||
|
||||
// Convertir URL relative en URL absolue
|
||||
// From: /audio/flac/QOBUZ:123
|
||||
// To: http://192.168.0.138:8080/audio/flac/QOBUZ:123
|
||||
if let Some(resource) = item.resources.first_mut() {
|
||||
if resource.url.starts_with('/') {
|
||||
resource.url = format!("{}{}", self.inner.base_url, resource.url);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
item.parent_id = parent_id.clone();
|
||||
|
||||
Reference in New Issue
Block a user