From 569efb3dda4b3642e9cde9edc83b47c1c69c05e4 Mon Sep 17 00:00:00 2001 From: volbil Date: Tue, 15 Oct 2024 11:41:37 +0300 Subject: [PATCH] Improved aggregator character/person image sync logic --- app/aggregator/characters.py | 15 +++++++++++---- app/aggregator/people.py | 15 +++++++++++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/app/aggregator/characters.py b/app/aggregator/characters.py index 852329a6..3786e124 100644 --- a/app/aggregator/characters.py +++ b/app/aggregator/characters.py @@ -21,6 +21,8 @@ async def save_characters(session, data): add_characters = [] for character_data in data: + new_image = False + if not (image := image_cache.get(character_data["image"])): if character_data["image"]: image = Image( @@ -33,6 +35,7 @@ async def save_characters(session, data): ) image_cache[character_data["image"]] = image + new_image = True updated = utils.from_timestamp(character_data["updated"]) slug = utils.slugify( @@ -42,10 +45,14 @@ async def save_characters(session, data): if character_data["content_id"] in characters_cache: character = characters_cache[character_data["content_id"]] - if character.updated == updated: - continue - - if character.favorites == character_data["favorites"]: + # We only skip if there is nothing to update + if all( + [ + character.updated == updated, + character.favorites == character_data["favorites"], + new_image is False, + ] + ): continue character.favorites = character_data["favorites"] diff --git a/app/aggregator/people.py b/app/aggregator/people.py index 0abcc806..5e57a130 100644 --- a/app/aggregator/people.py +++ b/app/aggregator/people.py @@ -21,6 +21,8 @@ async def save_people(session, data): add_people = [] for person_data in data: + new_image = False + if not (image := image_cache.get(person_data["image"])): if person_data["image"]: image = Image( @@ -33,6 +35,7 @@ async def save_people(session, data): ) image_cache[person_data["image"]] = image + new_image = True updated = utils.from_timestamp(person_data["updated"]) slug = utils.slugify(person_data["name_en"], person_data["content_id"]) @@ -40,10 +43,14 @@ async def save_people(session, data): if person_data["content_id"] in people_cache: person = people_cache[person_data["content_id"]] - if person.updated == updated: - continue - - if person.favorites == person_data["favorites"]: + # We only skip if there is nothing to update + if all( + [ + person.updated == updated, + person.favorites == person_data["favorites"], + new_image is False, + ] + ): continue person.favorites = person_data["favorites"]