diff --git a/kontor-scripts/add_links.py b/kontor-scripts/add_links.py index 786a679..43a906e 100644 --- a/kontor-scripts/add_links.py +++ b/kontor-scripts/add_links.py @@ -81,6 +81,12 @@ def get_actors_mapping(actor_list: List[MediaActor]) -> Dict[str, MediaActor]: mapping[str(actor.url)] = actor return mapping +def get_actornames_mapping(actor_list: List[MediaActor]) -> Dict[str, MediaActor]: + mapping: Dict[str, MediaActor] = {} + for actor in actor_list: + mapping[str(actor.name)] = actor + return mapping + def get_meta_info(media_file: MediaFile, log) -> List[str]: actor_links: List[str] = [] try: @@ -139,6 +145,7 @@ if __name__ == '__main__': media_files = db.query(MediaFile).filter(MediaFile.url == link).all() media_actors = db.query(MediaActor).all() actor_mapping = get_actors_mapping(media_actors) + actorname_mapping = get_actornames_mapping(media_actors) if len(media_files) == 0: logger.info(f"MediaFile for link {link} not found") media_file = MediaFile() @@ -173,17 +180,22 @@ if __name__ == '__main__': db.add(media_actor_file) db.commit() else: - media_actor = MediaActor() - media_actor.id = str(uuid.uuid4()) - media_actor.created_date = datetime.now() - media_actor.last_modified_date = datetime.now() - media_actor.version = 0 - media_actor.name = get_actor_name(actor_url, logger) - media_actor.url = actor_url - logger.info(f"update MediaActor with {repr(media_actor)}") - if not args.dry_run: - db.add(media_actor) - db.commit() + media_actor: MediaActor = None # type: ignore + actor_name = get_actor_name(actor_url, logger) + if actor_name in actorname_mapping: + media_actor = actorname_mapping[actor_name] + else: + media_actor = MediaActor() + media_actor.id = str(uuid.uuid4()) + media_actor.created_date = datetime.now() + media_actor.last_modified_date = datetime.now() + media_actor.version = 0 + media_actor.name = get_actor_name(actor_url, logger) + media_actor.url = actor_url + logger.info(f"update MediaActor with {repr(media_actor)}") + if not args.dry_run: + db.add(media_actor) + db.commit() media_actor_file = MediaActorFile() media_actor_file.id = str(uuid.uuid4()) media_actor_file.created_date = datetime.now()