summaryrefslogtreecommitdiff
path: root/src/flac.rs
diff options
context:
space:
mode:
authorjakka <jakkadoujin@gmail.com>2025-06-14 00:22:23 +0300
committerjakka <jakkadoujin@gmail.com>2025-06-14 00:22:23 +0300
commit11d428265b3f7f5541779ef2df24bfb17d7250aa (patch)
treefca76dc45e78325d5b4dc2597002d430eec888c2 /src/flac.rs
parentcddc489acdd2f0ed93632093f8b86a45fc3601aa (diff)
added more file processing logic
Diffstat (limited to 'src/flac.rs')
-rw-r--r--src/flac.rs18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/flac.rs b/src/flac.rs
index 16627e2..940e816 100644
--- a/src/flac.rs
+++ b/src/flac.rs
@@ -3,7 +3,11 @@ use flac_bound::{FlacEncoder, WriteWrapper};
use i24::i24;
use md5::{Digest, Md5, Md5Core, digest::core_api::CoreWrapper};
use metaflac::{Block, Tag};
-use std::{ffi::OsStr, fs::File, path::Path};
+use std::{
+ ffi::OsStr,
+ fs::File,
+ path::{Path, PathBuf},
+};
use symphonia::core::{
audio::{Audio, GenericAudioBufferRef},
codecs::audio::AudioDecoder,
@@ -12,6 +16,8 @@ use symphonia::core::{
meta::MetadataOptions,
};
+use crate::files;
+
pub const CURRENT_VENDOR: &str = "reference libFLAC 1.5.0 20250211";
struct StreamConfig {
@@ -246,7 +252,7 @@ fn write_tags(
Ok(())
}
-pub fn encode_file(filename: impl AsRef<OsStr>) -> Result<()> {
+fn encode_file(filename: impl AsRef<OsStr>) -> Result<()> {
let file = Path::new(&filename);
let tempname = &format!("{}.tmp", file.to_str().unwrap());
@@ -279,6 +285,14 @@ pub fn encode_file(filename: impl AsRef<OsStr>) -> Result<()> {
Ok(())
}
+pub fn handle_encode(file: PathBuf) -> Result<()> {
+ if let Err(error) = encode_file(&file) {
+ Err(anyhow!(files::FileError::new(file, error)))
+ } else {
+ Ok(())
+ }
+}
+
pub fn get_vendor(file: &Path) -> Result<String> {
let tag = Tag::read_from_path(file)?;
Ok(tag.vorbis_comments().unwrap().vendor_string.clone())