一个功能强大的Telegram机器人,可以下载YouTube视频,支持多种分辨率选择、自动下载和队列管理。
- 🎬 支持YouTube视频和Shorts下载
- 🎯 手动选择视频质量
- ⚙️ 自动下载指定分辨率(当设置默认分辨率时)
- 📊 下载进度实时显示
- 📁 自动归类保存视频文件
- 🖼️ 自动下载视频缩略图
- 📝 自动生成NFO元数据文件(兼容Emby/Plex)
- 🔄 并发下载管理
- 🔄 自动重试机制
# 使用docker命令运行
docker run -d \
--name ytbot \
--restart unless-stopped \
-v $(pwd)/downloads:/app/downloads \
-e BOT_TOKEN=你的Telegram机器人Token \
-e ADMIN_USER_ID=你的Telegram用户ID \
-e DOWNLOAD_PATH=/app/downloads \
ainxxy/ytbot:latest中国用户可能需要添加代理设置:
# 添加代理设置
-e HTTP_PROXY=http://host.docker.internal:7890 \
-e HTTPS_PROXY=http://host.docker.internal:7890 \创建docker-compose.yml文件并添加以下内容:
services:
ytbot:
build:
context: .
dockerfile: Dockerfile
container_name: ytbot
restart: unless-stopped
environment:
- BOT_TOKEN=你的Telegram机器人Token
- ADMIN_USER_ID=你的Telegram用户ID
- DOWNLOAD_PATH=/app/downloads
# 如果需要代理,取消下面两行的注释并填入代理地址
# - HTTP_PROXY=http://host.docker.internal:7890
# - HTTPS_PROXY=http://host.docker.internal:7890
volumes:
- ./downloads:/app/downloads
network_mode: "host"你可以选择使用预构建镜像或本地构建:
- 使用预构建镜像,将
build部分替换为:
image: ainxxy/ytbot:latest
# 或者指定架构
# image: ainxxy/ytbot:latest-amd64
# image: ainxxy/ytbot:latest-arm64然后启动容器:
docker-compose up -d# 查看日志
docker logs ytbot
# 实时跟踪日志
docker logs -f ytbot
# 检查容器状态
docker ps | grep ytbot- Python 3.7+
- FFmpeg
- 网络连接
- 克隆仓库
git clone https://github.com/yl948/ytbot.git
cd ytbot- 安装依赖
pip install -r requirements.txt- 创建配置文件
# 创建config.py文件
cat > config.py << EOF
BOT_TOKEN = "你的Telegram机器人Token"
ADMIN_USER_ID = "你的Telegram用户ID"
DOWNLOAD_PATH = "./downloads"
# 如果需要代理,取消下面两行的注释并填入代理地址
# HTTP_PROXY = "http://proxy:port"
# HTTPS_PROXY = "http://proxy:port"
EOF- 启动机器人
python bot.py在Telegram中与机器人交互:
/start- 启动机器人/help- 显示帮助信息/status- 查看机器人状态/toggle_quality- 切换质量选择模式/resolution- 设置默认分辨率/queue- 查看下载队列/concurrent- 设置并发下载数量
- 发送YouTube链接给机器人
- 如启用了手动选择质量,点击选择所需分辨率
- 如已设置默认分辨率,机器人会自动下载指定分辨率的视频
- 等待下载完成
- 发送
/resolution命令 - 从列表中选择想要的默认分辨率
- 选择后,发送YouTube链接时会自动下载该分辨率(如果可用)
- 该机器人默认仅允许管理员使用
- 下载的视频会自动保存在配置的下载目录中
- 支持的链接格式: youtube.com, youtu.be
- 在中国使用时,通常需要配置代理
默认配置使用network_mode: "host",这在Linux环境下效果最好,特别是需要使用宿主机代理的情况。
如果遇到网络连接问题,可以尝试使用桥接网络模式:
services:
ytbot:
# 删除 network_mode: "host" 行
# 添加以下配置
network_mode: "bridge"
# 如果需要使用宿主机代理,可以使用host.docker.internal
environment:
# ...其他环境变量
- HTTP_PROXY=http://host.docker.internal:7890
- HTTPS_PROXY=http://host.docker.internal:7890本项目配置了GitHub Actions工作流,可以构建多架构Docker镜像:
- Fork本仓库到您的GitHub账号
- 在仓库设置中添加DockerHub密钥:
- 访问
Settings > Secrets and variables > Actions - 添加
DOCKERHUB_USERNAME: 您的Docker Hub用户名 - 添加
DOCKERHUB_TOKEN: Docker Hub访问令牌
- 访问
- 手动触发构建:
- 访问仓库的
Actions标签页 - 选择
Docker Build and Push工作流 - 点击
Run workflow按钮 - 输入版本号(例如:1.0.0, 1.1.0)
- 选择是否同时发布为latest标签
- 点击
Run workflow开始构建
- 访问仓库的
- 构建完成后,镜像将发布到Docker Hub:
- 指定版本:
ainxxy/ytbot:1.0.0 - latest标签:
ainxxy/ytbot:latest
- 指定版本:
如果您想在本地构建Docker镜像,可以使用以下命令:
# 构建多架构镜像(需要设置Docker Buildx)
docker buildx build --platform linux/amd64,linux/arm64 -t ainxxy/ytbot:1.0.0 .
# 仅构建当前平台镜像
docker build -t ainxxy/ytbot:1.0.0 .