From 69c7878f9b11551a67d6786940191749f0cbf26e Mon Sep 17 00:00:00 2001 From: Diptesh Choudhuri Date: Mon, 23 Dec 2024 15:20:45 +0530 Subject: [PATCH] fix(services/importer): handle anilist edge cases --- crates/services/importer/src/anilist.rs | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/crates/services/importer/src/anilist.rs b/crates/services/importer/src/anilist.rs index 40d45756ce..92bf2d3cae 100644 --- a/crates/services/importer/src/anilist.rs +++ b/crates/services/importer/src/anilist.rs @@ -28,14 +28,14 @@ struct AnilistExport { lists: Vec< nest! { id: u64, - progress: u8, + progress: u32, score: Decimal, series_id: i32, series_type: u8, - updated_at: String, - progress_volume: u8, - custom_lists: String, + progress_volume: u32, notes: Option, + updated_at: Option, + custom_lists: Option, }, >, reviews: Vec< @@ -89,21 +89,27 @@ pub async fn import( for num in 1..progress.unwrap_or_default() + 1 { let mut history = ImportOrExportMetadataItemSeen { provider_watched_on: Some(ImportSource::Anilist.to_string()), - ended_on: Some(parse_date_string(&item.updated_at).date()), + ended_on: item + .updated_at + .clone() + .map(|d| parse_date_string(&d).date()), ..Default::default() }; match lot { MediaLot::Anime => { - history.anime_episode_number = Some(num.into()); + history.anime_episode_number = Some(num.try_into().unwrap()); } MediaLot::Manga => { - history.manga_chapter_number = Some(num.into()); + history.manga_chapter_number = Some(num.try_into().unwrap()); } _ => unreachable!(), } to_push_item.seen_history.push(history); } - let in_lists = serde_json::from_str::>(&item.custom_lists)?; + let in_lists = match item.custom_lists { + None => vec![], + Some(l) => serde_json::from_str::>(&l)?, + }; for in_list in in_lists.iter() { match lot { MediaLot::Anime => {