From d7468a6bcad6ab9cf86a0a4b7c6f2268148ce173 Mon Sep 17 00:00:00 2001 From: karuo Date: Wed, 4 Mar 2026 17:22:35 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=84=20=E5=8D=A1=E8=8B=A5AI=20=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=202026-03-04=2017:22=20|=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=EF=BC=9A=E5=8D=A1=E6=9C=A8=E3=80=81=E8=BF=90=E8=90=A5=E4=B8=AD?= =?UTF-8?q?=E6=9E=A2=E5=B7=A5=E4=BD=9C=E5=8F=B0=20|=20=E6=8E=92=E9=99=A4?= =?UTF-8?q?=20>20MB:=2011=20=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../抖音视频解析/n8n_一键下载抖音视频文案_使用说明.md | 6 +++++- .../木叶_视频内容/抖音视频解析/脚本/douyin_parse.py | 18 ++++++++++++++---- 运营中枢/工作台/gitea_push_log.md | 1 + 运营中枢/工作台/代码管理.md | 1 + 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/03_卡木(木)/木叶_视频内容/抖音视频解析/n8n_一键下载抖音视频文案_使用说明.md b/03_卡木(木)/木叶_视频内容/抖音视频解析/n8n_一键下载抖音视频文案_使用说明.md index e096eb4f..cfae0695 100644 --- a/03_卡木(木)/木叶_视频内容/抖音视频解析/n8n_一键下载抖音视频文案_使用说明.md +++ b/03_卡木(木)/木叶_视频内容/抖音视频解析/n8n_一键下载抖音视频文案_使用说明.md @@ -25,7 +25,11 @@ cd /Users/karuo/Documents/开发/2、私域银行/神射手 && docker compose up ### 3. 使用方式 -- **方式一(推荐)**:执行前点击节点「**设置链接与是否下载**」,将 `url` 改为要解析的抖音链接(如 `https://v.douyin.com/xxx`),`download` 为 `true` 则同时下载视频,为 `false` 则仅解析文案。然后点击 **Test workflow** 或 **Execute Workflow**。 +- **方式一(推荐)**:执行前点击节点「**设置链接与是否下载**」,将 `url` 改为要解析的抖音链接。支持: + - 短链:`https://v.douyin.com/xxx` + - 视频页:`https://www.douyin.com/video/7591362359689147057` + - 精选页:`https://www.douyin.com/jingxuan?modal_id=7591362359689147057` + `download` 为 `true` 则同时下载视频,为 `false` 则仅解析文案。然后点击 **Test workflow** 或 **Execute Workflow**。 - **方式二**:用「**Execute Workflow**」时在输入数据中传入一条数据:`{"url": "https://v.douyin.com/xxx", "download": true}`。 ### 4. 结果 diff --git a/03_卡木(木)/木叶_视频内容/抖音视频解析/脚本/douyin_parse.py b/03_卡木(木)/木叶_视频内容/抖音视频解析/脚本/douyin_parse.py index 7fd0506d..6d348fd1 100644 --- a/03_卡木(木)/木叶_视频内容/抖音视频解析/脚本/douyin_parse.py +++ b/03_卡木(木)/木叶_视频内容/抖音视频解析/脚本/douyin_parse.py @@ -27,10 +27,12 @@ MOBILE_UA = ( def parse_url_to_aweme_id(url: str) -> str | None: - """从抖音链接提取 aweme_id""" + """从抖音链接提取 aweme_id(支持 /video/ID 与 jingxuan?modal_id=ID)""" url = url.strip() - # 完整链接可直接提取 m = re.search(r"/video/(\d+)", url) + if m: + return m.group(1) + m = re.search(r"modal_id=(\d+)", url) if m: return m.group(1) return None @@ -39,10 +41,16 @@ def parse_url_to_aweme_id(url: str) -> str | None: def fetch_and_parse(url: str) -> tuple[dict, str | None]: """ 请求视频页面,解析 ID、文案、视频 URL。 - 支持短链 v.douyin.com 或完整链接。 + 支持短链 v.douyin.com、完整链接、精选页 jingxuan?modal_id=ID。 返回 (info_dict, video_url) """ url = url.strip() + initial_url = url # 保留原始链接,用于回退提取 aweme_id + # 精选页 jingxuan?modal_id= 转为 /video/ID 再请求 + if "jingxuan" in url and "modal_id=" in url: + aweme = parse_url_to_aweme_id(url) + if aweme: + url = f"https://www.douyin.com/video/{aweme}" # 短链需先 resolve 到完整链接 if "v.douyin.com" in url: try: @@ -62,7 +70,7 @@ def fetch_and_parse(url: str) -> tuple[dict, str | None]: except Exception as e: return {"error": str(e), "aweme_id": None}, None - aweme_id = parse_url_to_aweme_id(url) + aweme_id = parse_url_to_aweme_id(url) or parse_url_to_aweme_id(initial_url) info = { "aweme_id": aweme_id or "unknown", "video_id": None, @@ -83,6 +91,8 @@ def fetch_and_parse(url: str) -> tuple[dict, str | None]: m = re.search(pattern, html) if m: info[key] = m.group(1) + if info.get("aweme_id") == "unknown" and parse_url_to_aweme_id(initial_url): + info["aweme_id"] = parse_url_to_aweme_id(initial_url) # 2. 从 ROUTER_DATA 提取视频 URL(优先,避免拿到封面图) router = re.search(r"window\._ROUTER_DATA\s*=\s*(\{.*?\});?\s*", html, re.DOTALL) diff --git a/运营中枢/工作台/gitea_push_log.md b/运营中枢/工作台/gitea_push_log.md index 97bda422..bf5b3fdf 100644 --- a/运营中枢/工作台/gitea_push_log.md +++ b/运营中枢/工作台/gitea_push_log.md @@ -221,3 +221,4 @@ | 2026-03-03 22:01:54 | 🔄 卡若AI 同步 2026-03-03 22:01 | 更新:Cursor规则、金仓、水溪整理归档、卡木、总索引与入口、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 11 个 | | 2026-03-04 11:48:54 | 🔄 卡若AI 同步 2026-03-04 11:48 | 更新:水桥平台对接、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 11 个 | | 2026-03-04 17:03:17 | 🔄 卡若AI 同步 2026-03-04 17:03 | 更新:卡木、运营中枢工作台 | 排除 >20MB: 11 个 | +| 2026-03-04 17:09:09 | 🔄 卡若AI 同步 2026-03-04 17:09 | 更新:卡木、运营中枢工作台 | 排除 >20MB: 11 个 | diff --git a/运营中枢/工作台/代码管理.md b/运营中枢/工作台/代码管理.md index d412824d..64eb8058 100644 --- a/运营中枢/工作台/代码管理.md +++ b/运营中枢/工作台/代码管理.md @@ -224,3 +224,4 @@ | 2026-03-03 22:01:54 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-03 22:01 | 更新:Cursor规则、金仓、水溪整理归档、卡木、总索引与入口、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 11 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | | 2026-03-04 11:48:54 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-04 11:48 | 更新:水桥平台对接、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 11 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | | 2026-03-04 17:03:17 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-04 17:03 | 更新:卡木、运营中枢工作台 | 排除 >20MB: 11 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | +| 2026-03-04 17:09:09 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-04 17:09 | 更新:卡木、运营中枢工作台 | 排除 >20MB: 11 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |