调整抖音解析优先级为本地提取优先

变更项:

- 将抖音解析链路调整为:本地提取 -> 内网接口 -> 外部接口

- 本地提取失败后再走接口兜底,满足你要求的本地优先策略

- 保持现有返回结构与发送流程不变,仅调整解析优先级
This commit is contained in:
liuwei
2026-04-23 15:37:20 +08:00
parent bb8894097e
commit e0fa6e31ec

View File

@@ -240,23 +240,23 @@ class DouyinParserPlugin(MessagePluginInterface):
def _parse_douyin(self, url: str) -> Dict[str, Any]:
try:
clean_url = self._clean_url(url)
# 第一优先级:你现有的内网解析服务,速度快、稳定性高,优先命中。
primary = self._parse_from_internal_api(clean_url)
if primary and (primary.get('url') or primary.get('images')):
return self._clean_response_data(primary)
# 第二优先级:你现有的外部付费接口,作为内网服务不可用时的兜底。
secondary = self._parse_from_external_api(clean_url)
if secondary and (secondary.get('url') or secondary.get('images')):
return self._clean_response_data(secondary)
# 第三优先级本地提取后备方案无需依赖远端解析API
# 第一优先级:本地提取无需依赖远端解析API
# 1) 优先走 yt_dlp Python 库;
# 2) 若库不可用,再尝试系统已安装的 yt-dlp 命令行。
# 这样当接口异常/限流时,仍可在本机直接提取无水印直链和元数据。
local_fallback = self._parse_from_local_extractor(clean_url)
if local_fallback and (local_fallback.get('url') or local_fallback.get('images')):
return self._clean_response_data(local_fallback)
# 第二优先级:你现有的内网解析服务,作为本地提取失败后的兜底。
primary = self._parse_from_internal_api(clean_url)
if primary and (primary.get('url') or primary.get('images')):
return self._clean_response_data(primary)
# 第三优先级:你现有的外部付费接口,作为最终兜底。
secondary = self._parse_from_external_api(clean_url)
if secondary and (secondary.get('url') or secondary.get('images')):
return self._clean_response_data(secondary)
raise DouyinParserError("未获取到有效媒资数据")
except Exception as e:
self.LOG.error(f"[抖音] 解析过程发生未知错误: {str(e)}\n{traceback.format_exc()}")