Refactor errors

This commit is contained in:
2026-03-12 23:04:59 -07:00
parent 60483dd53d
commit 26a428dedc
17 changed files with 192 additions and 161 deletions

View File

@@ -6,6 +6,7 @@ use std::{
io::BufReader,
sync::{Arc, OnceLock},
};
use tracing::trace;
use crate::{
extract::traits::ObjectExtractor,
@@ -30,32 +31,29 @@ impl Id3Extractor {
return Ok(x);
}
let key = self.item.key();
let ext = key.as_str().rsplit('.').next();
if !matches!(ext, Some("mp3") | Some("aiff") | Some("aif") | Some("wav")) {
return Ok(self.output.get_or_init(HashMap::new));
}
trace!(message = "Reading id3 tags", key = self.item.key().as_str());
let key = self.item.key();
let reader = SyncReadBridge::new_current(self.item.read().await?);
let tag = match tokio::task::spawn_blocking(move || Tag::read_from2(BufReader::new(reader)))
.await
{
Ok(Ok(tag)) => tag,
Ok(Err(id3::Error {
kind: id3::ErrorKind::NoTag,
..
})) => {
return Ok(self.output.get_or_init(HashMap::new));
}
Err(e) => return Err(e.into()),
Ok(Err(id3::Error {
kind: id3::ErrorKind::Io(e),
..
})) => return Err(e),
Ok(Err(e)) => return Err(std::io::Error::new(std::io::ErrorKind::InvalidData, e)),
Err(e) => return Err(e.into()),
Ok(Err(error)) => {
trace!(
message = "Could not parse id3 tags",
key = key.as_str(),
?error
);
return Ok(self.output.get_or_init(HashMap::new));
}
};
let mut output: HashMap<Label, Vec<PileValue>> = HashMap::new();