根据 Emby 用户活动自动调整 qBittorrent 上传限速。
- 检测 Emby 用户活动(默认 60 秒内有操作视为活跃)
- 有用户活跃时自动限速 qBittorrent 上传(默认 1MB/s)
- 无用户活跃时解除限速(全速上传)
- Docker 部署,开箱即用
┌─────────┐ 轮询 Sessions API ┌──────────────────┐ API ┌─────────────┐
│ Emby │ ←─────────────────→ │ Python 服务 │ ────→ │ qBittorrent │
│ :8096 │ 检查 LastActivity │ (FastAPI) │ │ :18080 │
└─────────┘ └──────────────────┘ └─────────────┘
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 -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:latestcurl http://localhost:9000/status| 环境变量 | 说明 | 默认值 |
|---|---|---|
EMBY_URL |
Emby 服务器地址 | http://localhost:8096 |
EMBY_API_KEY |
Emby API 密钥 | - |
QB_URL |
qBittorrent Web UI 地址 | http://localhost:18080 |
QB_USERNAME |
qBittorrent 用户名 | admin |
QB_PASSWORD |
qBittorrent 密码 | - |
UPLOAD_LIMIT |
限速值,支持 KB/MB/GB 单位 | 1MB |
POLL_INTERVAL |
轮询间隔(秒) | 5 |
ACTIVITY_WINDOW |
活动检测窗口(秒) | 60 |
WEBHOOK_PORT |
服务监听端口 | 9000 |
UPLOAD_LIMIT 支持多种格式(大小写不敏感):
| 格式 | 等效值 |
|---|---|
1MB 或 1mb 或 1M 或 1m |
1048576 bytes |
512KB 或 512kb 或 512K |
524288 bytes |
1.5GB 或 1.5G |
1610612736 bytes |
1048576 |
1048576 bytes (纯数字=bytes) |
| 接口 | 方法 | 说明 |
|---|---|---|
/status |
GET | 获取当前状态(活跃用户、限速状态等) |
/check |
POST | 手动检查并更新限速状态 |
/health |
GET | 健康检查 |
{
"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 管理后台
- 设置 → Expert → Advanced → Security
- 点击 Add 创建新的 API Key
推荐使用 network_mode: host,这样容器可以直接访问本地的 Emby 和 qBittorrent 服务。
如果服务器配置了 Docker 代理,可能导致容器内无法访问本地服务。解决方案:
# 清除 Docker 代理配置
echo '{}' > ~/.docker/config.json确保 qBittorrent 已开启 Web UI 功能,并且允许从本地访问。
服务启动...
配置: 轮询间隔=5秒, 活动窗口=60秒
qBittorrent 登录成功
检测到活跃用户: user1,启用限速 1MB/s
无活跃用户,解除限速
MIT