Skip to content

yl948/ytbot

Repository files navigation

YTBot - Telegram YouTube 下载机器人

一个功能强大的Telegram机器人,可以下载YouTube视频,支持多种分辨率选择、自动下载和队列管理。

功能特色

  • 🎬 支持YouTube视频和Shorts下载
  • 🎯 手动选择视频质量
  • ⚙️ 自动下载指定分辨率(当设置默认分辨率时)
  • 📊 下载进度实时显示
  • 📁 自动归类保存视频文件
  • 🖼️ 自动下载视频缩略图
  • 📝 自动生成NFO元数据文件(兼容Emby/Plex)
  • 🔄 并发下载管理
  • 🔄 自动重试机制

使用Docker(推荐)

使用预构建镜像

# 使用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

创建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"

你可以选择使用预构建镜像或本地构建:

  1. 使用预构建镜像,将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
  • 网络连接

安装步骤

  1. 克隆仓库
git clone https://github.com/yl948/ytbot.git
cd ytbot
  1. 安装依赖
pip install -r requirements.txt
  1. 创建配置文件
# 创建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
  1. 启动机器人
python bot.py

使用方法

基本命令

在Telegram中与机器人交互:

  • /start - 启动机器人
  • /help - 显示帮助信息
  • /status - 查看机器人状态
  • /toggle_quality - 切换质量选择模式
  • /resolution - 设置默认分辨率
  • /queue - 查看下载队列
  • /concurrent - 设置并发下载数量

下载视频

  1. 发送YouTube链接给机器人
  2. 如启用了手动选择质量,点击选择所需分辨率
  3. 如已设置默认分辨率,机器人会自动下载指定分辨率的视频
  4. 等待下载完成

设置默认分辨率

  1. 发送 /resolution 命令
  2. 从列表中选择想要的默认分辨率
  3. 选择后,发送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构建(推荐)

本项目配置了GitHub Actions工作流,可以构建多架构Docker镜像:

  1. Fork本仓库到您的GitHub账号
  2. 在仓库设置中添加DockerHub密钥:
    • 访问 Settings > Secrets and variables > Actions
    • 添加 DOCKERHUB_USERNAME: 您的Docker Hub用户名
    • 添加 DOCKERHUB_TOKEN: Docker Hub访问令牌
  3. 手动触发构建:
    • 访问仓库的 Actions 标签页
    • 选择 Docker Build and Push 工作流
    • 点击 Run workflow 按钮
    • 输入版本号(例如:1.0.0, 1.1.0)
    • 选择是否同时发布为latest标签
    • 点击 Run workflow 开始构建
  4. 构建完成后,镜像将发布到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 .

许可证

MIT

About

Telegram YouTube下载机器人,支持视频质量选择与自动下载

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published