diff --git a/iafd/src/fetch.py b/iafd/src/fetch.py index 953c133..1a027b0 100644 --- a/iafd/src/fetch.py +++ b/iafd/src/fetch.py @@ -264,7 +264,9 @@ def fetch_performers_detail_once(perfomers_list): if data: # 检查影片数量是否有更新 page_movies_cnt = int(data.get('movies_cnt', '0')) + movies_changed = True if page_movies_cnt <= movies_cnt: + movies_changed = False if not force: logging.info(f"actor already update. skipping... person: ({person}), url: {url}") last_performer_id = curr_id @@ -274,7 +276,9 @@ def fetch_performers_detail_once(perfomers_list): 'href': url, 'person': person, **data - }) + }, + movies_update=movies_changed + ) if performer_id: logging.debug(f'insert one person, id: {performer_id}, person: ({person}), url: {url}') last_performer_id = performer_id diff --git a/iafd/src/sqlite_utils.py b/iafd/src/sqlite_utils.py index 57ad78b..a3426cb 100644 --- a/iafd/src/sqlite_utils.py +++ b/iafd/src/sqlite_utils.py @@ -172,7 +172,7 @@ def insert_movie_appears_in(movie_id, appears_in_id, gradation=0, notes=''): # 插入演员信息 -def insert_or_update_performer(data): +def insert_or_update_performer(data, movies_update=True): try: cursor.execute(""" INSERT INTO iafd_performers (href, name, gender, birthday, astrology, birthplace, years_active, ethnicity, nationality, hair_colors, @@ -225,20 +225,21 @@ def insert_or_update_performer(data): conn.commit() # 插入影片列表,可能有 personal 和 director 两个身份 - credits = data.get('credits', {}) - for role, movies in credits.items(): - if movies: - for movie in movies: - movie_id = get_id_by_href('iafd_movies', movie['href']) - # 影片不存在,先插入 - if movie_id is None: - movie_id = insert_movie_index(movie['title'], movie['href'], utils.to_number(movie['year']), from_performer_list=1) - if movie_id: - tmp_id = insert_performer_movie(performer_id, movie_id, role, movie['notes']) - if tmp_id : - logging.debug(f"insert one performer_movie, performer_id: {performer_id}, movie_id: {movie_id}, role: {role}") - else: - logging.warning(f"insert performer_movie failed. performer_id: {performer_id}, moive href: {movie['href']}") + if movies_update: + credits = data.get('credits', {}) + for role, movies in credits.items(): + if movies: + for movie in movies: + movie_id = get_id_by_href('iafd_movies', movie['href']) + # 影片不存在,先插入 + if movie_id is None: + movie_id = insert_movie_index(movie['title'], movie['href'], utils.to_number(movie['year']), from_performer_list=1) + if movie_id: + tmp_id = insert_performer_movie(performer_id, movie_id, role, movie['notes']) + if tmp_id : + logging.debug(f"insert one performer_movie, performer_id: {performer_id}, movie_id: {movie_id}, role: {role}") + else: + logging.warning(f"insert performer_movie failed. performer_id: {performer_id}, moive href: {movie['href']}") return performer_id