. 动漫视频下载器 (网站克隆工具/)
业务功能:
在樱花动漫网站搜索动漫资源
获取动漫简介、剧集列表
解析M3U8播放地址,多线程下载TS分片
自动合并为MP4视频文件
技术特点:
Base64/Hex URL解密算法
多线程并发下载(可配置线程数)
集成FFmpeg视频合并
进度条实时显示下载状态
┌─────────────────────────────┐
│ 用户交互层 │ ← 搜索输入、动漫选择、剧集选择
├─────────────────────────────┤
│ 业务逻辑层 │ ← 搜索、解析、验证、下载控制
├─────────────────────────────┤
│ 数据解析层 │ ← HTML解析、JSON解析、URL解密
├─────────────────────────────┤
│ 网络传输层 │ ← HTTP请求、多线程下载、流传输
├─────────────────────────────┤
│ 文件处理层 │ ← 临时文件管理、视频合并、清理
└─────────────────────────────┘
main()
├── search_anime() 搜索动漫
├── select_anime() 用户选择动漫
├── get_episodes_list() 获取剧集列表
├── select_episodes() 用户选择剧集
├── get_m3u8_url() 解析播放地址
└── M3U8Downloader.download_episode() 下载合并
依赖管理模块(check_and_install_dependencies())
自动检测依赖:requests, beautifulsoup4, tqdm
智能安装:通过 importlib 检查 + subprocess 自动安装
验证机制:安装后二次验证确保成功
2. URL解密模块(decrypt_url())
python
# 三层解密策略:
# 1. Base64解码 → 检查http开头
# 2. Hex解码 → 检查http开头
# 3. 失败返回None
正则匹配:^[A-Za-z0-9+/]{20,}={0,2}$ (Base64)
正则匹配:^[0-9a-fA-F]{40,}$ (Hex)
播放验证(check_m3u8_url())
检查状态码200系列
验证内容包含 #EXTM3U 或 #EXTINF
检测重定向的真实播放地址
4. 动漫信息获取模块
(1) 搜索功能(search_anime())
多线程下载优化
线程数:默认3,可配置为13(num_threads=13)
分片命名:seg_{segment_id:05d}.ts(5位补零)
流式下载:chunk_size=8192 字节块