# m3u8_download **Repository Path**: zkq_java/m3u8_download ## Basic Information - **Project Name**: m3u8_download - **Description**: 视频下载器,支持m3u8和mp4格式 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-18 - **Last Updated**: 2026-04-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # M3U8 下载器 一个功能强大的 M3U8 和 MP4 视频下载工具,支持断点续传、加密视频解密、批量下载等功能。 ## 功能特点 - 📥 支持 M3U8 播放列表和 MP4 直接下载 - 🔒 支持 AES-128 加密视频解密 - ⏸️ 支持下载暂停/继续/取消操作 - 🔄 支持断点续传,网络中断后自动恢复 - 📋 支持批量 URL 下载 - 🔍 支持网页链接抓取 - 🎨 美观的 PyQt6 图形界面 - 📊 实时显示下载进度和速度 - 📁 自动管理下载缓存和输出目录 - 🔧 可配置的下载参数 ## 安装步骤 ### 1. 克隆项目 ```bash git clone cd m3u8_download ``` ### 2. 安装依赖 ```bash pip3 install -r requirements.txt # 或直接安装依赖 pip3 install PyQt6 aiohttp playwright pycryptodome lxml ``` ### 3. 运行应用 ```bash python3 src/main.py ``` ## 使用方法 ### 直接下载 1. 在「直接下载」面板中输入 M3U8 或 MP4 链接 2. 选择下载模式(直接下载或批量下载) 3. 点击「开始下载」按钮 ### 批量抓取 1. 在「批量抓取」面板中输入包含视频链接的网页 URL 2. 选择抓取模式(自动抓取或自定义 XPath) 3. 点击「开始抓取」按钮 4. 选择要下载的视频链接 ### 任务管理 - **暂停/继续**:点击正在下载任务的「暂停」/「继续」按钮 - **取消**:点击任务的「取消」按钮 - **删除**:点击已完成/失败/取消任务的「删除」按钮 - **重试**:点击失败任务的「重试」按钮 - **清空已完成**:点击任务列表顶部的「清空已完成」按钮 ## 项目结构 ``` m3u8_download/ ├── src/ # 源代码 │ ├── core/ # 核心功能模块 │ │ ├── downloader.py # 下载调度器 │ │ ├── m3u8_parser.py # M3U8 解析器 │ │ ├── ts_fetcher.py # TS 分片下载器 │ │ ├── decryptor.py # 解密模块 │ │ ├── merger.py # 文件合并模块 │ │ ├── cache_manager.py # 缓存管理 │ │ └── config_manager.py # 配置管理 │ ├── ui/ # UI 界面 │ │ ├── main_window.py # 主窗口 │ │ ├── direct_download_panel.py # 直接下载面板 │ │ ├── crawl_panel.py # 批量抓取面板 │ │ ├── task_list_widget.py # 任务列表 │ │ ├── settings_panel.py # 设置面板 │ │ └── log_panel.py # 日志面板 │ ├── models.py # 数据模型 │ ├── exceptions.py # 异常处理 │ └── main.py # 应用入口 ├── config/ # 配置文件 │ └── config.json # 应用配置 ├── output/ # 下载输出目录 ├── cache/ # 缓存目录 ├── logs/ # 日志目录 ├── tests/ # 测试文件 ├── .gitignore # Git 忽略文件 ├── pyproject.toml # 项目配置 └── README.md # 项目说明 ``` ## 配置说明 配置文件位于 `config/config.json`,包含以下配置项: - `output_dir`:下载输出目录 - `max_concurrent_tasks`:最大并发任务数 - `max_retries`:网络错误重试次数 - `timeout`:网络请求超时时间(秒) ## 依赖项 - Python 3.7+ - PyQt6:图形界面 - aiohttp:异步网络请求 - playwright:网页自动化(用于抓取) - pycryptodome:AES 解密 - lxml:HTML 解析 ## 注意事项 1. 请确保网络连接稳定,特别是下载大型视频时 2. 下载加密视频时,确保密钥可以正常获取 3. 批量下载时,注意不要设置过多的并发任务,以免被服务器限制 4. 如有下载失败,可以尝试点击「重试」按钮 ## 常见问题 ### Q: 下载时提示「解密失败」 A: 可能是密钥获取失败或加密参数不正确,请检查网络连接和 M3U8 链接的有效性。 ### Q: 下载速度很慢 A: 请检查网络连接,或尝试调整并发任务数。 ### Q: 任务列表显示异常 A: 请尝试重启应用,或检查配置文件是否正确。 ## 许可证 MIT License ## 更新日志 - **v1.0.0**:初始版本,支持 M3U8 和 MP4 下载 - **v1.1.0**:添加批量下载和网页抓取功能 - **v1.2.0**:优化 UI 性能,修复卡顿问题 - **v1.3.0**:增强解密功能,支持更多加密格式