diff --git a/plugins/douyin_parser/main.py b/plugins/douyin_parser/main.py index dc3623b..69890d4 100644 --- a/plugins/douyin_parser/main.py +++ b/plugins/douyin_parser/main.py @@ -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()}")