diff options
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()); |