图集中实况图文件名序号与静态图不对应

Author: 13572055342Created Sep 11, 2026Updated Sep 11, 2026

Bug: 图集中实况图文件名序号与静态图不对应

版本: v2.0.0

问题描述

当图集(Gallery)中部分图片是实况图(Live Photo)、部分不是时,下载的实况视频文件名序号与对应的静态图片序号错位,无法直接从文件名建立关联。

复现步骤

  1. 准备一个图集,包含 3 张图片:
    • 第 1 张:实况图(有 video.play_addr
    • 第 2 张:普通静态图(无 video 字段)
    • 第 3 张:实况图(有 video.play_addr
  2. 运行下载

实际行为

下载后的文件:

{title}_{aweme_id}/
  ├── {title}_{aweme_id}_1.webp        ← 第1张静态图
  ├── {title}_{aweme_id}_live_1.mp4     ← 第1张实况视频(序号巧合匹配)
  ├── {title}_{aweme_id}_2.webp        ← 第2张静态图
  ├── {title}_{aweme_id}_3.webp        ← 第3张静态图
  └── {title}_{aweme_id}_live_2.mp4     ← 第3张实况视频 ❌ 序号 2 ≠ 图片序号 3

_live_2.mp4 实际对应第 3 张图,但文件名上没有任何信息表明它与 _3.webp 关联。

期望行为

实况视频的文件名序号应与对应图片的序号一致:

{title}_{aweme_id}/
  ├── {title}_{aweme_id}_1.webp
  ├── {title}_{aweme_id}_live_1.mp4     ← 对应第1张
  ├── {title}_{aweme_id}_2.webp
  ├── {title}_{aweme_id}_3.webp
  └── {title}_{aweme_id}_live_3.mp4     ← 对应第3张 ✅

根因分析

_collect_image_live_urls() 返回的是按实况图出现顺序从 1 开始计数的索引,而非原图在图集中的位置索引。下载循环使用这个独立索引命名,导致与静态图序号错位。

涉及代码:

建议修复方向

  1. _collect_image_live_urls() 返回值改为 List[Tuple[int, str]],携带原图索引
  2. 下载循环改为 for img_idx, live_url in image_live_urls:,用 img_idx 替代独立序号

直接复制粘贴到 GitHub Issues 页面即可。需要我帮你修这个 Bug 吗?

Source: jiji262/douyin-downloader