# 抖音视频下载工具（中学生也能看懂版）

## 这个工具能做什么？

帮你下载抖音上的视频！支持两种方式：

1. **下载推荐页视频** - 就像你打开抖音看到的首页视频流
2. **下载某个博主的主页视频** - 下载你喜欢的博主发布的视频

## 你需要准备什么？

- 一台 Mac 电脑
- 已经下载了这个项目到本地
- 一点点耐心（需要手动登录抖音）

## 重要提醒

- 不能自动登录抖音（需要你手动扫码或输入密码）
- 不能自动过验证码（遇到验证码需要你自己点）
- 只能下载当前页面上已经显示的视频（不会自动翻页下载全部历史视频）

---

## 第一次使用（安装环境）

打开终端（Terminal），依次输入以下命令：

```bash
# 1. 进入项目文件夹
cd /你的项目目录/douyin-crawler-poc

# 2. 创建虚拟环境（隔离项目依赖）
python3 -m venv .venv

# 3. 激活虚拟环境
source .venv/bin/activate

# 4. 安装需要的库
pip install requests DrissionPage
```

**什么是虚拟环境？** 就像给这个项目建了一个独立的房间，里面放的工具不会影响电脑其他地方。

---

## 使用方法一：下载推荐页视频（首页视频流）

### 步骤 1：启动浏览器并登录抖音

```bash
./.venv/bin/python login_douyin.py
```

运行后会发生什么：
- 会自动打开 Chrome 浏览器
- 浏览器会显示抖音登录页面
- **你需要手动登录**（扫码或输入账号密码）
- 如果遇到验证码，也需要手动完成

### 步骤 2：下载视频

登录成功后，在终端输入：

```bash
# 下载默认数量（50个视频）
./.venv/bin/python Douyin.py

# 或者只下载10个视频
./.venv/bin/python Douyin.py --max-videos 10

# 或者只下载3个视频（测试用）
./.venv/bin/python Douyin.py --max-videos 3
```

**注意：** 下载前请确保浏览器显示的是抖音推荐页（就是打开抖音看到的第一个页面，有很多视频往下滚动的那种）。

---

## 使用方法二：下载某个博主的主页视频

### 步骤 1：同样先启动浏览器并登录

```bash
./.venv/bin/python login_douyin.py
```

### 步骤 2：进入博主主页

在浏览器中：
1. 搜索你想下载的博主（比如某个美食博主）
2. 点击进入他的主页
3. 等待页面加载完成（看到博主的视频列表）

### 步骤 3：下载视频

在终端输入：

```bash
# 下载当前页面显示的视频（默认只下载当前页）
./.venv/bin/python Douyin.py

# 或者下载多页（自动向下滚动加载）
./.venv/bin/python Douyin.py --pages 3
```

**注意：** `--pages 3` 表示滚动加载3页，但抖音可能会限制，不一定能下载到那么多。

---

## 方法三：直接下载单个视频

如果你只想下载某一个具体的视频：

```bash
# 方法 A：通过视频链接下载
./.venv/bin/python Douyin.py "https://www.douyin.com/video/视频ID"

# 方法 B：直接通过视频ID下载
./.venv/bin/python Douyin.py "7619989983668240802"
```

---

## 下载的视频在哪里？

所有下载的视频都会保存在项目文件夹里的 `video/` 文件夹中。

文件名格式：

```
[博主昵称]视频标题-视频ID.mp4
```

例如：
```
[小张一人食]花2XXX在汕头喝白粥...-7633717884061725297.mp4
[相声老司机]春晚不好看？...-7606185972144901412.mp4
```

---

## 常见问题

### Q1：运行时报错 "缺少 requests" 或 "缺少 DrissionPage"

**解决：** 没有安装依赖，运行：
```bash
pip install requests DrissionPage
```

### Q2：提示 "当前页面不是受支持的抖音页面"

**解决：** 
- 如果要用推荐页：确保浏览器显示的是抖音首页（有视频流往下滚动的页面）
- 如果要用博主页：确保你在某个博主的主页

### Q3：下载了0个视频

**解决：**
- 检查是否已登录抖音
- 检查当前页面是否有视频显示
- 等待页面完全加载后再运行下载命令

### Q4：Chrome 浏览器没打开

**解决：**
- 确保你用的是 Mac
- 确保已安装 Google Chrome
- 检查是否有其他 Chrome 正在运行，先关闭再试

### Q5：我想下载更多视频怎么办？

**推荐页：**
```bash
./.venv/bin/python Douyin.py --max-videos 100
```

**博主页：**
```bash
./.venv/bin/python Douyin.py --pages 5
```

---

## 所有可用命令汇总

```bash
# 查看所有参数说明
./.venv/bin/python Douyin.py --help

# 推荐页下载（默认50个）
./.venv/bin/python Douyin.py

# 推荐页下载（指定数量）
./.venv/bin/python Douyin.py --max-videos 20

# 博主页下载（默认当前页）
./.venv/bin/python Douyin.py

# 博主页下载（多页）
./.venv/bin/python Douyin.py --pages 3

# 单视频下载
./.venv/bin/python Douyin.py "https://www.douyin.com/video/xxx"

# 修改等待时间（如果网络慢）
./.venv/bin/python Douyin.py --timeout 20

# 修改保存位置
./.venv/bin/python Douyin.py --output-dir 我的视频
```

---

## 详细图文教程

如果你还是不太明白，可以查看这份更详细的图文教程：

[小白图文操作手册](/Users/wangshaoqing/Desktop/MiaoSi/Study/douyin-crawler-poc/externaldocs/beginner-guide.md)

---

## 技术说明（给感兴趣的同学）

这个工具使用了两步式工作流：

1. **login_douyin.py** - 启动带调试端口的 Chrome，让你手动登录
2. **Douyin.py** - 附着到已登录的浏览器，监听抖音的 API 请求，提取视频地址并下载

为什么需要手动登录？因为抖音有反爬虫机制，自动登录容易被封。

---

## 免责声明

本工具仅供学习交流使用，请勿用于商业用途或侵犯他人权益。下载的视频版权归原博主所有。
