aboutsummaryrefslogtreecommitdiff
path: root/import/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'import/src/lib.rs')
-rw-r--r--import/src/lib.rs30
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());