fix(download): handle formatted duration strings in metadata
PR Test / lint (pull_request) Successful in 1s

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 <noreply@anthropic.com>
This commit is contained in:
2026-03-15 18:16:24 +08:00
parent 368e946cd1
commit 5d06056b43
+15 -1
View File
@@ -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