mirror of
https://github.com/CDrummond/bliss-analyser.git
synced 2025-04-08 05:00:02 +03:00
Better output?
This commit is contained in:
parent
208d0e9b13
commit
8a35fffbcf
@ -17,6 +17,7 @@ use crate::db;
|
||||
use crate::tags;
|
||||
|
||||
const DONT_ANALYSE:&str = ".nomusic";
|
||||
const MAX_TAG_ERRORS_TO_SHOW:usize = 25;
|
||||
|
||||
fn get_file_list(db:&mut db::Db, mpath:&PathBuf, path:&PathBuf, track_paths:&mut Vec<String>) {
|
||||
if path.is_dir() {
|
||||
@ -77,32 +78,31 @@ pub fn analyse_new_files(db:&db::Db, mpath: &PathBuf, track_paths:Vec<String>) -
|
||||
let total = track_paths.len();
|
||||
let pb = ProgressBar::new(total.try_into().unwrap());
|
||||
let style = ProgressStyle::default_bar()
|
||||
.template("[{elapsed_precise}] {bar:40} {pos:>7}/{len:7} {wide_msg}")
|
||||
.progress_chars("##-");
|
||||
.template("[{elapsed_precise}] [{bar:25}] {pos:>6}/{len:6} {percent:>3}% {wide_msg}")
|
||||
.progress_chars("=> ");
|
||||
pb.set_style(style);
|
||||
|
||||
let results = analyze_paths_streaming(track_paths)?;
|
||||
let mut analysed = 0;
|
||||
let mut failed = 0;
|
||||
let mut tag_error = 0;
|
||||
let mut tag_error:Vec<String> = Vec::new();
|
||||
|
||||
log::info!("Analysing new tracks");
|
||||
for (path, result) in results {
|
||||
pb.set_message(format!("Analysing {}", path));
|
||||
let pbuff = PathBuf::from(&path);
|
||||
let stripped = pbuff.strip_prefix(mpath).unwrap();
|
||||
let spbuff = stripped.to_path_buf();
|
||||
let sname = String::from(spbuff.to_string_lossy());
|
||||
pb.set_message(format!("{}", sname));
|
||||
match result {
|
||||
Ok(track) => {
|
||||
let meta = tags::read(&path);
|
||||
let pb = PathBuf::from(path);
|
||||
let cpath = String::from(path);
|
||||
let meta = tags::read(&cpath);
|
||||
if meta.title.is_empty() && meta.artist.is_empty() && meta.album.is_empty() && meta.genre.is_empty() {
|
||||
tag_error += 1;
|
||||
}
|
||||
match pb.strip_prefix(mpath) {
|
||||
Ok(stripped) => {
|
||||
let spb = stripped.to_path_buf();
|
||||
let sname = String::from(spb.to_string_lossy());
|
||||
db.add_track(&sname, &meta, &track.analysis);
|
||||
},
|
||||
Err(_) => { }
|
||||
tag_error.push(sname.clone());
|
||||
}
|
||||
|
||||
db.add_track(&sname, &meta, &track.analysis);
|
||||
analysed += 1;
|
||||
},
|
||||
Err(_) => {
|
||||
@ -111,7 +111,19 @@ pub fn analyse_new_files(db:&db::Db, mpath: &PathBuf, track_paths:Vec<String>) -
|
||||
};
|
||||
pb.inc(1);
|
||||
}
|
||||
pb.finish_with_message(format!("{} Analyzed. {} Failure(s). {} Tag error(s).", analysed, failed, tag_error));
|
||||
pb.finish_with_message(format!("{} Analysed. {} Failure(s).", analysed, failed));
|
||||
if !tag_error.is_empty() {
|
||||
let total = tag_error.len();
|
||||
tag_error.truncate(MAX_TAG_ERRORS_TO_SHOW);
|
||||
|
||||
log::error!("Failed to read tags of the folling track(s):");
|
||||
for err in tag_error {
|
||||
log::error!(" {}", err);
|
||||
}
|
||||
if total>MAX_TAG_ERRORS_TO_SHOW {
|
||||
log::error!(" + {} other(s)", total - MAX_TAG_ERRORS_TO_SHOW);
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@ -121,6 +133,7 @@ pub fn analyse_files(db_path: &str, mpath: &PathBuf, dry_run:bool, keep_old:bool
|
||||
let cur = PathBuf::from(mpath);
|
||||
|
||||
db.init();
|
||||
log::info!("Looking for new tracks");
|
||||
get_file_list(&mut db, mpath, &cur, &mut track_paths);
|
||||
log::info!("Num new tracks: {}", track_paths.len());
|
||||
if !keep_old {
|
||||
@ -132,6 +145,8 @@ pub fn analyse_files(db_path: &str, mpath: &PathBuf, dry_run:bool, keep_old:bool
|
||||
Ok(_) => { },
|
||||
Err(_) => { }
|
||||
}
|
||||
} else {
|
||||
log::info!("No new tracks to analyse");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -145,6 +145,7 @@ impl Db {
|
||||
}
|
||||
|
||||
pub fn remove_old(&self, mpath:&Path, dry_run:bool) {
|
||||
log::info!("Looking for non-existant tracks");
|
||||
let mut stmt = self.conn.prepare("SELECT File FROM Tracks;").unwrap();
|
||||
let track_iter = stmt.query_map([], |row| {
|
||||
Ok((row.get(0)?,))
|
||||
@ -161,7 +162,7 @@ impl Db {
|
||||
to_remove.push(db_path);
|
||||
}
|
||||
}
|
||||
log::info!("Num old tracks: {}", to_remove.len());
|
||||
log::info!("Num non-existant tracks: {}", to_remove.len());
|
||||
if !dry_run {
|
||||
for t in to_remove {
|
||||
match self.conn.execute("DELETE FROM Tracks WHERE File = ?;", params![t]) {
|
||||
|
@ -14,7 +14,7 @@ mod tags;
|
||||
|
||||
fn main() {
|
||||
let mut db_path = "bliss.db".to_string();
|
||||
let mut logging = "warn".to_string();
|
||||
let mut logging = "info".to_string();
|
||||
let mut music_path = ".".to_string();
|
||||
let mut ignore_file = String::new();
|
||||
let mut keep_old:bool = false;
|
||||
@ -37,6 +37,7 @@ fn main() {
|
||||
}
|
||||
|
||||
if logging.eq_ignore_ascii_case("trace") || logging.eq_ignore_ascii_case("debug") || logging.eq_ignore_ascii_case("info") || logging.eq_ignore_ascii_case("warn") || logging.eq_ignore_ascii_case("error") {
|
||||
logging += ",bliss_audio=error";
|
||||
env_logger::init_from_env(env_logger::Env::default().filter_or("XXXXXXXX", logging));
|
||||
} else {
|
||||
env_logger::init_from_env(env_logger::Env::default().filter_or("XXXXXXXX", "ERROR"));
|
||||
|
Loading…
x
Reference in New Issue
Block a user