Compare commits
4 Commits
v0.4.4-mai
...
v0.4.4-52-
| Author | SHA1 | Date | |
|---|---|---|---|
|
6df220ad73
|
|||
|
ff1c7c9a59
|
|||
|
4459d89eab
|
|||
|
a28de5a712
|
16
src/properties/audio.rs
Normal file
16
src/properties/audio.rs
Normal file
@@ -0,0 +1,16 @@
|
||||
use lofty::file::AudioFile;
|
||||
|
||||
pub fn get_properties(songpath: &str) -> Result<lofty::flac::FlacProperties, std::io::Error> {
|
||||
match std::fs::File::open(songpath) {
|
||||
Ok(mut content) => {
|
||||
match lofty::flac::FlacFile::read_from(&mut content, lofty::config::ParseOptions::new())
|
||||
{
|
||||
Ok(flac_file) => {
|
||||
Ok(*flac_file.properties())
|
||||
}
|
||||
Err(err) => Err(std::io::Error::other(err.to_string())),
|
||||
}
|
||||
}
|
||||
Err(err) => Err(err),
|
||||
}
|
||||
}
|
||||
@@ -1,21 +1,43 @@
|
||||
use lofty::file::AudioFile;
|
||||
pub mod audio;
|
||||
|
||||
pub fn get_duration(song_path: &String) -> Result<std::time::Duration, std::io::Error> {
|
||||
match std::fs::File::open(song_path) {
|
||||
Ok(mut content) => {
|
||||
match lofty::flac::FlacFile::read_from(&mut content, lofty::config::ParseOptions::new())
|
||||
{
|
||||
Ok(flac_file) => {
|
||||
let properties = flac_file.properties();
|
||||
Ok(properties.duration())
|
||||
}
|
||||
Err(err) => Err(std::io::Error::other(err.to_string())),
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Default)]
|
||||
pub struct SongProperties {
|
||||
pub duration: std::time::Duration,
|
||||
pub sample_rate: u32,
|
||||
pub bitrate: u32,
|
||||
pub overall_bitrate: u32,
|
||||
pub bit_depth: u8,
|
||||
pub channels: u8,
|
||||
}
|
||||
|
||||
|
||||
pub fn get_song_properties(song_path: &str) -> Result<SongProperties, std::io::Error> {
|
||||
match audio::get_properties(song_path) {
|
||||
Ok(flac_properties) => {
|
||||
Ok(SongProperties {
|
||||
duration: flac_properties.duration(),
|
||||
sample_rate: flac_properties.sample_rate(),
|
||||
bitrate: flac_properties.audio_bitrate(),
|
||||
overall_bitrate: flac_properties.overall_bitrate(),
|
||||
bit_depth: flac_properties.bit_depth(),
|
||||
channels: flac_properties.channels(),
|
||||
})
|
||||
}
|
||||
Err(err) => Err(err),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_duration(song_path: &String) -> Result<std::time::Duration, std::io::Error> {
|
||||
match get_song_properties(song_path) {
|
||||
Ok(song_properties) => {
|
||||
Ok(song_properties.duration)
|
||||
}
|
||||
Err(err) => Err(err),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::test_util;
|
||||
Reference in New Issue
Block a user