添加tingdao.org yt-dlp扩展器开发的初始分析报告
详细分析了以下内容: - tingdao.org网站技术架构和音频托管方式 - yt-dlp扩展器开发机制和要求 - Metube项目集成方式和配置方法 - 发现的API端点和音频URL结构 - 技术挑战和下一步开发计划 - 风险评估和合规性考虑 为后续深入API分析和扩展器开发奠定基础。
This commit is contained in:
parent
3f333b1626
commit
167a843eb1
1 changed files with 150 additions and 0 deletions
150
初始分析报告.md
Normal file
150
初始分析报告.md
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
# tingdao.org yt-dlp 扩展器开发 - 初始分析报告
|
||||
|
||||
## 项目概述
|
||||
|
||||
本项目旨在为 yt-dlp 开发一个新的扩展器,使其能够支持从 tingdao.org 网站下载音频内容,并集成到 Metube 服务中。
|
||||
|
||||
## 目标网站分析
|
||||
|
||||
### 网站基本信息
|
||||
- **网站URL**: https://www.tingdao.org/
|
||||
- **测试页面**: https://www.tingdao.org/dist/#/Media?device=mobile&id=11869
|
||||
- **网站类型**: 单页应用程序 (SPA)
|
||||
- **内容类型**: 基督教音频内容网站
|
||||
- **音频主题**: 2018年10月 柏训师生会:神永远的旨意-基督与教会
|
||||
|
||||
### 技术架构分析
|
||||
- **前端框架**: 基于Hash路由的SPA应用
|
||||
- **音频托管**: 腾讯云VOD (Video on Demand) 服务
|
||||
- **URL模式**: `#/Media?device=mobile&id={媒体ID}`
|
||||
|
||||
### 音频源分析
|
||||
测试页面中发现的音频信息:
|
||||
- **当前音频URL**: `http://1256958968.vod2.myqcloud.com/20b3381avodgzp1256958968/4732b8e35285890800479422041/4fJXeW9XQvoA.mp3?t=6913eeca&us=895305ba2a&sign=4606753c5c5784116031538a27c6960d`
|
||||
- **音频格式**: MP3
|
||||
- **时长**: 4552.248889 秒 (约76分钟)
|
||||
- **播放列表**: 共8集音频内容
|
||||
|
||||
### API端点发现
|
||||
通过网络监控发现的API端点:
|
||||
- **端点URL**: `https://www.tingdao.org/Record/is_voi`
|
||||
- **请求方法**: POST
|
||||
- **当前状态**: 需要参数,返回"参数不完整"错误
|
||||
|
||||
### 页面结构分析
|
||||
- **播放控制**: 包含播放/暂停、进度条、音量控制
|
||||
- **时间控制**: 支持 ±15秒 快进/快退
|
||||
- **播放列表**: 显示8集完整系列
|
||||
- **媒体元素**: 页面包含1个audio元素,支持实时播放
|
||||
|
||||
## yt-dlp 扩展器开发机制研究
|
||||
|
||||
### 核心概念
|
||||
- **InfoExtractor**: 所有扩展器的基类
|
||||
- **_VALID_URL**: 正则表达式,定义支持的URL模式
|
||||
- **_real_extract**: 核心方法,负责提取媒体信息
|
||||
|
||||
### 开发要求
|
||||
1. 继承 `InfoExtractor` 类
|
||||
2. 定义 `IE_NAME` 扩展器名称
|
||||
3. 设置 `_VALID_URL` 正则模式
|
||||
4. 实现 `_real_extract(self, url)` 方法
|
||||
5. 返回标准化的媒体信息字典
|
||||
|
||||
### 扩展器文件位置
|
||||
- **标准位置**: `yt_dlp/extractor/` 目录
|
||||
- **文件命名**: 通常以网站名命名 (如 `tingdao.py`)
|
||||
- **注册方式**: 添加到 `_extractors.py` 文件
|
||||
|
||||
## Metube 集成分析
|
||||
|
||||
### 项目架构理解
|
||||
- **后端**: Python + aiohttp + Socket.IO
|
||||
- **下载引擎**: `app/ytdl.py` - 管理下载队列和yt-dlp集成
|
||||
- **主入口**: `app/main.py` - Web服务器和API路由
|
||||
- **前端**: Angular应用,位于 `ui/` 目录
|
||||
|
||||
### yt-dlp 集成方式
|
||||
- **配置方法**: 通过 `YTDL_OPTIONS` 环境变量或配置文件
|
||||
- **扩展加载**: yt-dlp 自动加载安装的扩展器
|
||||
- **无需修改**: Metube 无需代码修改即可支持新扩展器
|
||||
|
||||
### 配置选项
|
||||
```python
|
||||
# 在 app/main.py 中的配置加载
|
||||
YTDL_OPTIONS = json.loads(os.environ.get('YTDL_OPTIONS', '{}'))
|
||||
```
|
||||
|
||||
## 当前挑战和待解决问题
|
||||
|
||||
### 1. API结构不明确
|
||||
- 需要深入分析获取音频列表的完整API
|
||||
- 了解参数结构和认证机制
|
||||
- 确定如何获取播放列表中所有音频的信息
|
||||
|
||||
### 2. 音频URL获取机制
|
||||
- 当前音频URL包含签名参数 (`?t=&us=&sign=`)
|
||||
- 需要了解签名生成机制
|
||||
- 确定URL的有效期和刷新机制
|
||||
|
||||
### 3. 播放列表支持范围
|
||||
- 单个音频下载 vs 完整播放列表下载
|
||||
- 如何处理系列音频的批量下载
|
||||
- 是否支持网站全站音频搜索
|
||||
|
||||
## 下一步计划
|
||||
|
||||
### 阶段1: 深入API分析
|
||||
1. 使用浏览器开发者工具深入分析页面JavaScript
|
||||
2. 逆向工程API调用方式和参数结构
|
||||
3. 理解音频URL生成和认证机制
|
||||
4. 测试不同媒体ID的API响应
|
||||
|
||||
### 阶段2: 扩展器开发
|
||||
1. 基于API分析结果设计扩展器架构
|
||||
2. 实现URL模式匹配和参数提取
|
||||
3. 开发音频信息提取逻辑
|
||||
4. 支持单个和播放列表下载
|
||||
|
||||
### 阶段3: 集成测试
|
||||
1. 在本地环境集成新扩展器
|
||||
2. 配置Metube使用本地yt-dlp
|
||||
3. 使用浏览器进行功能测试
|
||||
4. 验证下载流程和错误处理
|
||||
|
||||
### 阶段4: 优化完善
|
||||
1. 添加错误处理和重试机制
|
||||
2. 优化性能和用户体验
|
||||
3. 考虑反爬虫对策
|
||||
4. 编写测试用例和文档
|
||||
|
||||
## 技术决策点
|
||||
|
||||
### 待决策问题
|
||||
1. **获取范围**: 单个音频 vs 播放列表 vs 全站下载
|
||||
2. **API复杂度**: 是否需要处理登录认证
|
||||
3. **反爬虫策略**: 用户代理模拟、请求延迟等
|
||||
4. **部署方式**: 本地扩展 vs fork yt-dlp 项目
|
||||
|
||||
### 推荐方案
|
||||
- **优先级**: 先支持单个音频,再扩展到播放列表
|
||||
- **集成方式**: 本地yt-dlp扩展器,便于测试和调试
|
||||
- **开发策略**: 增量开发,逐步完善功能
|
||||
|
||||
## 风险评估
|
||||
|
||||
### 技术风险
|
||||
- API可能有复杂的认证机制
|
||||
- 音频URL签名可能难以逆向
|
||||
- 网站可能有反爬虫保护
|
||||
|
||||
### 法律合规
|
||||
- 确保仅用于合法的个人使用
|
||||
- 遵守网站的使用条款
|
||||
- 不用于商业用途或大规模爬取
|
||||
|
||||
---
|
||||
|
||||
**报告生成时间**: 2025-09-23
|
||||
**分析范围**: 初步技术可行性分析
|
||||
**下一步**: 深入API结构分析
|
||||
Loading…
Reference in a new issue