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.rs24
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(),
},
});