modify scripts

This commit is contained in:
oscarz
2025-04-23 17:13:35 +08:00
parent f42fd2177b
commit f6385b83e4
4 changed files with 296 additions and 13 deletions

View File

@ -49,7 +49,7 @@ def insert_actor_index(name, href, from_actor_list=None, from_movie_list=None):
performer_id = get_id_by_href('javdb_actors', href)
if performer_id:
logging.debug(f'Inserted/Updated actor index, id: {performer_id}, name: {name}, href: {href}')
logging.debug(f"Inserted/Updated actor index, id: {performer_id}, name: {name}, href: {href}")
return performer_id
@ -200,6 +200,33 @@ def query_actors(**filters):
if "is_full_data" in filters:
sql += " AND is_full_data = ?"
params.append(filters["is_full_data"])
if "from_actor_list" in filters:
sql += " AND from_actor_list = ?"
params.append(filters["from_actor_list"])
if "is_full_data_in" in filters:
values = filters["is_full_data_in"]
if values:
placeholders = ", ".join(["?"] * len(values))
sql += f" AND is_full_data IN ({placeholders})"
params.extend(values)
if "is_full_data_not_in" in filters:
values = filters["is_full_data_not_in"]
if values:
placeholders = ", ".join(["?"] * len(values))
sql += f" AND is_full_data NOT IN ({placeholders})"
params.extend(values)
if "before_updated_at" in filters:
sql += " AND updated_at <= ?"
params.append(filters["before_updated_at"])
if "after_updated_at" in filters:
sql += " AND updated_at >= ?"
params.append(filters["after_updated_at"])
if "start_id" in filters:
sql += " AND id > ?"
params.append(filters["start_id"])
if "order_by" in filters:
sql += " order by ? asc"
params.append(filters["order_by"])
if 'limit' in filters:
sql += " limit ?"
params.append(filters["limit"])
@ -372,13 +399,43 @@ def query_series_hrefs(**filters):
return None
# 插入或更新类别 """
def insert_or_update_tags(name, href):
try:
cursor.execute("""
INSERT INTO javdb_tags (name, href, updated_at)
VALUES (?, ? , datetime('now', 'localtime'))
ON CONFLICT(href) DO UPDATE SET
name = excluded.name,
updated_at = datetime('now', 'localtime')
""", (name, href))
conn.commit()
# 获取 performer_id
cursor.execute("SELECT id FROM javdb_tags WHERE href = ?", (href,))
dist_id = cursor.fetchone()[0]
if dist_id:
logging.debug(f"insert/update tags succ. id: {dist_id}, name: {name}")
return dist_id
else:
return None
except sqlite3.Error as e:
conn.rollback()
logging.error(f"数据库错误: {e}")
return None
# """插入或更新电影数据"""
def insert_or_update_movie(movie):
try:
# 获取相关 ID
makers_id = get_id_by_href('javdb_makers', movie['maker_link'])
series_id = get_id_by_href('javdb_series', movie['series_link'])
makers_id = get_id_by_href('javdb_makers', movie['maker_link']) if movie['maker_link'] else None
series_id = get_id_by_href('javdb_series', movie['series_link']) if movie['series_link'] else None
# 如果不存在,插入
if makers_id is None and movie['maker_link']:
makers_id = insert_or_update_makers({'name' : movie.get('maker_name', ''), 'href' : movie.get('maker_link', '')})
if series_id is None and movie['series_link']:
series_id = insert_or_update_series({'name' : movie.get('series_name', ''), 'href' : movie.get('series_link', '')})
cursor.execute("""
INSERT INTO javdb_movies (href, title, cover_url, serial_number, release_date, duration,
@ -404,7 +461,7 @@ def insert_or_update_movie(movie):
if movie_id is None:
return None
logging.debug(f'insert one move, id: {movie_id}, title: {movie['title']}, href: {movie['href']}')
logging.debug(f"insert one move, id: {movie_id}, title: {movie['title']}, href: {movie['href']}")
# 插入 performers_movies 关系表
for performer in movie.get('actors', []):
@ -412,14 +469,23 @@ def insert_or_update_movie(movie):
# 如果演员不存在,先插入
if performer_id is None:
performer_id = insert_actor_index(performer['name'], performer['href'], from_movie_list=1)
logging.debug(f"insert new perfomer. perfomer_id: {performer_id}, name:{performer['name']}")
if performer_id:
tmp_id = insert_actor_movie(performer_id, movie_id)
if tmp_id:
logging.debug(f"insert one perfomer_movie. perfomer_id: {performer_id}, movie_id:{movie_id}")
else:
logging.debug(f'insert perfomer_movie failed. perfomer_id: {performer_id}, movie_id:{movie_id}')
logging.debug(f"insert perfomer_movie failed. perfomer_id: {performer_id}, movie_id:{movie_id}")
else:
logging.warning(f'insert perfomer failed. name: {performer['name']}, href: {performer['href']}')
logging.warning(f"insert perfomer failed. name: {performer['name']}, href: {performer['href']}")
# 插入 tags 表
for tag in movie.get('tags', []):
tag_name = tag.get('name', '')
tag_href = tag.get('href', '')
tag_id = insert_or_update_tags(tag_name, tag_href)
if tag_id:
logging.debug(f"insert one tags. tag_id: {tag_id}, name:{tag_name}")
return movie_id
@ -516,6 +582,33 @@ def query_movie_hrefs(**filters):
if "is_full_data" in filters:
sql += " AND is_full_data = ?"
params.append(filters["is_full_data"])
if "from_actor_list" in filters:
sql += " AND from_actor_list = ?"
params.append(filters["from_actor_list"])
if "is_full_data_in" in filters:
values = filters["is_full_data_in"]
if values:
placeholders = ", ".join(["?"] * len(values))
sql += f" AND is_full_data IN ({placeholders})"
params.extend(values)
if "is_full_data_not_in" in filters:
values = filters["is_full_data_not_in"]
if values:
placeholders = ", ".join(["?"] * len(values))
sql += f" AND is_full_data NOT IN ({placeholders})"
params.extend(values)
if "before_updated_at" in filters:
sql += " AND updated_at <= ?"
params.append(filters["before_updated_at"])
if "after_updated_at" in filters:
sql += " AND updated_at >= ?"
params.append(filters["after_updated_at"])
if "start_id" in filters:
sql += " AND id > ?"
params.append(filters["start_id"])
if "order_by" in filters:
sql += " order by ?"
params.append(filters["order_by"])
if 'limit' in filters:
sql += " limit ?"
params.append(filters["limit"])