From 756feb2bea72e4392da2847b5f3d3fd10f0d95cf Mon Sep 17 00:00:00 2001 From: LHY0125 <3364451258@qq.com> Date: Tue, 10 Feb 2026 17:06:31 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0README=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E4=BB=A5=E5=8F=8D=E6=98=A0=E9=87=8D=E6=9E=84=E5=90=8E?= =?UTF-8?q?=E7=9A=84=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新项目标题为“抖音/B站批量下载工具 (Video Downloader)” - 重写简介,强调模块化设计和多线程并发 - 新增“项目结构”章节,展示重构后的模块化目录 - 更新“快速开始”章节,区分源码运行和安装包使用 - 新增“打包指南 (开发者)”章节,详细说明Nuitka编译和依赖补全步骤 - 新增“架构说明”章节,解释UI层、控制层和数据层的职责 - 重组并更新“功能特点”与“注意事项”列表 --- README.md | 123 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 78 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index 8936251..0ffbe85 100644 --- a/README.md +++ b/README.md @@ -1,67 +1,100 @@ -# 抖音/B站批量下载工具 (GUI版) +# 抖音/B站批量下载工具 (Video Downloader) -## 简介 - -这是一个基于 Python 的抖音/B站视频批量下载工具。带有图形用户界面 (GUI),操作简单。它使用 `DrissionPage` 来自动化控制 Edge 浏览器获取数据,并支持下载视频和图文作品。 +这是一个基于 Python 的抖音/B站视频批量下载工具,采用模块化设计,提供图形用户界面 (GUI)。它利用 `DrissionPage` 自动化控制 Edge 浏览器获取数据,支持多线程并发下载视频和图文内容。 > **项目介绍视频**:[点击观看](https://www.douyin.com/user/self?modal_id=7602291788182721777&showTab=record) -## 功能特点 +## ✨ 功能特点 -- **图形界面**:操作直观,无需命令行。 -- **多平台支持**:支持**抖音**和**B站 (Bilibili)** 视频下载。 -- **批量下载**:支持指定下载数量。 -- **多类型支持**:自动识别并下载视频文件 (.mp4) 和图文图集 (文件夹保存)。 -- **自动命名**:文件按发布日期 `YYYY_MM_DD` 命名,同一天发布的多个作品会自动添加序号。 -- **高性能**:采用多线程并发下载,速度更快。 -- **智能识别**:自动检测 Edge 浏览器路径,并支持手动选择。 -- **实时日志**:界面显示运行日志,实时掌握下载进度。 +- **多平台支持**:支持 **抖音** 和 **B站 (Bilibili)** 视频/图文下载。 +- **图形化界面**:基于 Tkinter 的简洁 GUI,操作直观。 +- **批量处理**:支持指定数量批量爬取。 +- **自动归档**:按发布日期 `YYYY_MM_DD` 自动命名文件,同一天发布的作品自动添加序号。 +- **高性能**:多线程并发下载,大幅提升速度。 +- **智能配置**:自动检测 Edge 浏览器路径,支持手动指定。 +- **标准安装包**:支持生成标准的 Windows 安装程序 (Inno Setup)。 -## 环境要求 +## 📂 项目结构 -- Windows 操作系统 -- Python 3.x -- **Microsoft Edge 浏览器** (必需) +项目已进行重构,采用模块化架构,源码位于 `src` 目录下: -## 依赖库 +```text +Video Downloader/ +├── video_downloader.py # 程序入口 (Entry Point) +├── src/ +│ ├── ui/ # 界面模块 (App类, 负责GUI逻辑) +│ ├── tasks/ # 平台任务模块 (包含Bilibili和Douyin的具体爬虫逻辑) +│ ├── downloader.py # 通用下载器 (封装Requests, 支持流式下载和重试) +│ └── utils.py # 工具函数 (如Edge路径查找) +├── ico/ # 图标资源文件夹 +├── setup_nuitka.iss # Inno Setup 打包脚本 +└── README.md # 项目说明文档 +``` -请确保安装以下 Python 库: +## 🚀 快速开始 +### 方式一:直接运行源码 + +**环境要求**: +- Windows 10/11 +- Python 3.8+ +- Microsoft Edge 浏览器 (必需) + +**安装依赖**: ```bash pip install requests DrissionPage ``` -*(tkinter 通常随 Python 安装自带)* +**运行程序**: +```bash +python video_downloader.py +``` -## 使用说明 +### 方式二:使用安装包 -1. **运行程序**: - 在终端中运行脚本: +如果你是普通用户,可以直接运行 `Output` 目录下的安装程序(如果已打包),或者联系开发者获取。 - ```bash - python video_downloader.py - ``` +## 📦 打包指南 (开发者) -2. **填写信息**: - - **作者主页链接**:粘贴你要下载的抖音或B站博主主页链接。 - - **爬取视频个数**:输入要下载的作品数量。 - - **保存路径**:点击“选择文件夹”选择保存位置。 - - **浏览器路径**:程序会自动查找 Edge 浏览器;如果找不到,请点击“选择文件”手动指定 `msedge.exe` 的路径。 - - **下载平台**:根据链接类型选择“抖音”或“B站”。 -3. **开始下载**: - 点击“开始下载”按钮。程序将自动启动 Edge 浏览器并开始扫描。 - > **注意**:程序运行时会弹出 Edge 浏览器窗口,请**不要关闭**它,程序需要通过它来获取数据。 -4. **完成**: - 下载完成后会有弹窗提示,并可在日志窗口看到详细结果。 +本项目采用 **Nuitka** 编译核心程序,并结合 **Inno Setup** 制作最终的 Windows 安装包。 -## 开发者说明 +### 1. Nuitka 编译 -- **架构设计**:采用 GUI (Tkinter) + 控制层 (Thread) + 数据层 (DrissionPage/Requests) 分层架构。 -- **多线程**:使用 `concurrent.futures.ThreadPoolExecutor` 实现并发下载。 -- **打包方式**:支持使用 Nuitka 打包,配合 Inno Setup 生成安装包。 +使用以下命令将 Python 脚本编译为独立的可执行文件(文件夹模式): -## 注意事项 +```bash +# 确保使用正确的 Python 环境 (如 Anaconda env) +# 注意替换 --windows-icon-from-ico 的路径为你实际的图标路径 +python -m nuitka --standalone --mingw64 --show-progress --show-memory --enable-plugin=tk-inter --output-dir=build_nuitka --windows-disable-console --windows-icon-from-ico="ico\video_downloader.ico" video_downloader.py +``` -- 本工具依赖本地 Edge 浏览器,请确保路径正确。 -- 爬取过程中请保持网络畅通。 -- 本工具仅供学习交流使用,请勿用于非法用途。 +### 2. 依赖补全 (关键步骤) + +Nuitka 自动分析有时可能遗漏部分 DLL,导致程序无法运行或报错 `ImportError` / `ctypes` 错误。 +**编译完成后,请务必手动检查并复制以下文件到 `build_nuitka/video_downloader.dist` 目录:** + +1. **Tcl/Tk 库**:`tcl86t.dll`, `tk86t.dll` +2. **基础依赖库**:`Library/bin` 目录下的所有 DLL 文件 (如 `zlib.dll`, `libcrypto-*.dll`, `sqlite3.dll` 等) + +### 3. Inno Setup 制作安装包 + +1. 下载并安装 **Inno Setup 6**。 +2. 打开项目根目录下的 `setup_nuitka.iss` 文件。 +3. 检查脚本中的路径配置是否正确(如 `Source` 路径指向你的 `build_nuitka\video_downloader.dist`)。 +4. 点击工具栏的 **Compile** 按钮。 +5. 编译成功后,生成的安装包将位于 `Output` 文件夹中。 + +## 🛠️ 架构说明 + +- **UI 层 (`src/ui`)**:使用 `tkinter` 构建,负责接收用户输入、显示日志和进度。采用 `root.after` 机制确保线程安全地更新 UI。 +- **控制层 (`src/tasks`)**: + - `bilibili.py` / `douyin.py`:封装了针对特定平台的业务逻辑。 + - 使用 `DrissionPage` 监听浏览器网络流量,解析视频/音频地址。 + - 使用 `concurrent.futures.ThreadPoolExecutor` 管理下载线程池。 +- **数据层 (`src/downloader.py`)**:纯粹的下载执行器,封装了 `requests`,支持 Referer 防盗链处理、流式写入和错误重试。 + +## ⚠️ 注意事项 + +- **浏览器窗口**:程序运行时会启动 Edge 浏览器窗口进行数据采集,**请勿手动关闭该窗口**,否则任务会中断。 +- **网络环境**:爬取过程中请保持网络畅通。 +- **合规性**:本工具仅供学习交流使用,请勿用于非法用途。请尊重版权,不要传播未授权的内容。