feat: 优化DB.py中的视频记录字段,移除冗余字段并调整字段逻辑

This commit is contained in:
晓丰 2025-07-01 19:46:22 +08:00
parent 6d102f9e84
commit 1e38b31e60

25
DB.py
View File

@ -52,12 +52,9 @@ video_op = Table("sh_dm_video_op_v3", _meta,
video = Table("sh_dm_video_v3", _meta,
Column("id", Integer, primary_key=True, autoincrement=True),
Column("v_id", String(64)),
Column("v_xid", String(64)),
Column("rn", String(50)),
Column("v_name", String(255), nullable=False),
Column("v_xid", String(64), nullable=False),
Column("title", String(255), nullable=False),
Column("link", String(255), nullable=False),
Column("is_piracy", Integer, default=3),
Column("edition", String(255), default=''),
Column("duration", String(11), default='0'),
Column("watch_number", Integer, default=0),
@ -66,17 +63,14 @@ video = Table("sh_dm_video_v3", _meta,
Column("public_time", DateTime),
Column("cover_pic", String(255)),
Column("sort", Integer),
Column("history_status", String(255)),
Column("u_xid", String(64)),
Column("u_id", String(100)),
Column("u_pic", String(255)),
Column("u_name", String(255)),
Column("status", Integer, default=1),
Column("ts_status", Integer, default=1),
Column("createtime", Integer),
Column("updatetime", Integer),
Column("is_repeat", Integer, default=0),
Column("operatetime", Integer),
Column("createtime", Integer, default=0),
Column("updatetime", Integer, default=0),
Column("operatetime", Integer, default=0),
)
# 作者表
video_author = Table(
@ -717,7 +711,6 @@ class DBSA:
logger.debug(f"跳过重复视频记录: {vid_index_key}")
return
# 操作记录表
op_row = {
"v_id": data["v_id"],
"v_xid": data["v_xid"],
@ -736,7 +729,6 @@ class DBSA:
"ts_status": data.get("ts_status", 1),
}
# 视频表
vid_row = {
"v_id": data["v_id"],
"v_xid": data["v_xid"],
@ -758,11 +750,10 @@ class DBSA:
"watch_number": data.get("view", 0),
"follow_number": data.get("fans", 0),
"video_number": data.get("videos", 0),
"is_repeat": 3,
"ts_status": data.get("ts_status", 1),
}
# 仅保留 sh_dm_video_v3 表中存在的字段
# 只保留 video 表中合法字段
video_fields = {c.name for c in video.columns}
vid_row = {k: v for k, v in vid_row.items() if k in video_fields}
@ -792,7 +783,6 @@ class DBSA:
if not op_rows and not vid_rows:
return
# ====== 写作者表 ======
authors_map = {}
now_ts = int(time.time())
for data in payloads:
@ -832,7 +822,6 @@ class DBSA:
cls.push_record_many(payloads)
return
# ====== 写操作记录表UPSERT======
if op_rows:
try:
stmt = mysql_insert(video_op).values(op_rows)
@ -850,7 +839,6 @@ class DBSA:
cls.push_record_many(payloads)
return
# ====== 写视频表UPSERT======
if vid_rows:
try:
stmt = mysql_insert(video).values(vid_rows)
@ -873,7 +861,6 @@ class DBSA:
"ts_status": stmt.inserted.ts_status,
"updatetime": stmt.inserted.updatetime,
"operatetime": stmt.inserted.operatetime,
"is_repeat": stmt.inserted.is_repeat,
}
ondup = stmt.on_duplicate_key_update(**upd)
with _engine.begin() as conn:
@ -894,4 +881,4 @@ class DBSA:
if getattr(e.orig, "args", [None])[0] == 1213 and attempt < 2:
time.sleep(0.5 * (attempt + 1))
continue
raise
raise