Nzbthrottle was designed in order to dynamically control the bandwidth allocation when users are actively streaming from Plex to avoid unnecessary buffering while still allowing the user to download at the fastest rate possible.
Note: Must have Python 3.5 or higher
- Run
pip install -r requirements.txt
from within the project root - Copy
config_example.json
and name the new fileconfig.json
- Edit the config with all of your appropriate credentials
Sample Config:
{
"plex":
{
"url":"http://localhost:32400",
"interval":60,
"token": "daf32j3ik3l2k"
},
"nzbget":
{
"username":"test_user",
"password":"test_pass",
"url":"http://localhost:6789",
"speeds":{
"1":5000,
"2":4000,
"3":3000,
"4":2000,
"5":1000
},
"max_speed":80000
},"notifications": {
"Discord": {
"enabled": false ,
"url": "discord://webhook_id/webhook_token"
},
"Rocket.Chat": {
"enabled": false,
"url": "rocket://user:password@hostname/RoomID/Channel"
},
"Slack": {
"enabled": false,
"url": "slack://TokenA/TokenB/TokenC/Channel"
},
"Telegram": {
"enabled": false,
"url": "tgram://bottoken/ChatID"
},
"IFTTT": {
"enabled": false,
"url": "ifttt://webhooksID/EventToTrigger"
},
"PushBullet":{
"enabled": false,
"url": "pbul://accesstoken"
},
"Growl": {
"enabled": false,
"url": "growl://hostname"
}
}
}
Plex
url
- URL of your Plex Server
interval
- Interval with which to check for active streams (seconds)
token
- Your X-Plex-Token
Nzbget
username
- Username for Nzbget
password
- Password for Nzbget
url
- URL of your NZBGet Client
speeds
- Define speed to throttle to (in kB/s) based on number of active streams
max_speed
- Define maximum speed when the throttle is lifted (in kB/s). Set to 0 if you wish to not use a limit
Notifications
enabled
- Whether or not you wish to enable notifications via the selected service
url
- URL for the service you wish to enable (see https://github.com/caronc/apprise for formatting options of the URL)
python throttle.py [-h] [--log-level=['DEBUG','INFO','WARN']]
If you do not wish to run the script manually, the module can be daemonized by copying the service file and running the script as a service. May need to modify location of script based on your preference by changing the following line in 'nzbthrottle.service'
ExecStart=/usr/bin/python3 /opt/nzbthrottle/throttle.py
docker run --name nzbthrottle -d -v /PATH/TO/CONFIG.json:/nzbthrottle/config.json daghaian/nzbthrottle
Hey dude! Help me out for a couple of 🍻!