Leggere tag MP3 in Rust con id3

Mattepuffo's logo
Leggere tag MP3 in Rust con id3

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!


Condividi

Commentami!