logo
0
0
WeChat Login
The repository has been archived and is now in read-only mode.
Ma Yukai<aliverccforward@outlook.com>
Update README.md

Video Downloader

Python Version License Code Style: Black

一个功能强大的命令行视频下载工具,专为 m3u8 视频流设计。支持 API 抓取、定时任务、数据库管理、重复内容检测和云存储同步。


使用须知

  • 需要手动获取授权,请自行抓包或者通过接口获取
  • 未购买视频无法下载
  • 视频下载出现问题请质询官方

✨ 功能特性

  • 多源获取: 从 Web API、本地 JSON 文件中解析视频源。
  • 强大的下载器:
    • 使用ffmpeg 合并 m3u8 视频流。
    • 支持多线程并行下载,提升下载速度。
    • 自动处理音视频分离与合并。
    • 内置下载失败自动重试机制。
  • 数据库管理:
    • 使用 SQLite 持久化存储视频元数据。
    • 智能检测重复内容,避免重复下载。
  • 定时任务:
    • 内置灵活的调度器,可定时自动抓取和下载新视频。
  • 灵活配置:
    • 所有核心参数(如 API 地址、下载路径、并发数、定时任务频率等)均可通过 config.py 文件进行配置。
  • 交互式命令行:
    • 提供一个清晰、易用的菜单驱动命令行界面(CLI),方便用户执行各种操作。

📦 安装指南

1. 环境准备

  • Python: 确保您的系统已安装 Python 3.8 或更高版本。
  • FFmpeg: 本工具依赖 ffmpeg 进行视频流的下载和合并。请确保 ffmpeg 已安装并在系统的 PATH 环境变量中。

2. 安装步骤

  1. 克隆项目

    git clone <your-repository-url> cd video-downloader
  2. 安装依赖 (推荐使用 Poetry) 项目使用 Poetry 进行依赖管理。

    poetry install

    或者,如果您想使用 pip,可以先从 pyproject.toml 导出 requirements.txt 文件:

    poetry export -f requirements.txt --output requirements.txt pip install -r requirements.txt
  3. 配置 (可选)

    • 云存储: 如果需要使用云同步功能,请在 video_downloader/data/ 目录下创建 cloud_config.json 文件,并填入您的云存储配置。
    • 核心配置: 您可以根据需要调整 video_downloader/core/config.py 文件中的参数。

🚀 快速开始

直接运行 cli_main.py 即可启动交互式命令行程序。

python cli_main.py

或者

python simple_m3u8.py

程序启动后,您会看到一个功能菜单,可以根据提示选择操作.

📁 项目结构(已变更)

cli_main.py # 命令行应用主入口 pyproject.toml # 项目依赖和配置 (Poetry) video_downloader/ ├── api/ # API 客户端模块 ├── cloud/ # 云存储同步模块 ├── core/ # 核心应用逻辑 (CLI App, 配置) ├── database/ # 数据库模型与管理 ├── download/ # 下载管理器 ├── scheduler/ # 定时任务调度器 ├── ui/ # 命令行用户界面 └── utils/ # 工具函数 (如增强型JSON解析器) downloads/ # 默认视频下载目录 data/ # 数据文件目录 (数据库、配置文件等)

⚙️ 配置

项目的主要配置项位于 video_downloader/core/config.py 文件中。您可以在此文件中修改:

  • API 的 URL 和参数。
  • 下载目录、日志目录等文件路径。
  • 并行下载数量、重试次数等下载参数。
  • 定时任务的执行频率。
  • 云存储功能的开关。

🗃️ 数据库模型(请参照simple_m3u8中的数据类)

项目的核心数据模型为 VideoRecord,定义在 video_downloader/database/models.py 中,包含以下主要字段: (字段已调整,uid业务参数已从外部访问删除,url增加jwt加密)

字段类型描述
titlestr清洗后的视频标题
video_datestr从标题中提取的视频日期(通常是年份)
coverstr封面图片的 URL
urlstrm3u8 视频流的 URL
descriptionstrAPI 返回的原始描述信息
uidstr视频的唯一标识符 (UID)
downloadbool下载状态 (True 表示已下载)
is_primerbool是否为付费内容的标记

🤝 贡献指南

欢迎对本项目做出贡献!如果您有任何改进建议或功能需求,请随时提交 Issue 或 Pull Request。

  1. Fork 本仓库。
  2. 创建您的特性分支 (git checkout -b feature/AmazingFeature)。
  3. 提交您的更改 (git commit -m 'Add some AmazingFeature')。
  4. 将您的分支推送到远程仓库 (git push origin feature/AmazingFeature)。
  5. 创建一个新的 Pull Request。

📄 许可证

本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。

联系方式

📮邮箱:m3u8DownloaderForMmf@hotmail.com


免责声明: 本工具仅供学习和技术交流,请勿用于任何非法用途。使用者应自行承担因使用本工具而产生的所有风险和责任。请尊重版权,仅下载您有权访问的内容。