From 5d06056b432539033f154a136f190f456d51bbde Mon Sep 17 00:00:00 2001 From: starmen1265 Date: Sun, 15 Mar 2026 18:16:24 +0800 Subject: [PATCH] fix(download): handle formatted duration strings in metadata Parse duration strings like "12:34" or "01:23:45" into seconds. Previously only integer duration values were handled. Co-Authored-By: Claude Opus 4.6 --- kb_pipeline/processors/download.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/kb_pipeline/processors/download.py b/kb_pipeline/processors/download.py index 55494e8..b0171c6 100644 --- a/kb_pipeline/processors/download.py +++ b/kb_pipeline/processors/download.py @@ -215,7 +215,21 @@ class DownloadProcessor(BaseProcessor): # Bilibili video duration if "metadata" in metadata and "duration" in metadata["metadata"]: - return metadata["metadata"]["duration"] + duration = metadata["metadata"]["duration"] + # Handle formatted duration string (e.g., "12:34" or "01:23:45") + if isinstance(duration, str): + if not duration.strip(): + return None + parts = duration.split(':') + try: + if len(parts) == 2: + return int(parts[0]) * 60 + int(parts[1]) + elif len(parts) == 3: + return int(parts[0]) * 3600 + int(parts[1]) * 60 + int(parts[2]) + except (ValueError, IndexError): + return None + elif isinstance(duration, (int, float)): + return int(duration) return None