70 lines
2.5 KiB
Rust
70 lines
2.5 KiB
Rust
|
|
//! Test du streaming progressif avec le nouveau transformer
|
||
|
|
//!
|
||
|
|
//! Cet exemple démontre comment les fichiers deviennent disponibles
|
||
|
|
//! progressivement pendant le téléchargement avec le nouveau système.
|
||
|
|
|
||
|
|
use pmoaudiocache::cache;
|
||
|
|
use std::time::Instant;
|
||
|
|
|
||
|
|
#[tokio::main]
|
||
|
|
async fn main() -> anyhow::Result<()> {
|
||
|
|
// Initialiser le logging
|
||
|
|
tracing_subscriber::fmt()
|
||
|
|
.with_max_level(tracing::Level::DEBUG)
|
||
|
|
.init();
|
||
|
|
|
||
|
|
println!("=== Test du cache audio avec streaming progressif ===\n");
|
||
|
|
|
||
|
|
// Créer un cache temporaire
|
||
|
|
let cache_dir = "/tmp/test_streaming_cache";
|
||
|
|
let _ = std::fs::remove_dir_all(cache_dir);
|
||
|
|
let cache = cache::new_cache(cache_dir, 10)?;
|
||
|
|
|
||
|
|
println!("Cache créé dans: {}\n", cache_dir);
|
||
|
|
|
||
|
|
// URL d'un fichier FLAC pour tester le streaming complet
|
||
|
|
// Pour tester, vous pouvez utiliser votre propre URL ou un fichier local
|
||
|
|
let test_url = std::env::var("TEST_AUDIO_URL")
|
||
|
|
.unwrap_or_else(|_| "https://www.kozco.com/tech/piano2-CoolEdit.flac".to_string());
|
||
|
|
|
||
|
|
println!("Test avec URL: {}\n", test_url);
|
||
|
|
|
||
|
|
// Démarrer le téléchargement et la conversion
|
||
|
|
println!("🚀 Démarrage du téléchargement et de la conversion...");
|
||
|
|
let start = Instant::now();
|
||
|
|
|
||
|
|
// Ajouter avec extraction de métadonnées
|
||
|
|
let pk = cache::add_with_metadata_extraction(&cache, &test_url, None).await?;
|
||
|
|
|
||
|
|
let total_time = start.elapsed();
|
||
|
|
println!(" ✓ Ajouté au cache avec pk: {}", pk);
|
||
|
|
println!(" ✓ Temps total: {:?}", total_time);
|
||
|
|
|
||
|
|
// Vérifier que le fichier est bien accessible
|
||
|
|
println!("\n🔍 Vérification du fichier:");
|
||
|
|
let file_path = cache.get(&pk).await?;
|
||
|
|
let file_size = tokio::fs::metadata(&file_path).await?.len();
|
||
|
|
println!(" • Chemin: {:?}", file_path);
|
||
|
|
println!(" • Taille: {} bytes", file_size);
|
||
|
|
|
||
|
|
// Extraire et afficher les métadonnées
|
||
|
|
println!("\n📋 Métadonnées extraites:");
|
||
|
|
match cache::get_metadata(&cache, &pk) {
|
||
|
|
Ok(metadata) => {
|
||
|
|
println!(" • Titre: {:?}", metadata.title);
|
||
|
|
println!(" • Artiste: {:?}", metadata.artist);
|
||
|
|
println!(" • Album: {:?}", metadata.album);
|
||
|
|
println!(" • Durée: {:?} secondes", metadata.duration_secs);
|
||
|
|
println!(" • Sample rate: {:?} Hz", metadata.sample_rate);
|
||
|
|
println!(" • Channels: {:?}", metadata.channels);
|
||
|
|
}
|
||
|
|
Err(e) => {
|
||
|
|
println!(" ⚠️ Métadonnées non disponibles: {}", e);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
println!("\n✨ Test terminé avec succès !");
|
||
|
|
|
||
|
|
Ok(())
|
||
|
|
}
|