Resolve "Local collection trait and beets implementation" #9

Merged
wojtek merged 12 commits from 4---local-collection-trait-and-beets-implementation into main 2023-03-31 14:24:54 +02:00
2 changed files with 10 additions and 15 deletions
Showing only changes of commit 84b05567de - Show all commits

View File

@ -17,7 +17,8 @@ pub struct Track {
pub artist: Vec<String>, pub artist: Vec<String>,
} }
#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, Hash)] /// The album identifier.
#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, Clone, Hash)]
pub struct AlbumId { pub struct AlbumId {
pub artist: String, pub artist: String,
pub year: u32, pub year: u32,

View File

@ -123,32 +123,26 @@ impl Beets {
let track_title = split[4].to_string(); let track_title = split[4].to_string();
let track_artist = split[5].to_string(); let track_artist = split[5].to_string();
let track = Track {
number: track_number,
title: track_title,
artist: track_artist.split("; ").map(|s| s.to_owned()).collect(),
};
let aid = AlbumId { let aid = AlbumId {
artist: album_artist, artist: album_artist,
year: album_year, year: album_year,
title: album_title, title: album_title,
}; };
let track = Track {
number: track_number,
title: track_title,
artist: track_artist.split("; ").map(|s| s.to_owned()).collect(),
};
if album_ids.contains(&aid) { if album_ids.contains(&aid) {
// Beets returns results in order so we look from the back. // Beets returns results in order so we look from the back.
let album = albums.iter_mut().rev().find(|a| a.id == aid).unwrap(); let album = albums.iter_mut().rev().find(|a| a.id == aid).unwrap();
album.tracks.push(track); album.tracks.push(track);
} else { } else {
let album_artist = aid.artist.to_string(); album_ids.insert(aid.clone());
let album_title = aid.title.to_string();
album_ids.insert(aid);
albums.push(Album { albums.push(Album {
id: AlbumId { id: aid,
artist: album_artist,
year: album_year,
title: album_title,
},
tracks: vec![track], tracks: vec![track],
}); });
} }