From e0fa6e31ec323d70ab193248f07d450d028d4bfd Mon Sep 17 00:00:00 2001 From: liuwei Date: Thu, 23 Apr 2026 15:37:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=8A=96=E9=9F=B3=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E4=BC=98=E5=85=88=E7=BA=A7=E4=B8=BA=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E6=8F=90=E5=8F=96=E4=BC=98=E5=85=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 变更项: - 将抖音解析链路调整为:本地提取 -> 内网接口 -> 外部接口 - 本地提取失败后再走接口兜底,满足你要求的本地优先策略 - 保持现有返回结构与发送流程不变,仅调整解析优先级 --- plugins/douyin_parser/main.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) 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()}")