一个功能强大的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 .