mirror of
https://github.com/CDrummond/bliss-analyser.git
synced 2025-04-11 22:50:03 +03:00
Cleanup cue
module
Signed-off-by: Serial <69764315+Serial-ATA@users.noreply.github.com>
This commit is contained in:
parent
51ce6cadc7
commit
b61aee0a6a
81
src/cue.rs
81
src/cue.rs
@ -32,7 +32,7 @@ pub fn parse(audio_path: &PathBuf, cue_path: &PathBuf) -> Vec<CueTrack> {
|
||||
let mut resp: Vec<CueTrack> = Vec::new();
|
||||
|
||||
match parse_from_file(&cue_path.to_string_lossy(), false) {
|
||||
Ok(cue) => {
|
||||
Ok(mut cue) => {
|
||||
let album = cue.title.unwrap_or(String::new());
|
||||
let album_artist = cue.performer.unwrap_or(String::new());
|
||||
let mut genre = String::new();
|
||||
@ -41,47 +41,45 @@ pub fn parse(audio_path: &PathBuf, cue_path: &PathBuf) -> Vec<CueTrack> {
|
||||
genre = comment.1;
|
||||
}
|
||||
}
|
||||
if 1 == cue.files.len() {
|
||||
for file in cue.files {
|
||||
for track in file.tracks {
|
||||
match track.indices.get(0) {
|
||||
Some((_, start)) => {
|
||||
let mut track_path = audio_path.clone();
|
||||
let ext = audio_path.extension().unwrap().to_string_lossy();
|
||||
track_path.set_extension(format!(
|
||||
"{}{}{}",
|
||||
ext,
|
||||
MARKER,
|
||||
resp.len() + 1
|
||||
));
|
||||
let mut ctrack = CueTrack {
|
||||
audio_path: audio_path.clone(),
|
||||
track_path: track_path,
|
||||
title: track.title.unwrap_or(String::new()),
|
||||
artist: track.performer.unwrap_or(String::new()),
|
||||
album_artist: album_artist.clone(),
|
||||
album: album.clone(),
|
||||
genre: genre.clone(),
|
||||
start: start.clone(),
|
||||
duration: Duration::new(LAST_TRACK_DURATION, 0),
|
||||
};
|
||||
if ctrack.artist.is_empty() && !ctrack.album_artist.is_empty() {
|
||||
ctrack.artist = ctrack.album_artist.clone();
|
||||
}
|
||||
if ctrack.album.is_empty() {
|
||||
let mut path = audio_path.clone();
|
||||
path.set_extension("");
|
||||
match path.file_name() {
|
||||
Some(n) => {
|
||||
ctrack.album = String::from(n.to_string_lossy());
|
||||
}
|
||||
None => {}
|
||||
}
|
||||
}
|
||||
resp.push(ctrack);
|
||||
|
||||
if let Some(file) = cue.files.pop() {
|
||||
for track in file.tracks {
|
||||
match track.indices.get(0) {
|
||||
Some((_, start)) => {
|
||||
let mut track_path = audio_path.clone();
|
||||
let ext = audio_path.extension().unwrap().to_string_lossy();
|
||||
track_path.set_extension(format!(
|
||||
"{}{}{}",
|
||||
ext,
|
||||
MARKER,
|
||||
resp.len() + 1
|
||||
));
|
||||
|
||||
let mut ctrack = CueTrack {
|
||||
audio_path: audio_path.clone(),
|
||||
track_path,
|
||||
title: track.title.unwrap_or_default(),
|
||||
artist: track.performer.unwrap_or_default(),
|
||||
album_artist: album_artist.clone(),
|
||||
album: album.clone(),
|
||||
genre: genre.clone(),
|
||||
start: start.clone(),
|
||||
duration: Duration::new(LAST_TRACK_DURATION, 0),
|
||||
};
|
||||
|
||||
if ctrack.artist.is_empty() && !ctrack.album_artist.is_empty() {
|
||||
ctrack.artist = ctrack.album_artist.clone();
|
||||
}
|
||||
None => {}
|
||||
|
||||
if ctrack.album.is_empty() {
|
||||
if let Some(name) = audio_path.file_name() {
|
||||
ctrack.album = String::from(name.to_string_lossy());
|
||||
}
|
||||
}
|
||||
|
||||
resp.push(ctrack);
|
||||
}
|
||||
None => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -92,7 +90,7 @@ pub fn parse(audio_path: &PathBuf, cue_path: &PathBuf) -> Vec<CueTrack> {
|
||||
}
|
||||
|
||||
for i in 0..(resp.len() - 1) {
|
||||
let mut next_start = Duration::new(0, 0);
|
||||
let mut next_start = Duration::ZERO;
|
||||
if let Some(next) = resp.get(i + 1) {
|
||||
next_start = next.start;
|
||||
}
|
||||
@ -100,5 +98,6 @@ pub fn parse(audio_path: &PathBuf, cue_path: &PathBuf) -> Vec<CueTrack> {
|
||||
(*elem).duration = next_start - elem.start;
|
||||
}
|
||||
}
|
||||
|
||||
resp
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user