diff options
Diffstat (limited to 'import/src/lib.rs')
-rw-r--r-- | import/src/lib.rs | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/import/src/lib.rs b/import/src/lib.rs index fa74b9c..b93dbec 100644 --- a/import/src/lib.rs +++ b/import/src/lib.rs @@ -37,6 +37,7 @@ use tokio::{ task::spawn_blocking, }; use trakt::Trakt; +use vgmdb::Vgmdb; use wikidata::Wikidata; use wikimedia_commons::WikimediaCommons; @@ -45,13 +46,14 @@ pub mod infojson; pub mod musicbrainz; pub mod tmdb; pub mod trakt; +pub mod vgmdb; pub mod wikidata; pub mod wikimedia_commons; pub const USER_AGENT: &'static str = concat!( "jellything/", env!("CARGO_PKG_VERSION"), - " ( https://codeberg.org/metamuffin/jellything )" + " +https://codeberg.org/metamuffin/jellything" ); static IMPORT_SEM: LazyLock<Semaphore> = LazyLock::new(|| Semaphore::new(1)); @@ -67,6 +69,7 @@ struct Apis { musicbrainz: MusicBrainz, wikidata: Wikidata, wikimedia_commons: WikimediaCommons, + vgmdb: Vgmdb, } pub fn is_importing() -> bool { @@ -96,6 +99,7 @@ fn import(db: &Database, incremental: bool) -> Result<()> { musicbrainz: MusicBrainz::new(), wikidata: Wikidata::new(), wikimedia_commons: WikimediaCommons::new(), + vgmdb: Vgmdb::new(), }; let rthandle = Handle::current(); @@ -716,7 +720,8 @@ fn apply_musicbrainz_recording( let artist = rthandle.block_on(apis.musicbrainz.lookup_artist(artist.id.clone()))?; - let mut image = None; + let mut image_1 = None; + let mut image_2 = None; for rel in &artist.relations { match rel.type_id.as_str() { @@ -729,7 +734,18 @@ fn apply_musicbrainz_recording( let path = rthandle.block_on( apis.wikimedia_commons.image_by_filename(filename), )?; - image = Some(AssetInner::Cache(path).ser()); + image_1 = Some(AssetInner::Cache(path).ser()); + } + } + } + VGMDB => { + let url = rel.url.as_ref().unwrap().resource.clone(); + if let Some(id) = url.strip_prefix("https://vgmdb.net/artist/") { + let id = id.parse::<u64>().context("parse vgmdb id")?; + if let Some(path) = + rthandle.block_on(apis.vgmdb.get_artist_image(id))? + { + image_2 = Some(AssetInner::Cache(path).ser()); } } } @@ -750,7 +766,7 @@ fn apply_musicbrainz_recording( } else { rel.target_credit.clone() }, - headshot: image, + headshot: image_1.or(image_2), ids: ObjectIds::default(), }, }); |