Ignore bootleg release groups #247

Merged
wojtek merged 10 commits from 239---ignore-bootleg-release-groups into main 2025-01-03 21:00:22 +01:00
3 changed files with 23 additions and 20 deletions
Showing only changes of commit 19a3d450c1 - Show all commits

View File

@ -138,16 +138,16 @@ pub enum AlbumSecondaryType {
}
/// The album's ownership status.
pub enum AlbumStatus {
pub enum AlbumOwnership {
None,
Owned(TrackFormat),
}
impl AlbumStatus {
pub fn from_tracks(tracks: &[Track]) -> AlbumStatus {
impl AlbumOwnership {
pub fn from_tracks(tracks: &[Track]) -> AlbumOwnership {
match tracks.iter().map(|t| t.quality.format).min() {
Some(format) => AlbumStatus::Owned(format),
None => AlbumStatus::None,
Some(format) => AlbumOwnership::Owned(format),
None => AlbumOwnership::None,
}
}
}
@ -165,8 +165,8 @@ impl Album {
self
}
pub fn get_status(&self) -> AlbumStatus {
AlbumStatus::from_tracks(&self.tracks)
pub fn get_ownership(&self) -> AlbumOwnership {
AlbumOwnership::from_tracks(&self.tracks)
}
}

View File

@ -1,5 +1,5 @@
use musichoard::collection::{
album::{Album, AlbumStatus},
album::{Album, AlbumOwnership},
artist::Artist,
track::{Track, TrackFormat},
};
@ -175,7 +175,7 @@ impl<'a, 'b> AlbumState<'a, 'b> {
))
.unwrap_or_default(),
album
.map(|a| UiDisplay::display_album_status(&a.get_status()))
.map(|a| UiDisplay::display_album_status(&a.get_ownership()))
.unwrap_or("")
));
@ -188,9 +188,9 @@ impl<'a, 'b> AlbumState<'a, 'b> {
}
fn to_list_item(album: &Album) -> ListItem {
let line = match album.get_status() {
AlbumStatus::None => Line::raw(album.meta.id.title.as_str()),
AlbumStatus::Owned(format) => match format {
let line = match album.get_ownership() {
AlbumOwnership::None => Line::raw(album.meta.id.title.as_str()),
AlbumOwnership::Owned(format) => match format {
TrackFormat::Mp3 => Line::styled(album.meta.id.title.as_str(), UiColor::FG_WARN),
TrackFormat::Flac => Line::styled(album.meta.id.title.as_str(), UiColor::FG_GOOD),
},

View File

@ -1,7 +1,7 @@
use musichoard::collection::{
album::{
AlbumDate, AlbumId, AlbumLibId, AlbumMeta, AlbumPrimaryType, AlbumSecondaryType, AlbumSeq,
AlbumStatus,
AlbumDate, AlbumId, AlbumLibId, AlbumMeta, AlbumOwnership, AlbumPrimaryType,
AlbumSecondaryType, AlbumSeq,
},
artist::ArtistMeta,
musicbrainz::{IMusicBrainzRef, MbRefOption},
@ -101,10 +101,10 @@ impl UiDisplay {
types.join(", ")
}
pub fn display_album_status(status: &AlbumStatus) -> &'static str {
pub fn display_album_status(status: &AlbumOwnership) -> &'static str {
match status {
AlbumStatus::None => "None",
AlbumStatus::Owned(format) => match format {
AlbumOwnership::None => "None",
AlbumOwnership::Owned(format) => match format {
TrackFormat::Mp3 => "MP3",
TrackFormat::Flac => "FLAC",
},
@ -284,13 +284,16 @@ mod tests {
#[test]
fn display_album_status() {
assert_eq!(UiDisplay::display_album_status(&AlbumStatus::None), "None");
assert_eq!(
UiDisplay::display_album_status(&AlbumStatus::Owned(TrackFormat::Mp3)),
UiDisplay::display_album_status(&AlbumOwnership::None),
"None"
);
assert_eq!(
UiDisplay::display_album_status(&AlbumOwnership::Owned(TrackFormat::Mp3)),
"MP3"
);
assert_eq!(
UiDisplay::display_album_status(&AlbumStatus::Owned(TrackFormat::Flac)),
UiDisplay::display_album_status(&AlbumOwnership::Owned(TrackFormat::Flac)),
"FLAC"
);
}