Leggere tag MP3 in Rust con id3
In questo articolo vediamo come usare id3 per leggere i tag dai file MP3 in Rust.
Per l'esempio useremo anche walkdir, in modo da leggere tutti i files che si trovano dentro ad una directory.
Quindi nel vostro Cargo.toml dovete aggiungere queste due dipendenze:
[dependencies]
id3 = "1.4.0"
walkdir = "2.3.2"
Qui sotto il codice di esempio:
extern crate walkdir;
use std::error::Error;
use std::path::Path;
use id3::{Tag, TagLike};
use walkdir::WalkDir;
fn main() -> Result<(), Box<dyn Error>> {
let dir = "/run/media/fermat/DATI/Personal/Musica/";
let mut cnt = 0;
for file in WalkDir::new(dir)
.sort_by(|a, b| a.file_name().cmp(b.file_name()))
.into_iter()
.filter_map(|file| file.ok()) {
if file.metadata().unwrap().is_file() {
cnt += 1;
let path = Path::new(file.path());
let titolo = path.file_name().unwrap().to_str().unwrap();
let tag = Tag::read_from_path(file.path()).unwrap_or_default();
let mut genere = "ND";
let mut autore = "ND";
if let Some(artist) = tag.artist() {
autore = artist;
}
if let Some(genre) = tag.genre() {
genere = genre;
}
println!("Nome file: {}", titolo);
println!("Autore: {}", autore);
println!("Genere: {}", genere);
println!("-------");
}
}
println!("Numero canzoni: {}", cnt);
Ok(())
}
Enjoy!
rust mp3 id3
Commentami!