From d7d7035e515ac1541822a3bd6c841782aa6b0d98 Mon Sep 17 00:00:00 2001 From: Franklin-F Date: Mon, 7 Jul 2025 20:02:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B0=86v=5Fname=E5=88=97=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=88=B0=E8=A7=86=E9=A2=91=E8=A1=A8=E5=B9=B6=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=9B=B8=E5=85=B3=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DB.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/DB.py b/DB.py index 26b947f..54e19f2 100644 --- a/DB.py +++ b/DB.py @@ -53,6 +53,7 @@ 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_name", String(100), nullable=False), Column("v_xid", String(64), nullable=False), Column("title", String(255), nullable=False), Column("link", String(255), nullable=False), @@ -720,7 +721,8 @@ class DBSA: now_ts = int(time.time()) op_index_key = (data["v_xid"] or "", data["keyword"] or "", now_ts) - vid_index_key = (data["v_xid"] or "", data["title"] or "") + # —— 用 v_name 去重,避免 title 冲突 —— + vid_index_key = (data["v_xid"] or "", data["v_name"] or "") # ---------- ① 获取互斥锁 ---------- if not cls._lock.acquire(timeout=cls.LOCK_TIMEOUT): @@ -737,7 +739,7 @@ class DBSA: v_xid=data["v_xid"], a_id=data["a_id"], level=data.get("level", 0), - name_title=data["title"][:100], + name_title=data["v_name"][:100], # ✨ NEW: 截断避免过长 keyword=data["keyword"], is_repeat=data["is_repeat"], sort=data["sort"], @@ -756,6 +758,7 @@ class DBSA: v_id=data["v_id"], v_xid=data["v_xid"], title=data["title"], + v_name=data["v_name"], link=data["link"], edition="", duration=str(data["duration"]) if data.get("duration") else '0', @@ -901,6 +904,7 @@ class DBSA: stmt_vid = mysql_insert(video).values(vid_rows) ondup_vid = stmt_vid.on_duplicate_key_update( title = stmt_vid.inserted.title, + v_name = stmt_vid.inserted.v_name, link = stmt_vid.inserted.link, edition = stmt_vid.inserted.edition, duration = stmt_vid.inserted.duration, @@ -986,7 +990,7 @@ class DBSA: now_ts = int(time.time()) op_key = (data["v_xid"] or "", data["keyword"] or "", now_ts) - vid_key = (data["v_xid"] or "", data["title"] or "") + vid_key = (data["v_xid"] or "", data["v_name"] or "") if op_key in cls._existing_op_keys or vid_key in cls._existing_vid_keys: return @@ -996,7 +1000,7 @@ class DBSA: v_xid=data["v_xid"], a_id=data.get("a_id", 0), level=data.get("level", 0), - name_title=data["title"][:255], + name_title=data["v_name"], keyword=data["keyword"], is_repeat=data["is_repeat"], sort=data["sort"], @@ -1013,6 +1017,7 @@ class DBSA: v_id=data["v_id"], v_xid=data["v_xid"], title=data["title"], + v_name=data["v_name"], link=data["link"], edition="", duration=str(data["duration"]) if data.get("duration") else '0', @@ -1037,4 +1042,4 @@ class DBSA: cls._buf_vid.append(vid_row) cls._buf_payload.append(data) cls._existing_op_keys.add(op_key) - cls._existing_vid_keys.add(vid_key) + cls._existing_vid_keys.add(vid_key) \ No newline at end of file