Sign inSign up

bgcol/emby-qb-limiter

By bgcol

•Updated 10 months ago

根据 Emby 用户活动自动调整 qBittorrent 上传限速

Image
0

1.6K

bgcol/emby-qb-limiter repository overview

⁠Emby-QB Limiter

Docker Hub

根据 Emby 用户活动自动调整 qBittorrent 上传限速。

⁠功能

  • 检测 Emby 用户活动(默认 60 秒内有操作视为活跃)
  • 有用户活跃时自动限速 qBittorrent 上传(默认 1MB/s)
  • 无用户活跃时解除限速(全速上传)
  • Docker 部署,开箱即用

⁠原理

┌─────────┐  轮询 Sessions API  ┌──────────────────┐  API   ┌─────────────┐
│  Emby   │ ←─────────────────→ │  Python 服务      │ ────→ │ qBittorrent │
│ :8096   │   检查 LastActivity  │  (FastAPI)       │       │   :18080    │
└─────────┘                     └──────────────────┘       └─────────────┘

⁠快速开始

⁠使用 Docker Compose(推荐)
version: '2.4'

services:
  emby-qb-limiter:
    image: bgcol/emby-qb-limiter:latest
    container_name: emby-qb-limiter
    restart: always
    network_mode: host
    environment:
      # Emby 配置
      - EMBY_URL=http://localhost:8096
      - EMBY_API_KEY=你的API密钥
      # qBittorrent 配置
      - QB_URL=http://localhost:18080
      - QB_USERNAME=admin
      - QB_PASSWORD=你的密码
      # 限速配置,支持单位: KB/MB/GB
      - UPLOAD_LIMIT=1MB
      # 可选配置
      - POLL_INTERVAL=5       # 轮询间隔(秒)
      - ACTIVITY_WINDOW=60    # 活动窗口(秒)
⁠使用 Docker Run
docker run -d \
  --name emby-qb-limiter \
  --network host \
  --restart always \
  -e EMBY_URL=http://localhost:8096 \
  -e EMBY_API_KEY=你的API密钥 \
  -e QB_URL=http://localhost:18080 \
  -e QB_USERNAME=admin \
  -e QB_PASSWORD=你的密码 \
  -e UPLOAD_LIMIT=1MB \
  bgcol/emby-qb-limiter:latest
⁠查看状态
curl http://localhost:9000/status

⁠配置说明

环境变量说明默认值
EMBY_URLEmby 服务器地址http://localhost:8096⁠
EMBY_API_KEYEmby API 密钥-
QB_URLqBittorrent Web UI 地址http://localhost:18080⁠
QB_USERNAMEqBittorrent 用户名admin
QB_PASSWORDqBittorrent 密码-
UPLOAD_LIMIT限速值,支持 KB/MB/GB 单位1MB
POLL_INTERVAL轮询间隔(秒)5
ACTIVITY_WINDOW活动检测窗口(秒)60
WEBHOOK_PORT服务监听端口9000
⁠限速值格式

UPLOAD_LIMIT 支持多种格式(大小写不敏感):

格式等效值
1MB 或 1mb 或 1M 或 1m1048576 bytes
512KB 或 512kb 或 512K524288 bytes
1.5GB 或 1.5G1610612736 bytes
10485761048576 bytes (纯数字=bytes)

⁠API 接口

接口方法说明
/statusGET获取当前状态(活跃用户、限速状态等)
/checkPOST手动检查并更新限速状态
/healthGET健康检查
⁠/status 响应示例
{
  "has_recent_activity": true,
  "active_users": ["user1"],
  "activity_window_seconds": 60,
  "poll_interval_seconds": 5,
  "qb_upload_limit_bytes": 1048576,
  "qb_upload_limit_mbps": "1.00",
  "limit_enabled": true,
  "configured_limit_bytes": 1048576
}

⁠获取 Emby API Key

  1. 登录 Emby 管理后台
  2. 设置 → Expert → Advanced → Security
  3. 点击 Add 创建新的 API Key

⁠注意事项

⁠网络模式

推荐使用 network_mode: host,这样容器可以直接访问本地的 Emby 和 qBittorrent 服务。

⁠Docker 代理问题

如果服务器配置了 Docker 代理,可能导致容器内无法访问本地服务。解决方案:

# 清除 Docker 代理配置
echo '{}' > ~/.docker/config.json
⁠qBittorrent Web UI

确保 qBittorrent 已开启 Web UI 功能,并且允许从本地访问。

⁠日志示例

服务启动...
配置: 轮询间隔=5秒, 活动窗口=60秒
qBittorrent 登录成功
检测到活跃用户: user1,启用限速 1MB/s
无活跃用户,解除限速

⁠许可证

MIT

Tag summary

Content type

Image

Digest

sha256:2adf1dab6…

Size

56.5 MB

Last updated

10 months ago

docker pull bgcol/emby-qb-limiter