Use release group instead, fixed plus char interfereing with search query
This commit is contained in:
parent
a3c387ad8f
commit
17894eecaf
1 changed files with 11 additions and 7 deletions
|
@ -1,24 +1,28 @@
|
||||||
use musicbrainz_rs::entity::release::{Release, ReleaseSearchQuery};
|
use musicbrainz_rs::entity::release_group::{ReleaseGroup, ReleaseGroupSearchQuery};
|
||||||
use musicbrainz_rs::entity::CoverartResponse;
|
use musicbrainz_rs::entity::CoverartResponse;
|
||||||
use musicbrainz_rs::{Search, FetchCoverart};
|
use musicbrainz_rs::{Search, FetchCoverart};
|
||||||
|
|
||||||
pub fn get_cover_art_url(title: &Option<String>, album: &Option<String>, artist: &Option<String>) -> Option<String>{
|
pub fn get_cover_art_url(title: &Option<String>, album: &Option<String>, artist: &Option<String>) -> Option<String>{
|
||||||
let mut builder = ReleaseSearchQuery::query_builder();
|
let mut builder = ReleaseGroupSearchQuery::query_builder();
|
||||||
if let Some(ref title) = title {
|
if let Some(ref title) = title {
|
||||||
builder.release(title);
|
builder.release_group(title);
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(ref album) = album {
|
if let Some(ref album) = album {
|
||||||
builder.or().release(album);
|
builder.or().release_group(album);
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(ref artist) = artist {
|
if let Some(ref artist) = artist {
|
||||||
builder.and().artist(artist);
|
// Some artist fields might contain + characters
|
||||||
|
// Pointing at multiple artists
|
||||||
|
for part in artist.split("+") {
|
||||||
|
builder.and().artist(part);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let query = builder.build();
|
let query = builder.build();
|
||||||
|
|
||||||
let result = match Release::search(query).execute() {
|
let result = match ReleaseGroup::search(query).execute() {
|
||||||
Ok(res) => res,
|
Ok(res) => res,
|
||||||
Err(_) => return None
|
Err(_) => return None
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue