|
@@ -0,0 +1,59 @@
|
|
|
|
|
+# 视频/音频取数与多模态喂入 · 实测
|
|
|
|
|
+
|
|
|
|
|
+> 实测日期 2026-06-16,在阿里云海外开发机(新加坡,出口 47.245.103.121)上,对 `crawler.aiddit.com` 各平台 detail 接口 + 真实下载 + Gemini(经 OpenRouter)逐一实测。结论以本文为准;样例 id 见各小节,原始抓包在 `captures/`。
|
|
|
|
|
+
|
|
|
|
|
+## 1. 平台可取数据矩阵(实测)
|
|
|
|
|
+
|
|
|
|
|
+| 平台 | 图文(图片+文字) | 视频文件 | 音频(口播) | 取数难度 |
|
|
|
|
|
+|---|---|---|---|---|
|
|
|
|
|
+| 小红书 | ✅ 图片可下载 | ❌ 详情不给视频直链(视频帖也只给封面图) | — | 最简单 |
|
|
|
|
|
+| 抖音 | ✅ | ✅ 干净 mp4,多码率 540/720/1080 | ✅ 含在 mp4 | 简单 |
|
|
|
|
|
+| 快手 | (图文未单测) | ✅ 干净 mp4 | ✅ 含在 mp4 | 简单 |
|
|
|
|
|
+| B站 | (仅封面图) | ✅ 但 DASH 分轨 m4s | ✅ 但在 `voice_data` 单独音轨 | 较麻烦(需合并) |
|
|
|
|
|
+
|
|
|
|
|
+实测证据:
|
|
|
|
|
+- 小红书视频帖 `6976f6fd000000001a01eede`:`content_type=video` 但 `video_url_list=null`,只有 `image_url_list`(封面)。图文帖 `67e4bdf50000000006028a59`:5 张图,图片下载 200 image/jpeg。
|
|
|
|
|
+- 抖音 `7612631899479648866`:`video_url_list[0].video_url` + `multi_bitrate{540p,720p,1080p}`;540p 下载 206 `video/mp4`(13.5MB / 1.2s)。
|
|
|
|
|
+- B站 `BV1qd4y1x76w`:视频轨 m4s + 音频轨在 `voice_data.play_url`;合并后 ffmpeg 验流含 `Video h264 (avc1)` + `Audio aac (HE-AAC) 44100Hz stereo`。
|
|
|
|
|
+- 快手 `3xepqgwddgbickc`:`video_url_list` 一条,206 `video/mp4`。
|
|
|
|
|
+
|
|
|
|
|
+## 2. 下载方法(实测可用)
|
|
|
|
|
+
|
|
|
|
|
+### 图片:不用下载
|
|
|
|
|
+把图片 URL 直接作为 `image_url` 给 Gemini,模型自己抓取(各平台图片/封面同此)。
|
|
|
|
|
+
|
|
|
|
|
+### 抖音 / 快手 视频:干净 mp4
|
|
|
|
|
+1. detail → `video_url_list[0].video_url`(抖音可把 `ratio=default` 改 `ratio=540p` 控体积)。
|
|
|
|
|
+2. GET 该 URL,必带:
|
|
|
|
|
+ - `User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15`(iOS UA)
|
|
|
|
|
+ - `Referer: https://www.douyin.com/`(快手用 `https://www.kuaishou.com/`)
|
|
|
|
|
+ - 跟随重定向(302 → CDN)
|
|
|
|
|
+3. 得到完整 mp4(音视频一体)。新加坡云端直连 CDN `douyinvod.com` 可达。
|
|
|
|
|
+
|
|
|
|
|
+### B站 视频:DASH 分轨,必须合并
|
|
|
|
|
+1. detail →
|
|
|
|
|
+ - 视频轨:`video_url_list[0].video_url`(`..._nb3-1-30016.m4s`,**30016=视频 AVC**)
|
|
|
|
|
+ - 音频轨:**`voice_data.play_url`**(`..._nb3-1-30216.m4s`,**30216=音频 AAC**)——不在 video_url_list,藏在 `voice_data` 字段(dict,含 id_str/duration/play_url)。
|
|
|
|
|
+2. 下两轨,**用 curl 且不跟随重定向**:
|
|
|
|
|
+ ```bash
|
|
|
|
|
+ curl -s --connect-timeout 15 -A 'Mozilla/5.0' -e 'https://www.bilibili.com/' -o v.m4s "<video_url>"
|
|
|
|
|
+ curl -s --connect-timeout 15 -A 'Mozilla/5.0' -e 'https://www.bilibili.com/' -o a.m4s "<voice_data.play_url>"
|
|
|
|
|
+ ```
|
|
|
|
|
+ ⚠️ **坑**:B站 m4s 的 `*.mcdn.bilivideo.cn` 节点,用 httpx `follow_redirects=True` 会被带到 P2P 死节点、连接超时(实测两次都卡死);curl 不跟随重定向直接 206 秒下。视频轨主 host 是 `upos-sz-mirrorcos.bilivideo.com`(稳)。
|
|
|
|
|
+3. 合并:`ffmpeg -i v.m4s -i a.m4s -c copy out.mp4` → 含视频+音频的 mp4。
|
|
|
|
|
+
|
|
|
|
|
+## 3. 喂给 Gemini 的方式(实测,经 OpenRouter)
|
|
|
|
|
+
|
|
|
|
|
+通道:`OPENROUTER_API_KEY`(**无直连 GEMINI key**,`.env` 里 GEMINI_API_KEY 为空);`POST {OPENROUTER_BASE_URL}/chat/completions`;model `google/gemini-3-flash-preview`。
|
|
|
|
|
+
|
|
|
|
|
+- **图片**:`{"type":"image_url","image_url":{"url": <图片URL>}}` —— 传 URL,模型抓取。✅
|
|
|
|
|
+- **视频**:**必须 base64 data URL** —— `{"type":"video_url","video_url":{"url":"data:video/mp4;base64,<...>"}}`。
|
|
|
|
|
+ - ⚠️ 实测:把**远程视频 URL 直接**当 video_url(不 base64)→ 返回 HTTP 200 但**无有效结果**(无 choices/usage),等于没处理。OpenRouter 对 Gemini 只接受 **YouTube 远程链接**,其余一律要 base64。
|
|
|
|
|
+- provider 实际落 **Google AI Studio**,按 `video_tokens` 计费(约 25.6k tokens / 4分钟 540p / ≈$0.0157)。
|
|
|
|
|
+
|
|
|
|
|
+## 4. 接入建议(优先级)
|
|
|
|
|
+1. **抖音、快手**:mp4 干净、音视频一体,原生视频提炼直接可用 → 优先接。
|
|
|
|
|
+2. **小红书**:走图文(图片 URL 给 Gemini);视频帖够不着,放弃。
|
|
|
|
|
+3. **B站**:可做,但要「取 `voice_data` 音轨 + ffmpeg 合并 + 下载不跟随重定向」三处特殊处理 → 建议排在抖音/快手之后。
|
|
|
|
|
+
|
|
|
|
|
+> 另:新加坡开发机网络——下载抖音/快手/B站 CDN、调 OpenRouter/Gemini、连 RDS、调 crawler 均通;唯一不通的是内网 GitLab(仅构建期用)。运行期"下载→提炼→落库"可全在云端一条龙。
|