commit - 3b237fd1f8835a1757287f837d2ff093ca141e00
commit + 5f165b70e93af046648925625db592f8e1abff79
blob - b20ae4f5d3308c131bf0300c8b5bc61bf3ff0c0e
blob + 89d084c2ef32057e7001688b7a5d47b51363db0d
--- src/fetchers/discogs.rs
+++ src/fetchers/discogs.rs
#[derive(Deserialize, Debug, Clone)]
pub struct DiscogsResult {
- pub genre: Option<Vec<String>>,
pub style: Option<Vec<String>>,
pub label: Option<Vec<String>>,
}
blob - 1cf54defde17f26568954c545fff6c7db8f5d124
blob + 596d7518226915037d27856fd8948ea5133b89e9
--- src/metadata/fetch.rs
+++ src/metadata/fetch.rs
use crate::context::AppContext;
-use crate::metadata::{extract_genres, extract_labels, extract_subgenres};
+use crate::metadata::{extract_labels, extract_subgenres};
use anyhow::Result;
use std::collections::HashSet;
fetch_musicbrainz(ctx, artist, album),
);
- let mut genres = HashSet::new();
let mut subgenres = HashSet::new();
let mut labels = HashSet::new();
if let Ok(Some(data)) = discogs_res {
- genres.extend(extract_genres(&data));
+ // Use Discogs subgenres (style) as primary genres
subgenres.extend(extract_subgenres(&data));
labels.extend(extract_labels(&data));
}
if let Ok(mb_genres) = mb_res {
- genres.extend(mb_genres);
+ subgenres.extend(mb_genres);
}
Ok(FetchedMetadata {
genres: {
- let mut v: Vec<_> = genres.into_iter().collect();
- v.sort();
- v
- },
- subgenres: {
let mut v: Vec<_> = subgenres.into_iter().collect();
v.sort();
v
},
+ subgenres: vec![],
labels: {
let mut v: Vec<_> = labels.into_iter().collect();
v.sort();
blob - 05ed8eb5e632a0d4da3ad5197960929e7a9ad728
blob + 21e95fc234b6be4b1baf36b698256dd38d7ec0f0
--- src/metadata/mod.rs
+++ src/metadata/mod.rs
use crate::fetchers::discogs::DiscogsResult;
-pub fn extract_genres(result: &DiscogsResult) -> Vec<String> {
- result.genre.iter().flatten().cloned().collect()
-}
-
pub fn extract_subgenres(result: &DiscogsResult) -> Vec<String> {
result.style.iter().flatten().cloned().collect()
}