下载系统是 you-get 工具的核心组件,负责处理从远程服务器检索媒体内容并将其保存到磁盘的过程。本页文档介绍了下载功能的架构和工作流程,包括 HTTP 请求处理、进度显示、文件管理和媒体处理。
有关 URL 路由和站点检测,请参阅 URL 路由。有关下载后的媒体处理,请参阅 媒体处理。
you-get 下载系统提供了一个强大的框架,用于从各种网站检索媒体文件。它处理下载过程的所有方面,包括:
来源:src/you_get/common.py985-1123
下载系统包含一个全面的 HTTP 客户端实现,用于处理 Web 请求的各个方面。
来源:src/you_get/common.py451-499 src/you_get/common.py427-449
HTTP 客户端使用 Python 的 urllib 库,但对其进行了扩展,增加了如
| 功能 | 实现 | 目的 |
|---|---|---|
| 重试机制 | urlopen_with_retry() | 处理网络不稳定 |
| 压缩 | ungzip()、undeflate() | 支持压缩响应 |
| 字符解码 | Content-Type 解析 | 处理各种编码 |
| Cookie处理 | 手动 Cookie 管理 | 支持身份验证 |
来源:src/you_get/common.py327-343 src/you_get/common.py466-478
核心下载功能在 url_save() 中实现,该函数处理实际的文件传输并与进度显示集成。
来源:src/you_get/common.py670-833
下载功能的主要特点包括:
下载系统包含多种进度条实现,可在下载过程中提供视觉反馈。
SimpleProgressBar:详细的进度条,显示百分比、大小和速度。PiecesProgressBar:多部分下载的简化进度条。DummyProgressBar:用于静默操作的空操作实现。来源:src/you_get/common.py836-945
进度条提供有关以下方面的实时信息:
主要下载工作流程在 download_urls() 中实现,该函数协调整个过程。
来源:src/you_get/common.py985-1123
下载系统包含强大的错误处理功能,可应对各种网络和服务器问题。
来源:src/you_get/common.py427-449 src/you_get/common.py670-833
下载完成后,系统可以使用 FFmpeg 处理和合并媒体文件。
来源:src/you_get/common.py1067-1123 src/you_get/processor/ffmpeg.py57-238
系统支持合并各种媒体格式:
下载单个视频文件时,下载系统会:
YouTube、Bilibili 等提取器使用了这种模式。
来源:src/you_get/common.py1038-1046
对于分段内容(例如 HLS 流),下载系统会:
这在 Coub 提取器等提取器中有体现。
来源:src/you_get/extractors/coub.py10-40
在下载音乐或音频内容时,下载系统会处理特定的要求:
这在 Netease 提取器中有所展示。
来源:src/you_get/extractors/netease.py24-165
下载系统的行为可以通过几个全局变量进行修改:
| 选项 | 默认 | 描述 |
|---|---|---|
dry_run | 否 | 仅显示 URL,而不下载。 |
force | 否 | 覆盖现有文件。 |
skip_existing_file_size_check | 否 | 跳过文件,不检查大小。 |
player | None | 在外部播放器中启动 URL。 |
cookies | None | 用于身份验证下载的 Cookie。 |
auto_rename | 否 | 自动重命名现有文件。 |
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(e9165e)