diff options
author | metamuffin <metamuffin@disroot.org> | 2025-04-25 12:30:30 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-04-25 12:30:30 +0200 |
commit | ed5c3771f40a5107990fdbeafc3b22b88e9347be (patch) | |
tree | 51d544aba73a28133f106c26d9ece262a3ff7301 /import/src/lib.rs | |
parent | d3ab2847600eabeb102b969860e6e154cd24d954 (diff) | |
download | jellything-ed5c3771f40a5107990fdbeafc3b22b88e9347be.tar jellything-ed5c3771f40a5107990fdbeafc3b22b88e9347be.tar.bz2 jellything-ed5c3771f40a5107990fdbeafc3b22b88e9347be.tar.zst |
add wikidata api bindings (untested)
Diffstat (limited to 'import/src/lib.rs')
-rw-r--r-- | import/src/lib.rs | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/import/src/lib.rs b/import/src/lib.rs index f033171..2c1676c 100644 --- a/import/src/lib.rs +++ b/import/src/lib.rs @@ -14,7 +14,8 @@ use jellybase::{ CONF, SECRETS, }; use jellyclient::{ - Appearance, LocalTrack, PeopleGroup, TmdbKind, TrackSource, TraktKind, Visibility, + Appearance, LocalTrack, ObjectIds, PeopleGroup, Person, TmdbKind, TrackSource, TraktKind, + Visibility, }; use jellyremuxer::metadata::checked_matroska_metadata; use log::info; @@ -42,6 +43,8 @@ pub mod infojson; pub mod musicbrainz; pub mod tmdb; pub mod trakt; +pub mod wikidata; +pub mod wikimedia_commons; pub const USER_AGENT: &'static str = concat!( "jellything/", @@ -689,6 +692,31 @@ fn apply_musicbrainz_recording( .insert("musicbrainz.artist".to_string(), a.artist.id.to_string()); } + for rel in &rec.relations { + use musicbrainz::reltypes::*; + match rel.type_id.as_str() { + INSTRUMENT => { + node.people + .entry(PeopleGroup::Instrument) + .or_default() + .push(Appearance { + jobs: rel.attributes.clone(), + characters: vec![], + person: Person { + name: rel + .artist + .as_ref() + .map(|a| a.name.clone()) + .unwrap_or_default(), + headshot: None, + ids: ObjectIds::default(), + }, + }); + } + _ => (), + } + } + for isrc in &rec.isrcs { node.external_ids .insert("isrc".to_string(), isrc.to_string()); |