zhoujiaangyao commited on
Commit
5dbd5b2
·
1 Parent(s): 7ac14f4

feat: LocalDownloader 适配上传的音频/视频(容错封面 + 透传 video_path)

Browse files
backend/app/downloaders/local_downloader.py CHANGED
@@ -119,19 +119,29 @@ class LocalDownloader(Downloader, ABC):
119
  title, _ = os.path.splitext(file_name)
120
  print(title, file_name,video_url)
121
  file_path=self.convert_to_mp3(video_url)
122
- cover_path = self.extract_cover(video_url)
123
- cover_url = save_cover_to_static(cover_path)
 
 
 
 
 
 
 
 
 
 
124
 
125
  print('file——path',file_path)
126
  return AudioDownloadResult(
127
  file_path=file_path,
128
  title=title,
129
  duration=0, # 可选:后续加上读取时长
130
- cover_url=cover_url, # 暂无封面
131
  platform="local",
132
  video_id=title,
133
  raw_info={
134
  'path': file_path
135
  },
136
- video_path=None
137
  )
 
119
  title, _ = os.path.splitext(file_name)
120
  print(title, file_name,video_url)
121
  file_path=self.convert_to_mp3(video_url)
122
+ # 纯音频文件没有视频流,extract_cover 会失败:容错跳过封面,别让整条任务崩。
123
+ # (下载 worker 在不需要截图时只上传音频 mp3,会走到这里。)
124
+ cover_url = ""
125
+ try:
126
+ cover_path = self.extract_cover(video_url)
127
+ cover_url = save_cover_to_static(cover_path)
128
+ except Exception as e:
129
+ print(f"提取封面失败(可能是纯音频文件),跳过封面: {e}")
130
+
131
+ # need_video=True(要截图)时,把上传的视频原文件作为 video_path 传下去,
132
+ # 让后续截图环节能从这个本地视频取帧;纯音频则为 None。
133
+ video_path = video_url if need_video and os.path.exists(video_url) else None
134
 
135
  print('file——path',file_path)
136
  return AudioDownloadResult(
137
  file_path=file_path,
138
  title=title,
139
  duration=0, # 可选:后续加上读取时长
140
+ cover_url=cover_url,
141
  platform="local",
142
  video_id=title,
143
  raw_info={
144
  'path': file_path
145
  },
146
+ video_path=video_path
147
  )