所有抖音下载都平铺在本目录,不再按视频分子目录。同一条素材只保留最高像素的那一版。 下载页:http://192.168.31.76:8899/56-%E6%8A%96%E9%9F%B3%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD/
NN_作者_标题_宽x高.mp4 ← 视频正片
NN_作者_标题_图集NN.png ← 图文/图集:每张图一个文件
NN_作者_标题_宽x高_封面.webp ← 官方封面(视频才有)
NN_作者_标题_*_元数据.json ← 完整元数据 + 全部清晰度档位 / 图片清单
NN_作者_标题_*_预览-*.jpg ← 抽帧(视频才有)
文件名长度:标题按「去掉 #、标点转空格 → 按空格分词 → 连字符拼接 → 总长 ≤40 字符且不切断词」截断,所以不会出现超长文件名(05 的文案有 100+ 字,截出来是 Latent续写-内存不堆积-H3分段长视频生成工作流V6)。
NN 是下载序号,新内容自动取目录内已有序号 +1(当前已有 01–05,下一条是 06)。同一条内容的所有附带文件共用同一前缀,所以平铺也不会混。
# 分享短链、整段分享文案都能吃
node ~/Downloads/douyin-hq.js 'https://v.douyin.com/xxxxxxxx/'
# 可选参数
# --tag=04_自定义名 手动指定文件名前缀
# --hudir=<目录> 换输出目录
# --work=<目录> 换工作目录(默认 /tmp/dy/hq)
# --wait=<秒> 等扫码时长(已登录则跳过)
q100.png 无损档下载(见下文)。~/Downloads/.douyin-profile,扫过一次码之后就不用再扫。bash ~/Downloads/douyin-dl.sh '<分享链接>'(只能拿 1080p 无水印)。aweme/v1/web/aweme/detail/ 响应拿到完整 bit_rate 档位表,再按「分辨率 → mp4 优先 → 码率」排序取最高档。| # | 作者 | 标题 | 分辨率/规格 | 编码 | 帧率 | 时长 | 大小 |
|---|---|---|---|---|---|---|---|
| 01 | AI 观模者 | Qwen3.8-27B-GSQ-RCO 测评:16G卡最佳选择 | 2560×1440 | HEVC | 30 | 16:45.6 | 44.6 MiB |
| 02 | L | 去年夏天 · 白膜素材 | 1080×1920 | H.264 | 24 | 21.5 s | 1.59 MiB |
| 03 | L | 复仇摇 · AI 素材 | 720×1280 | H.264 | 24 | 14.08 s | 1.18 MiB |
| 04 | Feeling | 落日cp · 跟个风 | 图文 2 图(1280×664 / 1280×720) | PNG 无损 | — | — | 0.53 MiB |
| 05 | Theodore | Latent续写 · H3 分段长视频生成工作流 V6 | 1920×1080 | H.264 | 30 | 10:44.2 | 35.7 MiB |
- 01 原有两个版本(免登录 1920×1080 H.264 / 登录 2560×1440 HEVC),已按「只留最高像素」删掉 1080p 那版。
- 02 和 03 都是源分辨率即天花板,没有更高档存在。
- 02 和 03 是同一个账号(昵称
L,unique_id90624020045)。签名:"首发原创高质量白模风格视频…"。这个号专做「白模/彩模 + 绿幕 + 舞蹈」AI 素材。03 文案里的@晚棠不吃榴莲是原舞作者。- 04 是图文(图集)不是视频:
aweme_type=68、is_slides=1。分享短链会跳到iesdouyin.com/share/slides/<id>/(不是/share/video/)。BGM 是《心云(剪辑版)》/ 烟嗓表哥(33 s),接口没给可下载的音频地址,所以只存了歌名到元数据。
dy-437JMeZfA6c-1080p.mp4(54.9 MB,1024×576,11:12,2026-09-27 01:12 出现)不是本流程产出的——命名风格不匹配(本流程是 NN_作者_标题_...),推测是另一次会话或别的下载工具放进来的。内容是「手持手机视频通话」画面,与本目录其它素材无关。未做改动,等确认后再归位或删除。
抖音图文(aweme_type=68)的 images[].url_list 只给 ~tplv-dy-aweme-images:q75.webp(q75 有损、11 KB), 而 download_url_list("保存到相册"那条)带水印(~tplv-dy-water-v2:...)。
破法:把签名查询串整个丢掉,只留对象 key,换到不校验签名的 pN.douyinpic.com 主机上,模板就能随便改:
原链(q75 有损、11 KB) https://p3-pc-sign.douyinpic.com/tos-cn-p-0015/<key>~tplv-dy-aweme-images:q75.webp?lk3s=...&x-signature=...
改成(q100 无损、172 KB)https://p3.douyinpic.com/tos-cn-p-0015/<key>~tplv-dy-aweme-images:q100.png
实测模板矩阵(同一张图):
| 模板 | HTTP | 大小 | 格式 |
|---|---|---|---|
:q75.webp(接口给的) | 200 | 11 KB | webp 1280×664 |
:q85.webp / :q90.webp | 200 | 15 / 20 KB | webp |
:q100.webp | 200 | 38 KB | webp |
:q75.jpeg / :q100.jpeg / :q100.image | 200 | 20 KB | jpeg(jpeg 被钉死在 q75) |
:q100.png | 200 | 172 KB | PNG rgb24(无损,取这个) |
:origin.* / 无模板 / .webp / :q100.heic | 400 / 空 | — | 不允许 |
脚本已内置:每张图按 q100.png → q100.webp → 接口原链 依次降级。
当时的实测结论(对比图已删,数据留档):
| 指标 | 结果 |
|---|---|
| 同尺寸高频能量(拉普拉斯 YAVG) | 标题 +20%、正文 +31%、小字表 +38%,1440p 全胜 |
| 方向性 SSIM/PSNR | 1080p vs 1440p↓1080p → SSIM 0.9769 / PSNR 37.04 dB;1440p vs 1080p↑1440p → 0.9707 / 34.08 dB。前者更接近 → 1440p 含 1080p 放大不回来的真实细节 |
但要记住代价与风险:
adapt_lowest_1440_1(1440 阶梯码率最低档,0.0029 bit/像素/帧);被删的 1080p 是 normal_1080_0(0.0080 bit/像素/帧,2.7 倍)。1440p 靠像素多取胜,肉眼看差距不大。bash ~/Downloads/douyin-dl.sh 'https://v.douyin.com/QOmcej9H8_U/' 随时能重新拉回那条 1080p。01(源 2560×1440,共 21 档) — 关键几档:
1920x1080 mp4 normal_1080_0 550622 ← 已删除的那版(仅 1080p)
1920x1080 mp4 1080_1_1 543330
1280x720 mp4 normal_720_0 469346
2560x1440 mp4 adapt_lowest_1440_1 371595 ← 保留的就是这条
02(源 1080×1920,共 10 档) — 源分辨率即天花板:
1080x1920 mp4 normal_1080_0 618627 ← 已选
576x1024 mp4 normal_540_0 634565 ← 注意:码率数字比 1080p 还高,但像素少,不选
720x1280 mp4 normal_720_0 539795
...(其余 7 档更低)
03(源 720×1280,共 7 档) — 源分辨率即天花板:
720x1280 mp4 normal_720_0 702527 ← 已选(同时是最高分辨率 + 最高码率)
720x1280 mp4 low_720_0 619102
576x1024 mp4 low_540_0 537274
...(其余 4 档更低)
通用规律:抖音会给低分辨率单独做高码率档(02 的 576×1024 就是),排序时先看分辨率再看码率——分辨率后期补不回来,码率差一点可以。
yt-dlp 下不了抖音。 它走 www.douyin.com/aweme/v1/web/aweme/detail/,报 Fresh cookies (not necessarily logged in) are needed;补 ttwid 无效。同接口纯 curl 访问 403 Blocked by ArgusSecurityPlugin Uifid Not Found;老的 web/api/v2/aweme/iteminfo/ 返回 status_code 11110 encrypt_data_miss。www.iesdouyin.com/share/video/<id>/ 的 window._ROUTER_DATA)。必须:Android/移动 UA(iPhone UA 拿到空壳页)+ 带 ttwid 且请求两次 + 剥掉代理环境变量。它只给 playwm(带 logo)/play(无水印) 直链,档位最多 1080p。aweme/detail 返回 HTTP 200 但 body 长度 = 0(风控空响应)——不是 4xx,极容易误判成接口坏掉。multi/aweme/detail/ 未登录也能返回(那是推荐流,不含目标视频)。用它当探针确认了 1440p 档位存在,才决定去登录。normal_1080_0,与免登录下到的字节数完全一致。登录的唯一收益是多了那个 1440p 档。download_addr("保存本地"那条)是 720p 且带 logo(lr=aweme_search_suffix),比 play_addr 差,不要用。../37-抖音视频去片尾/。/share/video/,而是跳 /share/slides/<id>/(is_slides=1&schema_type=37)。解析 id 的正则必须包含 slides,否则报「需要抖音分享链接」。另外 iesdouyin.com/share/slides/<id>/ 页面里没有 window._ROUTER_DATA,必须走 web 端 aweme/detail(登录态)才拿得到图片清单。ffmpeg -f null - 整条全解码,零 error / warningffprobe 校验为合法 PNG(rgb24),尺寸 1280×664 / 1280×720play_addr 系档位(playwm 才带抖音 logo);图片不用 download_url_list(那是有水印的"保存到相册"档)sha256.txt(含图片)7687665215751736614,发布 2026-09-21,点赞 438 / 分享 71 / 收藏 4677681113602158603877,发布 2026-06-04,点赞 24255 / 分享 5252 / 收藏 45027675399295693164153,发布 2026-06-25,点赞 114 / 分享 124 / 收藏 887688528843355738515,发布 2026-09-23,点赞 8919 / 分享 4473 / 收藏 2016 / 评论 554(图文)7676102310153489683,发布 2026-08-20,点赞 721 / 分享 149 / 收藏 711 / 评论 124